Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Diakritika a MySQL

Čafte všetci. Mám taký problém. Nedávno som začal s PHP a MySQL, kúpil som si knižky, ktoré som z časti preštudoval, ale je od Larry Ullmana a tam sa nič nepíše o češtine a slovenčine v databazach. Vytvoril som si databazu, ktoru som naplnil udajmi, ktore obsahovali slovenské charaktery (ktore by bolo vhodné kódovať Win-1250, aspon ja tak kodujem svoje stranky). Problem nastal, ked som si tie udaje vyziadal do HTML pomocou PHP query. namiesto normálnych slovenských diakritických znakov mi to vypisuje háky-báky. Čo s tým? Ako na riešenie problému?

Za každú pomoc by som bol rád. Ďakujem.:-[

Předmět Autor Datum
Záleží na verzi databáze, jak máš nastavenou hlavičku stránky, v jakém kódování ukládáš do DB, atd..…
host 05.07.2006 09:22
host
dakujem, skusim:-)
2laak 05.07.2006 09:36
2laak
bohuzial to nefunguje, vlozil som tam kod: <?php $dbc = mysql_connect('xxx', 'xxx', 'xxx'); mysql_q…
2laaak 05.07.2006 09:54
2laaak
u 4.1 výše by ten dotaz měl vypadat takto: mysql_query("SET NAMES cp1250"); ale popravdě, jak se t…
Net_Force 05.07.2006 20:23
Net_Force
Tak a naposledy: Vsetky rady mi pomohli, dakujem. problem som vyriesil kombinaciou vsetkych. takze k…
2laak 09.07.2006 06:13
2laak
Mnohem lepší by bylo, kdybys své zkušenosti shrnul zde - uživatelům s podobnými problémy to ušetří č…
Jan Fiala 09.07.2006 06:54
Jan Fiala
Zhrnutie a konecne riesenie Vytvorte si subor napr. index.php s tymto obsahom(samozrejme na zaciato…
2laak 26.07.2006 14:36
2laak
doufam, ze nevadi, ze to davam sem mam php skripty a xml soubory v utf8 db je asi v utf8, porovnani…
foltyn 01.12.2006 22:35
foltyn
ak by si sa ozval na moj ICQ alebo MSN alebo email, mohol by som sa pokusit ti pomoc. ICQ: 216-700-…
2laak 02.12.2006 07:34
2laak
ďakujem veľmi pekne, dosť mi to pomohlo :D
schussdefekt 07.04.2010 02:18
schussdefekt
To som rad, ze pomohlo, ale preto ozivit 4 roky mrtvy thread :-)
2laak 07.04.2010 09:09
2laak
Aj mne to pomohlo - po dvoch ďalších rokoch - vysporiadať sa s diakritikou v databáze. Vďaka!
bianca 30.04.2012 16:42
bianca
velmi pekne dakujem dobre pomohlo :) poslední
vdaka 29.05.2012 22:52
vdaka

Záleží na verzi databáze, jak máš nastavenou hlavičku stránky, v jakém kódování ukládáš do DB, atd...

Zkus ale toto:

mysql_connect(...);
mysql_query("SET CHARACTER SET windows-1250");
mysql_query("SET NAMES windows-1250");
mysql_select_db(...);

bohuzial to nefunguje, vlozil som tam kod:

<?php
$dbc = mysql_connect('xxx', 'xxx', 'xxx');
mysql_query("SET CHARACTER SET windows-1250");
mysql_query("SET NAMES windows-1250");
mysql_select_db('dprdatabase');
?>

,

ale stale mi to vracia nezmyselne haky-baky, udaje som do DB vkladal cez mysql monitor, ked to selectnem v monitore, tam to zobrazuje OK. len ked to vypytam s PHP do prehliadaca, uz to nezobrazi ok. pytal si sa na verziu DB, tak neviem ci to pomoze, ci to tam je, v monitore som zadal prikaz status a vyslo toto:
mysql.exe version 11.18 distrib 3.23.56, for Win95/98 (i32)
server version 3.23.56 max-debug
client charakterset: latin-1
server charakterset: latin-1

potom som skusal v tvojom skripte zamenit obe windows-1250 za latin-1, ale ani tak nic, co s tym? moc to potrebujem.:!::!::!:dakujem

Tak a naposledy:
Vsetky rady mi pomohli, dakujem. problem som vyriesil kombinaciou vsetkych. takze keby bol niekto komu to bude tiez robit problemy a nebude si vediet dat rady, nech skusi u mna, mozno to spolu vyriesime a odplatim laskavost.:-D
2laak@post.sk alebo ICQ: 221-761-301;-)

Zhrnutie a konecne riesenie

Vytvorte si subor napr. index.php s tymto obsahom(samozrejme na zaciatok treba tagy html,head, body a taktiez aj na koniec):

<?php
mysql_connect('server', 'meno', 'heslo');//prihlasovacie udaje pre mysql spojenie
mysql_query("SET NAMES cp1250");/*tento riadok zabezpeci, ze sa udaje budu nacitavat/zobrazovat v spravnom kodovani (win-1250) preto je najdolezitejsim riadkom*/
mysql_select_db('menodatabazy');
$poziadavka = "select title, content from menotabulky;"; /* zostavime SQL poziadavku, kde title a content su nazvy stlpcov v tabulke*/
$result = mysql_query($poziadavka);//poziadame o vykonanie SQL prikazu
if ($result) { //ak sa prikaz uspesne prevedie, zacne postupne vypisovat vsetky zodpovedajuce riadky
while($udaj = mysql_fetch_array($result, MYSQL_NUM)) { echo "<strong>$udaj[0]</strong><br/>$udaj[1]"; } }
else { echo 'Záznam nie je možné zobrazit!'; }/*chybove hlasenie, ak nie je mozne vycitat udaje z databazy*/
?>

Tento kod by vam mal vypisat vsetky udaje z danej tabulky z 2 stlpcov title a content a to v spravnom kodovani, ale k tomu musite udaje do databazy zapisovat v spravnom kodovani. Ja som na to pouzil phpmyadmin verziu 2.8 kde si nastavite pre databazu aj pre kazdy jeden riadok zvlast "porovnavanie" na cp1250_bin a malo by to fungovat. tato funkcia porovnavania chybala v starsich verziach myslim ze v 2.5 a nizsie, v tomto pripade nepoznam riesenie v phpmyadmin-e, azda by bolo mozne v phpmyadmin-e zostavit SQL prikaz, ktory by zabezpecil update tabulky a riadkov do spravneho kodovania, ale s tym som neexperimentoval.

Dufam, ze bolo toto konecne riesenie naozaj konecne a dost vystizne. Keby mal niekto problemy s PHP ci MySQL(predovsetkym uplni zaciatocnici bez skusenosti) kludne ma kontaktujte najlepsie cez ICQ alebo mejl.

programovaniu zdar!:-):-):-):-)

doufam, ze nevadi, ze to davam sem

mam php skripty a xml soubory v utf8
db je asi v utf8, porovnani latin1_swedish_ci a stranky, ktery ty data ctou windows-1250

ve skriptech mam mysql_query("SET NAMES 'utf8'"); a funguje vse krome č ř ě ň (mozna jeste dalsi), nefunguje s nima porovnani a vlozi se jako ?
vyzkousel jsem vsechno mozny a nic nefunguje, u me ve skriptech ani v phpmyadminovi

pritom stranky ty znaky ukladaji a zobrazuji normalne, no nevim jestli normalne - ø(ř) è(č)

zatim to resim pres str_replace

dik za kazdou radu

Zpět do poradny Odpovědět na původní otázku Nahoru