Autor | Zpráva | ||
---|---|---|---|
paulos etruska Profil |
#1 · Zasláno: 2. 4. 2008, 23:44:13
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 |
#2 · Zasláno: 3. 4. 2008, 08:29:16
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 |
#3 · Zasláno: 3. 4. 2008, 09:21:06
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 |
#4 · Zasláno: 3. 4. 2008, 16:54:36
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 * |
#5 · Zasláno: 3. 4. 2008, 23:00:28
Zkontrolujte, zda tam nemáte např. " SwapMagic3" a " 8MB pamäťová karta".
|
||
paulos etruska Profil |
#6 · Zasláno: 5. 4. 2008, 09:06:57
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.
|
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0