Autor | Zpráva | ||
---|---|---|---|
pamas Profil |
Zdravím, měl jsem problém s automatickou nápovědou za použití Autocomplete widgetu, kdy jsem jako source použil data z databáze. Autocompletem jsem si napovídal jména zákazníků i s příjmením. Charset mi pro databázi vypisoval "latin1" a nedokázal jsem providera přesvědčit o tom, že tomu tak je i když on mi tvrdil, že má databáze kódování utf-8. Já měl včechny skripty vč. stránek v kódování utf-8. Přesto mi autocomplete napovídal některé položky s hodnotou NULL. Správně vypisoval pouze celá jména, která byla bez diakritiky. Tady a ani nikde jinde jsem řešení jak si pomoci s převodem kódování pro funkci json_encode():
kód pro head tag <script type="text/javascript"> $(document).ready(function(){ $("#name").autocomplete({ source:'searchcustomers.php', minLength:1 }); }); </script> body: <div > <form method="post" action=""> Jméno : <input type="text" id="name" name="name" /> </form> </div> searchcustomers.php: $dbtable = "tabulka"; $dbLink = mysql_connect("localhost","username","password"); mysql_query("SET character_set_results=utf8", $dbLink); mb_language('uni'); mb_internal_encoding('UTF-8'); mysql_select_db("databasename", $dbLink); mysql_query("set names 'utf8'",$dbLink); $term=$_GET["term"]; $query=mysql_query("SELECT * FROM $dbtable where name like '%".mysql_real_escape_string($term)."%' order by name asc"); $json=array(); while($zakaznik=mysql_fetch_array($query)){ $json[]=array( 'value'=> $zakaznik["name"], 'label'=>$zakaznik["name"] ); } echo json_encode($json); Takhle mi to funguje na 100% i s českou diakritikou, tak snad to někomu pomůže. Co se mi ještě nepodařilo, tak je napovídání bez rozlišení velkých a malých písmen. Zkoušel jsem to přes Ajax, ale nějak se nedaří, takže kdyby se našel někdo, kdo by s tím chtěl pomoci, tak budu rád. |
||
Lamicz Profil |
#2 · Zasláno: 10. 3. 2014, 18:28:06
Takhle mi to funguje na 100% i s českou diakritikou, tak snad to někomu pomůže.
Obávám se, že tato rada je v dnešní době mimo, protože mysql_* fce jsou zastaralé. |
||
pamas Profil |
Lamicz:
dá se to tedy vyřešit "moderněji"? Pokud ano, tak jak? Já osobně nejsem žádný profík - spíš amatér. Programování takových skriptů je spíše můj koníček, takže když se mi podaří něco vyřešit, tak mám z toho radost a rád se s tím podělím s ostatními. I když se to někomu může zdát jako "postarší" řešení, tak mě to nevadí - hlavně že to funguje. :) |
||
Chamurappi Profil |
#4 · Zasláno: 10. 3. 2014, 22:56:31
Reaguji na pamase:
„Co se mi ještě nepodařilo, tak je napovídání bez rozlišení velkých a malých písmen. Zkoušel jsem to přes Ajax“ To bych neřešil v JS. Uprav databázový dotaz tak, aby se hledalo ve sloupci name převedeném na malá písmena, a $term na ně také převeď.
|
||
Časová prodleva: 10 let
|
0