j'ai enfin trouvé la solution !
j'ai récupéré le code suivant disponible sur le net
jquery-1.2.1.pack.js :
Code :
1 2 3 4 5 6 7 8
| /* jQuery 1.2.1 - New Wave Javascript
* Copyright (c) 2007 John Resig (jquery.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
* $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $
* $Rev: 3353 $
*/
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)).............. |
ma page HTML :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
<script type="text/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 envoie 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 () {
$("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 champ texte perd le focus
fill()
});
});
</script>
</head>
<body>
<div id="maincontent">
<form>
<fieldset>
<legend> Rechercher un lieu : </legend>
<br />
<label>Lieu à chercher : </label>
<br />
<input type="text" class="ev" value="" id="inputString" /><!-- champ texte à analyser pour les suggestions -->
<div class="suggestionsBox" id="suggestions" style="display: none;"> <!-- bloc contenant les eventuelles suggestions -->
<div class="suggestionList" id="autoSuggestionsList"><!-- liste contenant les suggestions -->
</div>
</div>
</fieldset>
</form>
<br />
<br />
</div>
</body>
</html> |
le fichier qui traite les infos => ajax.php :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <?php
require("configuration.php");
$sql = connect_sql();
mysql_query("SET NAMES utf8");
// si une variable queryString a été posté
if(isset($_POST['queryString']))
{
// si la longueur du contenu de la variable est superieur à 0
$queryString = ($_POST['queryString']);
if(strlen($queryString) >0) {
// requete sql à personnaliser pour correspondre à votre base de données
// $result = mysql_query("SELECT nom, ville FROM lieu WHERE nom LIKE '$queryString%' LIMIT 15");
$result = mysql_query("SELECT * FROM lieu WHERE nom LIKE '$queryString%' LIMIT 15");
// UNION SELECT ville FROM lieu WHERE nom LIKE '$queryString%'");
if($result)
{ // on parcourt les resultats
while($nom = mysql_fetch_array($result)) {
// on affiche les resultats dans un element de liste en ajoutant la fonction fill sur l'evenenement onClick
echo '<li onClick="fill(\''.$nom["nom"].'\');">'.$nom["nom"].'</li>';
// affichage de la ville en plus
echo '<span style="color:#8E236B;">';
echo 'Secteur : ';
echo '<b>'.$nom["ville"].'</b>';
echo '</span>';
}
} else {
echo 'Il y a un probleme avec la requete sql.'; }
}
else {
echo 'Il y a un probleme avec la requete sql.'; }
}
else {
echo 'Il ne devrait pas avoir un accès direct à ce script !!!'; }
?> |
pour info, le style CSS concerné :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| a.lien {
color:#2193BD;
font-weight:bold;
font-size:1.2em;
text-decoration:underline;}
a.lien:hover {
color:#333;}
hr{
clear: both;
display: block;
visibility: hidden;
height: 1px;}
/**** STYLES DE LA BOITE DE SUGGESTION ****/
.suggestionsBox {
position: absolute;
left: 30px;
margin: 10px 0px 0px 0px;
width: 200px;
background-color: #212427;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border: 2px solid #000;
color: #fff; }
.suggestionList {
margin: 0px;
padding: 0px;
}
.suggestionList li {
margin: 0px 0px 3px 0px;
padding: 3px;
cursor: pointer;
list-style:none;
}
.suggestionList li:hover {
background-color: #ffa800;
color:#000;
} |