Autor Zpráva
paulos etruska
Profil
Dobrý den,
dnes jsem použil svůj fungující skript na systém s databází v UTF8 kódováním a byl jsem mile překvapen, že nefunguje řazení (sql dotaz ORDER BY). U nejlepšího sloupce se z abecedního pořádku vymikají 2 údaje, u ostatních se nějaký pořádek nalézt nedá. Chyba bude určitě v kódování, protože sloupec s čísly se řadí bezchybně. Setkal se s tím už někdo?
nightfish
Profil
Chyba bude určitě v kódování, protože sloupec s čísly se řadí bezchybně. Setkal se s tím už někdo?
1) jakou verzi mySQL používáte?
2) ví mysql, v jakém kódování jsou data uložena?
3) máte u databáze/tabulky/sloupce/připojení k databázi správně nastavené porovnávání (collation)?
peta
Profil
paulos etruska
Kodovani je podporovano od verze MySQL 3.2x, mam pocit, cili nightfish bod 1, jakou verzi mas MySQL?

Kodovani sloupce je nastaveno s tabulce, a dalsi kodovani nastavujes pak prikazem SET NAMES (prikaz je podporovan verzi MySQL 3.2x+) a nebo u SELECTu prikazem COLLATE.
Pokud tam ukladas data jako win1250 do tabulky s kodovanim UTF8, pak zcela logicky pri ORDER seradi podle UTF8 a ze ty tam mas gulas ala win1250 je mu suma fuk.
Viz bod 2 a 3nightfish

A pak je tu problem serazovani podle cestiny, coz muze byt take velice zabavne.

Otevri si phpMYadmin a zobraz si strukturu tabulky. Zakladem je, aby sloupce meli spravne kodovani jako ma obsah v nic. Pak by melo stacit nastavit spravne SET NAMES a melo by to fungovat.

Mozna by bylo dobre uvest tez priklad vypisu a SQL dotazu. Co je tam otocene, ikdyz podle sql dotazu by byt nemelo. Vcetne zminene struktury tabulky a vsech dotazu, ktere resi kodovani (SET NAMES, CHARACTER SET, COLLATE)
paulos etruska
Profil
peta
Při připojování k databázi je nastaveno mysql_query('SET NAMES utf8') . Celá databáze je v kódování utf8_general_ci. To řazení funguje na zvláštním pricipu, například řadím-li podle názvu tak na první dvě místa přijde "SwapMagic3", potom "8MB pamäťová karta" a dále už to je podle abecedy. U řazení podle kategorie jsem žádnou souvislost nenašel: "Tlačiarne","PlayStation", "Programy", "Registračné pokladne", "Pre notebooky", atd. Možná by pomohlo použití COLLATE, ale řešení jsem zatím nenašel.
Kajman_
Profil *
Zkontrolujte, zda tam nemáte např. " SwapMagic3" a " 8MB pamäťová karta".
paulos etruska
Profil
Tak už jsem to vyřešil. Ten problém neměl s kódováním nic společného. Ve sloupci s názvy opravdu bylo " SwapMagic3". Ta mezera mě napadla, ale zkotroloval jsem jenom sloupec s kategoriemi, kde žádné nebyly. Tento sloupec jsem ale omylem neřadil podle názvu, ale podle id kategorie. Děkuji všem za pomoc.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0