Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP, MySQL: Kirjaimet ä ja ö eivät toimi

mamipi [18.09.2013 17:24:50]

#

Moro,

Innoistuin opettelee php ja tietokanta ohjelmointia, mutta yks ongelma tuli eteen.. Tein tämän https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=php_12 ohjeiden mukaan, mutta kyseinen koodin pätkä toimi mutta ei tulosta kirjaimia ä ja ö:tä. Tietokantaan kylläkin syöttää mutta ei tulosta webbi sivulle ollenkaa kyseiseen kenttään jos se sisältää näitä kirjaimia.

Ja kysymys kuuluuki että mitä teen toisin? vai onko phpMyAdminissa joku väärin..

Metabolix [18.09.2013 17:28:18]

#

Kokeilepa noudattaa ohjeita merkistön valintaan. Kannattaa lukea koko kyseinen opas sekä myös opassarjan viimeinen osa saman tien huolella.

Jos noilla eväillä ei ongelma ratkea, kerro ongelmasta tarkemmin: miten olet luonut taulun, millainen PHP-koodisi on, oletko asettanut missään mitään merkistöjä, mitä tarkalleen syötät tietokantaan ja mitä sivulla näkyy.

(Jatkossa yritä myös otsikoida kysymykset kunnolla ja lähettää ne oikealle alueelle.)

mamipi [20.09.2013 02:36:10]

#

En saanu vieläkää toimimaan, eli kertokaas et mikäs mättää?? otin kaikki utf8 liittyvät pois koodista.. PhpMyAdminiin muokkasin utf8_general_ci


tarhoukset.php

<?php include("ylapalkki.php"); ?>


<br>
<h2>
	<p align="center">
	Tarjoukset
	</p>
</h2>

  <p align="center"><a href="uusitarjous.html">Tee uusi tarjous</a></p>

<?php
include("yhteys.php");

$sql = "SELECT asiakas, aika, kohde, hinta
        FROM tarjoukset
        ORDER BY aika DESC";


$kysely = $yhteys->prepare($sql);
$kysely->execute();

while ($rivi = $kysely->fetch()) {
    $asiakas = htmlspecialchars($rivi["asiakas"]);
    $aika = $rivi["aika"];
    $kohde = htmlspecialchars($rivi["kohde"]);
    $hinta = htmlspecialchars($rivi["hinta"]);
    $hinta = nl2br($hinta);
    echo "<hr>";
    echo "<p><b>Asiakas:</b> {$asiakas}</p>";
    echo "<p><b>Aika:</b> {$aika}</p>";
    echo "<p><b>Kohde:</b> <br> {$kohde}</p>";
    echo "<p><b>Hinta:</b> <br> {$hinta}</p>";


}

	include("alapalkki.php");
?>
  </body>
</html>

Uusitarjous.html

<!DOCTYPE html>
<html>
  <head>
    <title>Tee uusi tarjous</title>
  </head>
  <body>

  <h3>
  <p align="center">
  Uusi tarjous
  </p>
  </h3>

    <form action="uusitarjous.php" method="post" >

      <p>Asiakas: <br> <input type="text" name="asiakas"></p>
      <p>Hinta: <br> <input type="text" name="hinta"></p>
      <p>Kohde: <br>

      <select name="kohde"></p>
		<option value="Haakuvaus"> Hääkuvaus
		<option value="Lapsikuvaus"> Lapsikuvaus
		<option value="Tuotekuvaus"> Tuotekuvaus
      </select>
      <p><input type="submit" value="Tee tarjous"></p>
    </form>
  </body>
</html>

Uusitarjous.php

<?php

include("yhteys.php");

$asiakas = $_POST["asiakas"];
$hinta = $_POST["hinta"];
$kohde = $_POST["kohde"];

$sql = "INSERT INTO tarjoukset (asiakas, aika, hinta, kohde)
        VALUES (?, NOW(), ?, ?)";


$kysely = $yhteys->prepare($sql);
$kysely->execute(array($asiakas, $hinta, $kohde));

header("Location: tarjoukset.php");
?>

samip [20.09.2013 15:37:40]

#

HTML <head>:in sisään

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Luot PDO-objektin näin:

new PDO("mysql:host=127.0.0.1;dbname=kanta;charset=utf8", "tunnus", "salasana", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

timoh [20.09.2013 16:25:06]

#

Linkkaamasi ohjeen mukaan jos olet tehnyt, niin käytössä on latin1-koodaus. Se ei sovi yhteen htmlspecialchars-funktion kanssa koska et ole tälle määrittänyt merkistökoodausta (epäkelvot merkit häviää) ja se oletuksena käyttää uft-8:aa.

Fixaa tulostukset kuntoon htmlspecialchars-funktion osalta niin homma on sillä selvä.

Metabolix [20.09.2013 16:41:44]

#

Yleensä nykyään on kuitenkin viisainta käyttää UTF-8-enkoodausta. Ohjeita tähän on linkittämässäni oppaan osassa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta