Ajax / php saisie automatique

Fermé
dallap - 11 mai 2009 à 16:42
 tefa - 25 juin 2009 à 16:26
Bonjour,
J'ai un soucis pour créer un champ de recherche avec un affichage de saisie automatique à partir d'une base de donnée.
J'ai essayé de nombreux codes et suivis des tuto trouvés sur le net mais ça n'a rien donné. J'ai choisi le plus clair d'entre eux à cette adresse: http://blog.arnaud-k.fr/2009/developpement-web/tutorial-suggestions-auto-completion-en-ajax-avec-jquery-et-php/ et je l'ai adapté.

Le problème est qu'il n'y a rien qui s'affiche à la saisie.
Pourriez vous me donner un coup de main svp?

Voici mon code test.php :
<body>
<script language="JavaScript">
function lookup(inputString) {
if(inputString.length == 0) { // si le champs txte est vide
$('#suggestions').hide(); // on cache les suggestions
} else { // sinon
$.post("ajax.php", {queryString: ""+inputString+""}, function(data){ // on envoit la valeur du champ texte dans la variable post queryString au fichier ajax.php
if(data.length >0) {
$('#suggestions').show(); // si il y a un retour, on affiche la liste
$('#autoSuggestionsList').html(data); // et on remplit la liste des données
}
});
}
}

function fill(thisValue) { // remplir le champ texte si une suggestion est cliquée
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}

$(document).ready( function () { // lorsque la page est entierement chargée
$("input#inputString").keyup( function() { // si on presse une touche du clavier en étant dans le champ texte qui a pour id inputString
lookup($(this).val()) 
});

$("input#inputString").blur( function() { // si le champs texte perd le focus
fill() 
});
});
</script> 


<div>
Rechercher un client :
<br />
<input type="text" size="30" value="" id="inputString" /><!--  champ texte à analyser pour les suggestions -->
</div>

<div class="suggestionsBox" id="suggestions" style="display: none;"> <!-- bloc contenant les eventuelles suggestions -->
<img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" /> <!-- image de la fleche vers le haut -->
<div class="suggestionList" id="autoSuggestionsList"><!-- liste contenant les suggestions -->
&nbsp;
</div>
</div>
</body>
</html>



et la page ajax.php :

<?php	
$bdd_db ="blabla";
$link = mysql_connect("localhost", "login", "pass") or die("Impossible de se connecter : " . mysql_error());
mysql_select_db($bdd_db,$link);

// si une variable queryString a été posté
if(isset($_POST['queryString'])) {

// si la longueur du contenu de la variable est superieur à 0			
if(strlen($queryString) >0) {

// requete sql à personnaliser pour correspondre à votre base de données
$result = mysql_query("SELECT value FROM client WHERE value LIKE '$queryString%' LIMIT 10");
if($result) {

// on parcourt les resultats
while ($test = mysql_fetch_object($result)) {
// on affiche les resultats dans un element de liste en ajoutant 
// la fonction fill sur l'evenenement onClick
echo '<lionClick="fill(\''.$test->value.'\');">'.$test->value.'</li>';
}
} else {
echo 'Il y a une probleme avec la requete sql.';
}
} 
} else {
echo 'Il ne devrait pas avoir un accès direct à ce script !!!';
}
?>

Merci beaucoup.

3 réponses

pas d'idées ?

Merci
2
tu as fait un vulgaire copier/coller...

Par exemple, la condition qui affiche "il ne devrait pas y avoir un accès direct à ce script" vient de nulle part,
$test->value se traduit par la variable qui reçoit le resultat dela requete SQL
"$result = mysql_query("SELECT value FROM client WHERE value LIKE '$queryString%' LIMIT 10");"

on affiche donc $result[nom de ton champ]

de plus dans ta requete, je doute que tu aies un champ "value" lors de ta restriction, et la concatenation de la variable est mauvaise, tu devrais plutot afficher :

"$result = mysql_query("SELECT nomduchamp FROM client WHERE nomduchamp LIKE '".$queryString."%' LIMIT 10");"

pour le reste du code je vais le tester !
1
Hello Dallap !!

J'ai également besoin d'une recherche à saisir automatique ! J'ai trouvé ton post, ainsi que le site que tu as mis en lien !! Tout bien expliqué, impecc !! MAis voilou, même problème que toi ça ne fonctionne pas ... et je ne vois pas non plus d'où ça vient :(

Please Help les gens !!!!!


ps : suis un débutant :/


Ju
0