Bonjour,
dans le cadre d'une autocompletion , j interroge une table mysql, et parfois les données retournées contiennent des caractères spéciaux (apostrophes notamment).
vous aurez compris qu il s'agit donc de combiner javascript et php,
je prepare la reponse dans le code PHP en construisant une liste qui contient un fonction onclick="remplir()".
Et c'est là que rien ne vas plus, si le parametre de la fonction contient un mot avec apostrophes (levi's par exemple) , je ne sais pas comment echapper ce caracère.
En fait je ne sais pas à quel moment il faut traiter cela. (sur l'envoi ajax, la fonction javscript, ou dans le code php)
J'ai cru comprendre que escape et unescape le permettent, mais il faut deja savoir où agir.... arghhhh!
bon et bien place au code:
et le traitement PHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function autosuggest() { getXhr() q = document.getElementById('search-q').value; // Set te random number to add to URL request nocache = Math.random(); xhr.open('get','search.php?q='+q+'&nocache = '+nocache); xhr.onreadystatechange = autosuggestReply; xhr.send(null); } function remplir(a) { document.getElementById('search-q').value = a; }
Donc pour linstant cela fonctionne dans le sens ou la liste construit e contient bien les données avec apostrophes, c'est juste la fonction onclick="remplir()" qui n'en veut pas!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php $searchq = strip_tags($_GET['q']); $getRecord_sql = 'SELECT * FROM '.$SQL_FROM.' WHERE '.$SQL_WHERE.' LIKE "'.$searchq.'%"'; $getRecord = mysql_query($getRecord_sql); if(strlen($searchq)>0){ while ($row = mysql_fetch_array($getRecord)) { echo ' <li class="contact"><div class="nom" onclick="remplir(\''.$row['marque'].'\');">'.$row['marque'].'</div>
erreur Firedebug :@++, si vous connaissez la parade...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Erreur*: missing ) after argument list Ligne*: 1, Colonne*: 14 Code Source*: remplir('levi's');
Partager