Autor | Zpráva | ||
---|---|---|---|
peteo Profil |
Dobrý deň, večer, či ráno,
potreboval by som, prosím poradiť: celá databáza má radenie podľa utf8_slovak_ci, ale bohužiaľ sa mi nedarí radiť správne, resp. ako chcem, písmená s mäkčeňmi a dĺžňami sa mi radia pred písmenka bez nich (bez háčků a čárek, aby mi rozumeli aj nie Slováci). Ďakujem za pomoc. Ukážka na http://co-to-je.sk/cotoje/dnes.php kód: include ("cotoje_conect.php"); $vyber=mysql_query(" SELECT * FROM a WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM b WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM c WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM d WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM e WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM f WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM g WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM h WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM ch WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM i WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM j WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM k WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM l WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM m WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM n WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM o WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM p WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM q WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM r WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM s WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM t WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM u WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM v WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM w WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM x WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM y WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM z WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM znak WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM cislo WHERE obsah LIKE '%".$dotaz."%' UNION SELECT * FROM os WHERE obsah LIKE '%".$dotaz."%' ORDER BY book,meno"); while ($row = mysql_fetch_array($vyber)) { $text="<hr><span>".$row['meno']."</span>".$row['obsah']; include ("pict.php");//opbrazky echo "<div class='zoscri'><h1><span>".$text."</div>"; } ORDER BY book,meno - radenie podľa písmena (neviditeľné, sú to tabuľky medzi FROM a WHERE , a stĺpca meno - vo výsledku (viď ukážka) to, čo je červenou farbou.
stránky sú funkčné okrem vyhľadávania. |
||
Joker Profil |
#2 · Zasláno: 9. 2. 2013, 10:14:15
peteo:
Uf, třicet úplně stejných tabulek?! Proč to nedáte do jedné? „bohužiaľ sa mi nedarí radiť správne, resp. ako chcem, písmená s mäkčeňmi a dĺžňami sa mi radia pred písmenka bez nich“ Ve slovenské (i české) abecedě jsou písmena s diakritikou za písmeny bez diakritiky, takže správné abecední řazení je, aby písmena s diakritikou byla později. Jak dosáhnout aby byla dříve, to nevím, možná jestli existuje nějaká abeceda, kde písmena s diakritikou jsou první? Ovšem zas by nevypadala jako slovenská abeceda. Tak nevím. |
||
peteo Profil |
Joker:
Uf, třicet úplně stejných tabulek?! Proč to nedáte do jedné? Pretože v tých tabuľkách je dohromady 130.000 záznamov a nepodarilo sa mi urobiť skript, ktorý by dokázal zo zdrojových súborov do 30 sekúnd urobiť jednu tabuľku. I teraz najväčšiu tabuľku robí cca 15 sekúnd. Urobil som skript, ktorý tie tabuľky tvorí automaticky zo zdrojových textových súborov, ručne sa mi to ta fakt nechce hádzať ;) Ve slovenské (i české) abecedě jsou písmena s diakritikou za písmeny bez diakritiky, takže správné abecední řazení je, aby písmena s diakritikou byla později. No to ja viem, povodne ich mám správne (stránky bežiace bez mysql: http://co-to-je.sk/dnes.php), iba v databáze mi to radí takto šialene. A s tým práve neviem pohnúť, aby to radilo správne. |
||
Sir Tom Profil |
#4 · Zasláno: 9. 2. 2013, 12:45:25
peteo:
Nejdříve to dej do jedné tabulky. Třeba si napiš skript na postupné přidávání dat do tabulky, nebo skript, který spojí těchto 30 do jedné. Možná to bude trvat delší dobu, ale věz, že v budoucnu to bude velmi výhodné. Teprve poté lze řešit abecední řazení. |
||
Joker Profil |
#5 · Zasláno: 9. 2. 2013, 13:18:27
peteo:
„nepodarilo sa mi urobiť skript, ktorý by dokázal zo zdrojových súborov do 30 sekúnd urobiť jednu tabuľku.“ A je problém to rozdělit na více částí? Ostatně teď když to v databázi už je stačí prostě data přesunout do jedné tabulky. ad řazení: Joaha, já to předtím špatně pochopil. Až to bude v té jedné tabulce, mělo by stačit prostě použít řazení pro slovenštinu (utf8_slovak_ci, případně pro dané kódování, pokud to není v UTF-8) |
||
shaggy Profil |
#6 · Zasláno: 9. 2. 2013, 13:22:07
peteo:
„nepodarilo sa mi urobiť skript, ktorý by dokázal zo zdrojových súborov do 30 sekúnd urobiť jednu tabuľku“ Keď sa ti podarilo urobiť skript, ktorý zo zdrojových súborov urobil viac tabuliek, je problém ho upraviť tak, aby to uložil do jednej? Ty si najprv vytvor tabuľku (nerob to v tom istom skripte, ako máš ukladanie dát) a potom si v dávkach ulož dáta. Alebo si zmeň max. čas na beh skriptu. |
||
peteo Profil |
OK, databáza prekopaná do jednej tabuľky, výsledný kód výpisu dole.
Bohužiaľ, radenie je zlé, opäť sú hášiky a čiarky pred normálnymi písmenami, viď ukážka v [#1] (už s novou datábazou a týmto kódom). všetky zotriedenia sú podľa utf_8_slovak_ci, čo by malo teda radiť správne, ale neradí. hm. Pomohlo by i, keby na to niekto na to prišiel, nech tam nemusím dávať nejaké šialené podmienky na radenie. Potrebujem aby to nebolo case sensitiv, ale aby to rešpektovalo háčky a čiarky. include ("cotoje_conect.php"); $vyber=mysql_query("SELECT * FROM meno WHERE obsah LIKE '%".$dotaz."%' ORDER BY book,meno"); while ($row = mysql_fetch_array($vyber)) { $text="<hr><span>".$row['meno']."</span>".$row['obsah']; $text = str_replace($dotaz,$zvy3,$text); //zvýraznenie textu $text = str_replace($zvy4,$zvy04,$text); //zvýraznenie textu include ("pict.php");//opbrazky echo "<div class='zoscri'><h1><span>".$text."</div>"; } |
||
Časová prodleva: 12 let
|
0