PHP, MySql a diakritika
Napsal: 12 dub 2011 09:45
Zdravím všechny, řeším zvláštní problém a nevím, co s tím.
Mám záznamy v DB, kódování pro připojení k MySql je nastaveno na utf8_general_ci, porovnávání tabulky mám nastaveno na utf8_czech_ci, PHP a HTML stránky jsou nastaveny na utf-8 (PSPad).
A teď samotný problém:
V databázi mám uložený adresář kontaktů (cca 6800), ve sloupcích jsou jak číselné hodnoty (např. telefon), tak i textové. Jedná se mi hlavně o sloupeček "Celé jméno", které začíná příjmením a pokračuje jménem. Při seřazení podle sloupce "Celé jméno" v phpmyadmin se záznamy seřadí správně dle abecedy (AÁBCČDĎ... atd), ale jakmile v PHP vyberu záznamy pomocí sql dotazu, a následně je procházím pomocí mysql_fetch_array, tak se záznamy seřadí tak, že veškeré jména, co začínají diakritikou, jsou na konci po Z, ale jsou seřazeny dle posloupnosti v abecedě (ÁČŘŠŤŽ... atd).
Připojení k databázi:
MySql dotaz:
Zpracování v PHP:
Nevěděl by někdo co s tím? Já už jsem docela zoufalý.
Díkes
Mám záznamy v DB, kódování pro připojení k MySql je nastaveno na utf8_general_ci, porovnávání tabulky mám nastaveno na utf8_czech_ci, PHP a HTML stránky jsou nastaveny na utf-8 (PSPad).
A teď samotný problém:
V databázi mám uložený adresář kontaktů (cca 6800), ve sloupcích jsou jak číselné hodnoty (např. telefon), tak i textové. Jedná se mi hlavně o sloupeček "Celé jméno", které začíná příjmením a pokračuje jménem. Při seřazení podle sloupce "Celé jméno" v phpmyadmin se záznamy seřadí správně dle abecedy (AÁBCČDĎ... atd), ale jakmile v PHP vyberu záznamy pomocí sql dotazu, a následně je procházím pomocí mysql_fetch_array, tak se záznamy seřadí tak, že veškeré jména, co začínají diakritikou, jsou na konci po Z, ale jsou seřazeny dle posloupnosti v abecedě (ÁČŘŠŤŽ... atd).
Připojení k databázi:
Kód: Vybrat vše
mysql_connect($host, $user, $pwd) or die('CHYBA: Nemohu se spojit s MySQL serverem..');
mysql_select_db($db) or die('CHYBA: Nemohu se spojit s databází!');
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_results=utf8");
MySql dotaz:
Kód: Vybrat vše
$sql="SELECT * FROM adresar WHERE ulice LIKE 'Politických%' ORDER BY 'Celé jméno' ASC";
Zpracování v PHP:
Kód: Vybrat vše
$query=mysql_query($sql);
while($ds=mysql_fetch_array($query)) {
// Kod na zobrazeni polozek v tabulce
}
Nevěděl by někdo co s tím? Já už jsem docela zoufalý.

Díkes