Bonjoour,
j'ai les codes suivants qui fonctionnent bien, mais qui recherhent uniqument sur le premier mot de la base de données :
Par exemple, si dans ma base j'ai dans la cellule "nom" les mots : jules ferry
et si je tape 'jules' : ok il me trouve bien "jules ferry" mais si je tape 'ferry' il ne me trouve rien...
Merci de votre aide.
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
16
17
18
19
20
21
22
23
24
25
26
27
28 <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_ev.php", {queryString: ""+inputString+""}, function(data){ // on envoie la valeur du champ texte dans la variable post queryString au fichier ajax_ev.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>traitement :
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 <form method="post" action="recherche_interne.php"> <fieldset> <legend> Recherche par mot clé </legend> <label>Entrer le nom de l'artiste ici :</label> <input type="text" tabindex ="16" name="recherche" 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> <br /> <p><b>ne pas indiquer les pronoms comme "Le" "Les" "The" ..merci.</b></p> <br /> </fieldset> <input type="submit" tabindex ="17" value="Rechercher" /> </form>
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
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 <?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 = mysql_real_escape_string($_POST['queryString']); if(strlen($queryString) >0) { // requete sql à personnaliser pour correspondre à votre base de données $remplacements = array('à' => 'a','é' => 'e','è' => 'e','ù' => 'u','ê' => 'e','ô' => 'o' ); $saisie_avant = strtr($queryString, $remplacements); //ayant tout des mots dans leurs informations // fonction pour nettoyer la chaine de caracteres function trimUltime($chaine) { $chaine = trim($chaine); $chaine = str_replace("\t", " ", $chaine); $chaine = eregi_replace("[ ]+", " ", $chaine); return $chaine; } $saisie = trimUltime($saisie_avant); $mots = explode(' ',$saisie);//sépare l'expression en mots cles foreach($mots as $mot) { $result = mysql_query("SELECT * FROM evenement WHERE nom LIKE '$mot%' LIMIT 15"); if($result) { 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>'; } } 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 !!!'; } ?>
Partager