

Čeština s háčkama a PHP + MySQL
Ahoj, vyrábím jeden web na zakázku a mám problém s mysql a vlastně i php. Odkazem přes metodu GET posílám něco takového:
sortabc.php?letter=Ř
Vznikne adresa sortabc.php?letter=%C5%A4. Když napíšu echo $_GET['letter'];, vyjde z toho Ř, ale v mysql se podle příkazu
SELECT * FROM `reviewdvd` WHERE name REGEXP '^[$letter]' ORDER by id DESC LIMIT $minlimit , $maxlimit
vytřídí písmeno Č, takhle to funguje i u ostatních. Ještě mě napadlo třídit pomocí "name like ('$letter%')", což je ale pomalejší než REGEXP a v DB bude okolo 8000 záznamů tak aby to nedopadlo jako tady na poradně, kde se vyhledává od 10 do 20 vteřin(nic proti, v DB poradny je toho fakt dost)
Takto mám udělané dělení podle abecedy. Vyzkouším to name like ..., ozvu se
Kodování stránek: UTF-8
Díky za odpovědi
Pri spojení s MySQL musíš MySQL serveru (najlepšie hneď po otvorení spojenia) povedať, že mu posielaš dopyty v UTF-8 (viď dokumentácia):
Edit: Vstup od používateľa musíš ošetriť pomocou funkcie mysql_real_escape_string.
Edit2: Keď to chceš používať na triedenie podľa abecedy, tak je lepšie na to vyhradiť jeden samostatný stĺpec, nad ktorým bude index (regulárny výraz alebo like bude pomalé, hoci pri 8000 záznamoch by to nemalo byť nič tragické).
Ale ten uživatel už tam má namláceno 1800 záznamů, takže přidání indexu by bylo zdlouhavé. To set names 'utf8' jsem dal do souboru db.php, ale výsledek je stejný.
Tady to je:
sort2abc.php
Ono to vypíše i písmeno D, což nechci
Pri použití LIKE sa použije porovnávanie, ktoré máš definované pre tú tabuľku, takže to môže ignorovať diakritiku. Keď definuješ porovnávanie (collation) priamo v dopyte, tak by to malo fungovať:
Pridanie indexu by pozostávalo z pridania stĺpca typu char s porovnávaním utf8_bin, vytvorenia indexu a vykonania update, aby sa tam vložilo prvé písmeno z toho slova.
No teda losi, klaním se před tebou. COLLATE utf8_bin zabralo. R3SP3CT!