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
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
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ď.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0