Autor | Zpráva | ||
---|---|---|---|
Johny_5 Profil * |
#1 · Zasláno: 30. 6. 2010, 14:15:35
Dobrý den,
chci se zeptat jak to udělat aby vyhledal název jak s diakritikou, tak i bez ní? Děkuji Jak to mám ted, tak ignoruje velikosti textu, ale né diakritiku :-( LOWER(description) LIKE '%".mb_strtolower(mysql_real_escape_string($_GET["description"]))."%' |
||
AM_ Profil |
#2 · Zasláno: 30. 6. 2010, 14:18:21
Johny_5:
„chci se zeptat jak to udělat aby vyhledal název jak s diakritikou, tak i bez ní?“ kdo, co? „Jak to mám ted, tak ignoruje velikosti textu, ale né diakritiku :-(“ kdo, co? obecně - diakritiku musíš osekat, nejlépe v databázi mít uloženou verzi bez diakritiky (nevím o tom, že by MySQL funkcí šla odstranit) a v PHP se dá odstranit pomocí strtr (v manuálu) je na to i příklad). Pokud budeš porovnávat bez diakritiky, tak ji to de facto ignoruje. |
||
Johny_5 Profil * |
#3 · Zasláno: 30. 6. 2010, 14:25:11
To mě taky napadlo, ale doufal jsem, že je na to nějaká funkce :-) Děkuju
|
||
Johny_5 Profil * |
#4 · Zasláno: 30. 6. 2010, 14:32:22
Jak, ale vytáhnout vysledek s db na porovnání? Šlo by to nějak takhle?
$GLOBALS = array( 'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj','Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss','à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'ƒ'=>'f' ); LOWER(".strtr(description, $GLOBALS).") LIKE '%".mb_strtolower(mysql_real_escape_string($_GET["description"]))."%' To jsem ted vytvořilnějakou .....,ne? |
||
Johny_5 Profil * |
#5 · Zasláno: 30. 6. 2010, 14:52:05
Jsem to testnul, ale nehlásí ani chybu ani nezobrazuje vysledky :-) Dal jsem to i do vysledků GET, ale nefunguje mi to.
|
||
miskith Profil |
#6 · Zasláno: 30. 6. 2010, 15:54:04 · Upravil/a: miskith
zkus použít na konci SQL:
COLLATE utf8_general_ci Já jsem to používal a fungovalo to ;) |
||
AM_ Profil |
#7 · Zasláno: 30. 6. 2010, 15:56:02
nevím, jestli je rozumné si pole $GLOBALS přepsat převodní tabulkou :) raději použij jinou proměnnou.
Johny_5: „strtr(description, $GLOBALS)“ toto dělá co? description je nějaká konstanta? navíc sloupec v mysql, který porovnáváš v mysql, nemůžeš modifikovat PHP funkcí, jestli se snažíš o to... jak říkám, předgeneruj si sloupec třeba description_nodiak, kde bude popis bez diakritiky, a porovnávej proti němu... |
||
AM_ Profil |
#8 · Zasláno: 30. 6. 2010, 15:57:23
[#6] miskith
jenže on řeší, jak porovnávat bez diakritiky, ne kódovou stránku, s diakritikou mu to jestli jsem dobře pochopil funguje... |
||
ninja Profil |
#9 · Zasláno: 30. 6. 2010, 17:59:58 · Upravil/a: ninja
AM: za použití
COLLATE utf8_czech_ci |
||
Časová prodleva: 14 let
|
0