Stránka: 1 z 1
| [ Príspevkov: 25 ] | |
Autor | Správa |
---|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Viete mi niekto poradiť s týmto? Mám v tabulke v jednom stlpci určité slová, ktoré chcem aby boli správne abecedne zoradené. Všetko je ok, ale ž, š, a možno by sa našli aj iné písmená, mi zaradí zle. Napríklad slovo na ž zaradí medzi slova na a. Najprv som myslel, ze treba nejak spravne napisat prikaz SELECT ale potom som zistil, ze uz v MY ADMIN-ovi je to zoradene takto zle.
Kodovanie mam v PHP ADMIN-ovi nastavene sk-win1250 a tak tam mam vsetko vkladane.
Kde moze byt chyba?
|
|
|
NO neviem to zapisat ale na niakom tomto principe:
Pre tadabazu musis dat kod ktory si mysli že ž = z ...
|
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
No neviem, velmi sa mi to nezda... Keby som aj vedel ako to urobiť, potom by to bral vsetko ako z, a zase by to mohlo byt v ramci toho "z" poprehadzovane podla druheho pismena nie?
Myslel som skor, ze by to mala byt vec nejakého nastavenia tej databázy (MYSQL), ktoru by mohol urobit prevadzkovatel servera.
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Nastav zotriedenie na slovenskú verziu, tj. ak máš veci v DB uložené v kódovaní na UTF-8, tak zotriedenie nastav na UTF-8_slovak_ci.
EDIT: teda, skús to z toho cp-1250 prekonvertovať do utf-8 a tam zoradiť.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 | 30 Bydlisko: Bratislava |
Najlepsie bude ak sem napises aj ten SELECT. Je mozne ze databaza je nastavena spravne, a v SELECTE ti chyba ORDER
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Som zaciatocnik, v tych kodovaniach sa velmi nevyznam, ale pri vkladani udajov do databazy priamo cez MyAdmin som mal toto nastavenie:
No a v tabulke zoradenej potom podla stlpca nazov_SK2 si všimnite ako je zaradený Žako a rozela žltokrká.
keď som nastavil (v tom vrchnom obrazku) namiesto sk-win1250 Slovak UTF 8, len sa zle zobrazili znaky. ale poradie ostalo rovnake....
Tak co teda???
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 | 181 Bydlisko: Nitra / Bra... |
ja som tiež v mysql začiatočník, ale keď zmeníš 'ORDER by nazov_SK2 ASC' na 'ORDER by nazov_SK2 DESC'
nikde som nenašiel rozdiel medzi ASC a DESC (asc som doteraz ani nepoznal ) ale skusit mozes
_________________ Sorry za prelkepy |
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Nikdy by som si nepomyslel, ze aj ja tu niekomu budem vediet poradit.
Rozdiel je ten, že ASC ti to usporiada vzostupne a DESC zostupne.
V mojom pripade je Žako zase na tom istom mieste, len z druheho konca.
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Jasné, ale stále ti tam chýba podstatná vec - podľa akého kľúča to zotrieďuje tie záznamy. Daj sem screen zo štruktúry tej tabuľky na celú šírku (všetky parametre stĺpcov).
Keď som v minulom príspevku písal o zotriedení, nemal som na mysli ASC/DESC, ale tretí stĺpec na stránke štruktúry tej tabuľky. Ten udáva, podľa akých jazykových pravidiel sa budú utrieďovať záznamy.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Máš pre tú tabuľku nastavené správne triedenie (collation)?
|
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
p360t, myslíš toto?
mal som tam povodne prazdno. Skusil som "binary" a zoradilo sa to zrazu spravne.
Mohol by si mi prosím ťa vysvetliť, kedy sa čo z tých štyroch možností používa?
No, ale tešil som sa predčasne, lebo na stranke sa to aj tak zobrazuje tak ako predtým. A to už fakt neviem prečo.
Môj select vyzerá takto:
Kód: $vysledek = mysql_query("SELECT nazov_SK AS nazvy, id_druhu FROM ch_druhy_vtakov WHERE nazov_SK LIKE '%' UNION SELECT nazov_SK2 AS nazvy, id_druhu FROM ch_druhy_vtakov WHERE nazov_SK2 LIKE '%' ORDER BY nazvy ASC");
|
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
chrono, neviem, čo je collation a kde sa to nastavuje...
|
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Tak už to mám správne aj na stránke. Keď som si čítal ten môj SELECT
uvedomil som si, že asi musím rovnako - na to "binary" - nastaviť aj stlpec nazov_SK. Neovládam tieto veci, myslel som, že binary bude niečo s číslami.
p360t, je to teda takto správne? dáva sa tam to "binary" keď chcem zoraďovať abecedne?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Nie, je to úplne zle. Ja som myslel na to isté na čo chrono. Vôbec to tam ani nemáš, takže to nehľadaj (asi to závisí od verzie phpmyadmina). To BINARY to rozhodne nie je a nastav to späť.
Spusti si tento príkaz:
Kód: ALTER TABLE `ch_druhy_vtakov CHANGE `nazov_SK2` `nazov_SK2` VARCHAR(42) CHARACTER SET utf8 COLLATE utf8_slovak_ci NOT NULL
Musíš si nastaviť zotriedenie (collation) na nejaké slovenské. Ten príkaz by ti to mal tak nastaviť.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Diky za radu, no vyskusal som, najprv mi to vypisalo chybu, ze chyba uzatvaraci apostrof, tak som ho doplnil - za ch_druhy_vtakov , a potom povedal toto:
Prevadzkovatel servera na ktorom fungujem mi povedal, ze chyba je v kodovani. Ze keby som to mal v sk-iso-8859-2, pripadne v utf8 zoradovalo by sa to spravne. Vyskúšal som a naozaj, ked som to vkladal pri nastaveni jazyka na sk-iso-8859-2 zoradilo sa to spravne. Nie vsak uz pri nastaveni na sk-utf8. V php adminovi mam len tieto 3 slovenske moznosti:
z nich sa to zoraduje spravne len pri tej sk-iso-8859-2.
Ak by to bolo naozaj tak, kde vsade by som musel toto kodovanie nastavit?
Na stranke v kode html, v meta tagu, v sql - SET NAMES, potom snad aj v editore... ??? Kde a co presne by bolo treba napisat?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Preboha, nevieš pochopiť, že chyba je v COLLATION????
A nevieš si ani ten príkaz upraviť tak, aby fungoval (priznávam, stala sa chyba, v príkaze je ako názov tabuľky ch_druhy_vtakov a tvoja tabuľka sa volá ch_druhy_vtakov3), veď sa nad tým trochu zamysli.
Ten select čo si sem dal je kódovanie užívateľského rozhrania phpMyAdmina, nemá to nič s dátami v databázi.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
"Preboha" a ty nevies pochopit, ze som zaciatocnik? Niekolko knih o php a mysql som uz prestudoval ale s tymto collation som sa zatial nikde nestretol. A ani v tom MyAdminovi to nemam ako si si mohol vsimnut.
Skusil som to znova s tym prikazom, co si mi napisal ale aj ked tam bolo ch_druhy_vtakov3 vyhodilo mi to presne tu istu hlasku.
Mam taky dojem, ze na tom serveri, kde fungujem, je instalovane php a mysql 4. Je mozne, ze tieto veci - collation - funguju az od php a mysql 5 ?
Hovoris, ze to nastavenie jazyka, co som ti ukazoval - v MyAdminovi s tym nema nic spolocne, ale potom nechapem, ako je mozne, ze ked tu tabulku znova vytvorim pri tom nastaveni jazyka na sk-iso-8859-2 tak to zoraduje presne tak, ako ma.
Su to dost zlozite veci, aspon pre mna, ked s tym nemam skusenosti, a ja tu hladam pomoc a nie aby ma tu niekto sprdaval, ze to neviem.
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Pozri sa, si tu na fóre kde jednotlivci radia ľuďom dobrovoľne v rámci svojho voľného času. Keby si bol taký láskavý a dobrotivý a vyvinul trošku svojej vlastnej aktivity smerom k MySQL manuálu (keďže kľúčové slová, ktoré máš hľadať už poznáš), určite by si sa veľa nového dozvedel a s pravdepodobnosťou blížiacou sa istote by si svoj problém vyriešil.
BTW, prečo nepokladáš svoj problém za vyriešený, keď podľa tvojich vlastných slov sa pri inom kódovaní chyba neprejavuje (inými slovami, prečo neprekóduješ všetko do iso-8859-2)?
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
p360t píše: BTW, prečo nepokladáš svoj problém za vyriešený, keď podľa tvojich vlastných slov sa pri inom kódovaní chyba neprejavuje (inými slovami, prečo neprekóduješ všetko do iso-8859-2)?
Pozri, ja sa nesnažím robiť múdreho, ale keďže som zatiaľ nedostal takú radu, s ktorou by mi to fungovalo, tak sa snažím nájsť nejaký spôsob s ktorým to fungovať bude. Teraz tiež neviem, či to myslís s tým prekódovaním do iso-8859-2 ako radu, alebo len ako niečo v tom zmysle, ze "veď keď si múdry, rob si to podľa seba". Ja zatiaľ naozaj neviem, či práve toto je ten najlepší spôsob.
Ja si vážim a som vďačný za každú radu, čo tu dostávam. Aj to s tým preštudovaním mysql manuálu beriem. Ok. Určite skôr alebo neskôr svoj problém dokážem vyriešiť. Len som skúšal, či by to nešlo za pomoci tohto fóra urýchliť. Takže ešte raz díky.
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
peter555 píše: Hovoris, ze to nastavenie jazyka, co som ti ukazoval - v MyAdminovi s tym nema nic spolocne, ale potom nechapem, ako je mozne, ze ked tu tabulku znova vytvorim pri tom nastaveni jazyka na sk-iso-8859-2 tak to zoraduje presne tak, ako ma. Ak ti to takto funguje, skús "všetko" prekódovať do iso-8859-2. Pod všetko myslím stránku (HTML a PHP súbory), všetky dáta v databázi a meta tag "Content-Type". Môže to byť zdĺhavý proces.
Nemal som predtým čas na takúto rozsiahlejšiu odpoveď, tak ti to poviem teraz. Treba si totiž vysvetliť pojmy. Kódovanie (encoding) informácie v počítači je spôsob, akým sa interpretujú postupnosti binárnych znakov (0 a 1). Kódovaní existuje veľa, rozdiel je v množstve znakov ktoré vedia obsiahnuť atď. S väčšinou znakov problémy nie sú, problémy však spôsobujú niekoré národné abecedy ktoré obsahujú znaky ako ľščťžýáíéúôäň atď. V každej abecede sú takéto znaky iné a preto je niekedy problém s ich interpretáciou. Keďže internet ako taký je "bez hraníc", problémy s národnými abecedami trochu obmedzujú. Preto máme kódovanie UTF-8, ktoré sa nejakým spôsobom podujalo zahrnúť "všetky" národné abecedy.
Zotriedenie (collation) je relácia usporiadania definovaná na množine znakov nejakej abecedy. Keďže abecied je veľa, je veľa aj týchto relácii usporiadania. Inak sa v zoradia slová "chrt" a napr. "czech" v slovenčine a inak v angličtine.
Každá databáza má dáta uložené v nejakom kódovaní a pri zoraďovaní sa riadi nejakým zotriedením (nejakou reláciou usporiadania na množine znakov z ktorých pozostávajú dáta v tejto databázi). Tvoj problém tkvie v tom, že pre slovenskú abecedu nemáš priradené správne zotriedenie. Prejavuje sa to však len pri istom kódovaní (pravdepodobne, ak máš dáta v UTF-8, použije sa nejaká východzia relácia usporiadania a nie je to tá slovenská) - pravdepodobne nejakom medzinárodnom. Kódovanie ISO 8859-2 je definované ako stredo- či východo-európske (tj. zahŕňa aj slovenčinu), preto zotriedenie, ktoré je k nej priradené v slovenčine funguje správne. Takisto je problém, že tvoj PhpMyAdmin nemá zreteľne uvedené polia pre nastavenie zotriedenia - možno to nie je v príslušnej verzii MySQL, alebo phpMyAdmina (na to je dobré prečítať si manuál - tam sa o takýchto veciach píše).
Takže si to zhrňme - potrebuješ sa nejak dostať k nastaveniu správneho zotriedenia alebo (a na to si už prišiel sám) zmeniť kódovanie v ktorom sú uložené dáta (čo inak fakt nemusí byť najpríjemnejšie riešenie). Ak sa ti nechce pátrať v tých manuáloch a hľadať tam podrobnosti, napíš mi verziu MySQL servra a verziu phpMyAdmin prostredia.
Snáď sa ti chcelo čítať až sem
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Diky moc.
Ok, takže verzia phpMyAdmin-a je: 2.6.4-pl1.
Verziu MySQL zatial neviem, musím zistiť, myslím že je tam štvorka ale s istotou ti to poviem až zajtra.
|
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Ano, takže je to tak, ako som hovoril: PHP 4.4.4, MySQL 4.0
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Skús toto (aj keď neviem, či to nie je až pre MySQL 4.1):
Kód: ALTER TABLE ch_druhy_vtakov3 CONVERT TO CHARACTER SET utf8 COLLATE utf8_slovak_ci
alebo Kód: ALTER TABLE ch_druhy_vtakov3 CHANGE COLUMN nazov_SK2 nazov_SK2 VARCHAR(42) CHARACTER SET utf8 COLLATE utf8_slovak_ci NOT NULL
Ono tá syntax aj podľa manuálu pre verziu 4.0 je takátoKód: ALTER TABLE nazov_tabuľky CHANGE COLUMN starý_názov_stĺpca nový_názov_stĺpca definícia_stĺpca
pričom slovo COLUMN je tam nepovinné, takže aj to čo som ti písal ako prvý príkaz by fungovať malo.
Inak, v akom kódovaní si mal tie dáta uložené doteraz?
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Díky, vyskúšam.
No, do meta tagu píšem win1250 a stránky robím v programe "1-st page 2000" a tam mam nastavené toto,
ale pravdupovediac, netuším akému kódovaniu to zodpovedá, ale zobrazuje sa mi všetko správne.
|
|
Registrovaný: 09.04.08 Prihlásený: 05.06.10 Príspevky: 30 Témy: 7 | 7 |
Skúšal som tie tvoje príkazy, ale nejde to. Tiež som trocha študoval ten manuál a všetko nasvedčuje tomu, že ta verzia 4.0 tieto veci nepodporuje.
Čo povieš, nebolo by najmúdrejšie požiadať spravcu mojho webhostingu aby ma prehodil na server, kde je PHP 5 a MySQL 5 ?
|
|
Stránka: 1 z 1
| [ Príspevkov: 25 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v PHP, ASP | 6 | 662 | 05.11.2009 23:02 danielop | | v Delphi, Visual Basic | 10 | 1135 | 22.12.2007 21:34 martin90 | | v PHP, ASP | 2 | 1090 | 10.01.2007 12:41 Papulka | | v Databázy | 1 | 585 | 26.01.2010 22:02 stenley | | v PHP, ASP | 24 | 1412 | 05.04.2012 13:23 xxx9955 | | v Operačné systémy Microsoft | 4 | 5981 | 23.12.2007 8:18 konig | | v Databázy | 2 | 533 | 03.02.2010 19:28 p360t | | v Databázy | 4 | 830 | 28.12.2008 16:40 Unlink | | v PHP, ASP | 22 | 1565 | 21.08.2008 16:54 p360t | | v Databázy | 1 | 695 | 15.09.2010 11:41 baumax | | v Databázy | 4 | 826 | 14.06.2009 23:20 marek26 | | v Webhosting a servery | 3 | 1425 | 13.11.2009 11:58 pedro91 | | v Databázy | 2 | 351 | 13.04.2013 17:02 zaciatocnik | | v Databázy | 10 | 665 | 15.01.2015 11:02 JanoF | | v Assembler, C, C++, Pascal, Java | 8 | 855 | 08.02.2009 19:25 tominoZA | | v PHP, ASP | 3 | 502 | 23.11.2011 23:32 walther |
|