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.:-[

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Zhrnutie a konecne riesenie Vytvorte si subor napr. index.php s tymto obsahom(samozrejme na zaciato… nový
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… nový
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-… nový
2laak 02.12.2006 07:34
2laak
ďakujem veľmi pekne, dosť mi to pomohlo :D nový
schussdefekt 07.04.2010 02:18
schussdefekt
To som rad, ze pomohlo, ale preto ozivit 4 roky mrtvy thread :-) nový
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! nový
bianca 30.04.2012 16:42
bianca
velmi pekne dakujem dobre pomohlo :) poslední
vdaka 29.05.2012 22:52
vdaka

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