PHP, MySql a diakritika Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

PreTox
Level 2
Level 2
Příspěvky: 151
Registrován: říjen 08
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

PHP, MySql a diakritika

Příspěvekod PreTox » 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:

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ý. :huh:
Díkes
MB: ASUS Striker II Formula, CPU: Intel Core™ 2 Duo 3,16GHz, CPU Cooler: Zalman CNPS8700 LED, RAM: 2x1GB Corsair Dominator 1066 MHz DDR II, GPU: ASUS ATI Radeon HD 5770 DDR3 1GB, HDD: WD CG 500GB SATA 300, HDD2: WD CG 2TB SATA 300, Zdroj: Corsair 650W

Reklama
Luboš
Tvůrce článků
Level 5
Level 5
Příspěvky: 2038
Registrován: květen 05
Pohlaví: Muž
Stav:
Offline

Re: PHP, MySql a diakritika

Příspěvekod Luboš » 12 dub 2011 11:50

Pomohl by příkaz

mysql_query("SET COLLATE=utf8_czech_ci"); ? - nevím, zda je to syntakticky správně, momentálně mám SQL odinstalované.
Potřebujete jinou pomoc při řešení problému ve Windows 10? Stáhněte si soubor Win10-finty.

General
nováček
Příspěvky: 49
Registrován: listopad 10
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP, MySql a diakritika

Příspěvekod General » 12 dub 2011 13:12

Místo těch šílenejch SQL dotazů character set (..) ti stačí:

Kód: Vybrat vše

mysql_set_charset('utf8');

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP, MySql a diakritika

Příspěvekod CZechBoY » 12 dub 2011 13:35

mě stačí SET NAMES 'utf8' a pohoda :-)
teď jsem to testnul a š je před u takže máš někde nějakou chybu
sloupec mám s kodováním utf8_czech_ci
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

PreTox
Level 2
Level 2
Příspěvky: 151
Registrován: říjen 08
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP, MySql a diakritika

Příspěvekod PreTox » 12 dub 2011 14:23

Luboš: Bohužel, nepomohlo.
General: To mám jenom teď, zkouším všechny možnosti, jinak mám jenom SET NAMES.
CZechBoY: Zvláštní, takhle to mám i já.

Kód: Vybrat vše

CREATE TABLE `dos`.`test` (
`Osobní číslo` INT( 9 ) NOT NULL ,
`Celé jméno` VARCHAR( 41 ) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL ,
`Adresa` TEXT CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL
);


a stejně to nefunguje, vypíše se to takhle:
► Zobrazit spoiler


Zaráží mě, že při seřazení v phpmyadmin (po kliknutí na název sloupce) se to seřadí v pohodě, ale když použiju sql dotaz, tak to udělá tohle.
MB: ASUS Striker II Formula, CPU: Intel Core™ 2 Duo 3,16GHz, CPU Cooler: Zalman CNPS8700 LED, RAM: 2x1GB Corsair Dominator 1066 MHz DDR II, GPU: ASUS ATI Radeon HD 5770 DDR3 1GB, HDD: WD CG 500GB SATA 300, HDD2: WD CG 2TB SATA 300, Zdroj: Corsair 650W

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP, MySql a diakritika  Vyřešeno

Příspěvekod CZechBoY » 12 dub 2011 14:35

tak ten SQL hoď do phpMyAdmina, pak zjistíš že to máš asi blbě ;-)
zkus dát `název sloupce`, ale stejně to nepomůže asi
pak zkus dát pryč ten LIKE, uvidíš co to udělá
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

PreTox
Level 2
Level 2
Příspěvky: 151
Registrován: říjen 08
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP, MySql a diakritika

Příspěvekod PreTox » 12 dub 2011 15:05

No to mě ...... Když jsem dal ` místo ', tak to už řadí správně.. :o Vysvětlí to někdo?
MB: ASUS Striker II Formula, CPU: Intel Core™ 2 Duo 3,16GHz, CPU Cooler: Zalman CNPS8700 LED, RAM: 2x1GB Corsair Dominator 1066 MHz DDR II, GPU: ASUS ATI Radeon HD 5770 DDR3 1GB, HDD: WD CG 500GB SATA 300, HDD2: WD CG 2TB SATA 300, Zdroj: Corsair 650W

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP, MySql a diakritika

Příspěvekod CZechBoY » 12 dub 2011 15:55

nevim, já používám apostrofy jen jako uvedení řetězce, ` tyhle šmejdy se většinou používaj na tabulky, případně databáze, dělá to tak phpMyAdmin
jinak nevim jakej je v tom rozdíl
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

PreTox
Level 2
Level 2
Příspěvky: 151
Registrován: říjen 08
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PHP, MySql a diakritika

Příspěvekod PreTox » 12 dub 2011 16:53

No, každopádně dík za radu, tohle by mě opravdu nenapadlo. :) Teď už to šlape jak má. ;) Vyřešeno.
MB: ASUS Striker II Formula, CPU: Intel Core™ 2 Duo 3,16GHz, CPU Cooler: Zalman CNPS8700 LED, RAM: 2x1GB Corsair Dominator 1066 MHz DDR II, GPU: ASUS ATI Radeon HD 5770 DDR3 1GB, HDD: WD CG 500GB SATA 300, HDD2: WD CG 2TB SATA 300, Zdroj: Corsair 650W


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů