Autor | Zpráva | ||
---|---|---|---|
8vm8 Profil |
#1 · Zasláno: 31. 8. 2012, 16:41:51
Ahoj, mám skript pro výpis dat z tabulky v databázi. Vše funguje až na to, že mi nefunguje diakritika. Namísto třeba "hlavní stránka" mi to vypíše "Hlavn� str�nka". Tady na fóru jsem se dočetl že by se mělo před sql dotaz napsat mysql_query("SET NAMES 'UTF8'");, ale stejně to nefunguje. Už jsem zkoušel i cp1250 ale pořád beze změny. V databázi používám UTF-8, při změně na CP1250 je výsledek pořád stejný. Dík za každou radu! Skript mám napsaný takto:
<?php include ("php/connect.php"); $objekt_vysledku=mysqli_query($db_spojeni, 'SELECT * FROM horni_panel'); mysql_query("SET NAMES 'UTF8'"); while ($odkaz = mysqli_fetch_array($objekt_vysledku)) { echo $odkaz['odkaz']; } include("php/disconnect.php"); ?> |
||
laijk Profil |
skús namiesto mysql_query("SET NAMES 'UTF8'");
napísať toto: mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET collation_connection='utf8_czech_ci'"); -mne to pomohlo, dúfam, že máš stránku aj údaje v DB kódované v UTF-8 |
||
8vm8 Profil |
#3 · Zasláno: 31. 8. 2012, 16:46:10 · Upravil/a: 8vm8
Právě že mám, zkusím to, dík.
Nefunguje to. Zkusil jsem i cp1250. |
||
Joker Profil |
#4 · Zasláno: 31. 8. 2012, 17:30:58
laijk:
> skús namiesto mysql_query("SET NAMES 'UTF8'"); > napísať toto: Ne, je to zbytečné. Příkaz SET NAMES nastaví vše co SET CHARACTER SET a také nastavuje collation_connection (implicitně na výchozí hodnotu daného kódování).
Čili dotaz SET NAMES 'utf8' COLLATE 'utf8_czech_ci' udělá to stejné jako ty tři dotazy.
8vm8: A v databázi jsou data uložena správně? Třeba při pohledu v phpMyAdminu (v kódování UTF-8)? Web má nastavené kódování UTF-8? |
||
abc Profil |
8vm8:
Ja bych to volal před mysql_query :
... mysql_query("SET NAMES 'UTF8'"); $objekt_vysledku=mysqli_query($db_spojeni, 'SELECT * FROM horni_panel'); ... Pozn: jednou tam máš mysql_query a jednou mysqli_query
|
||
8vm8 Profil |
Už jsem opravil to mysqli ale stejně to nefunguje, teď mi to dokonce píše error (Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\ComplexWebServer\http_docs\machyweb\index.php on line 15).
Kód teď vypadá takto: <?php include ("php/connect.php"); $objekt_vysledku=mysqli_query($db_spojeni, 'SELECT * FROM horni_panel'); mysqli_query("SET NAMES 'UTF-8'"); while ($odkaz = mysqli_fetch_array($objekt_vysledku)) { echo $odkaz['odkaz']; } include("php/disconnect.php"); ?> |
||
abc Profil |
#7 · Zasláno: 31. 8. 2012, 22:02:04
8vm8:
1) Jistě jsi si tu chybu přeložil a zjistil, že ta fce očekává 2 parametry, ale dáváš jí jen jeden... 2) jsi ty 2 volání neprohodil 3) mysqli_query($db_spojeni, "SET NAMES 'UTF-8'"); doporučuju volat už v souboru connect.php, budeš mít o starost míň
Správně to je takto: <?php include ("php/connect.php"); //nejprve SET NAMES mysqli_query($db_spojeni, "SET NAMES 'UTF-8'"); //potom další dotazy $objekt_vysledku=mysqli_query($db_spojeni, 'SELECT * FROM horni_panel'); while ($odkaz = mysqli_fetch_array($objekt_vysledku)) { echo $odkaz['odkaz']; } include("php/disconnect.php"); ?> |
||
8vm8 Profil |
Tak už jsem to opravil, správně i s diakritikou mě to funguje takto:
<?php include ("php/connect.php"); $objekt_vysledku=mysqli_query($db_spojeni, "SET NAMES 'utf8'"); //takhle se správně nastaví čeština $objekt_vysledku=mysqli_query($db_spojeni, 'SELECT * FROM horni_panel'); //a dále pokračuje práce s databází while ($odkaz = mysqli_fetch_array($objekt_vysledku)) { echo $odkaz['odkaz']; } include("php/disconnect.php"); ?> |
||
Časová prodleva: 12 let
|
0