bonjour,

j'essaie de faire une boucle toute simple pour un moteur de recherche par mot clef. Quand je rentre 2 mots ou plus, il n'y a que le premier qui est reconnu. Qqn pourrait m'aider ?

merci beaucoup, voici le code

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
53
<?php
// on se connecte à notre base 
$base = mysql_connect (  );
mysql_select_db (   );
$_SESSION['motsclef']=$_POST['motsclef'] ;
// On recupère la variable motsclef 
$motsclef = $_SESSION['motsclef']; 
 
// On recupère la méthode 
$_SESSION['methode']=$_POST['methode'] ;
$methode = $_SESSION['methode']; 
 
// On explose les mots clefs 
// en tronquant à chaque espace 
$motsclef1 = explode(" ",$motsclef); 
 
// On compte le nombre de mots entrés par le visiteur 
$nbr_mots = count($motsclef1); 
 
// On recherche dans la table si qqchose ressemble au premier mot clé 
$sql = "SELECT * FROM aide_ac WHERE (specifique LIKE '%$motsclef1[0]%' OR description LIKE '%$motsclef1[0]%' OR adresse LIKE '%$motsclef1[0]%' OR tarifs LIKE '%$motsclef1[0]%' OR intervenants LIKE '%$motsclef1[0]%')";
 
 
// On fait une boucle pour les autres mots clés 
$i = "1"; 
while ($i<$nbr_mots) 
 
{ 
 
// On specifie la methode OR ou AND et on recherche 
$sql .= " $methode (specifique LIKE '%$motsclef1[i]%' OR description LIKE '%$motsclef1[i]%' OR adresse LIKE '%$motsclef1[i]%' OR tarifs LIKE '%$motsclef1[i]%' OR intervenants LIKE '%$motsclef1[i]%')"; 
 
// On increment la variable $i 
$i++; 
 
} 
 
 
// On execute la requete 
$result = mysql_query($sql); 
 
// On recupère les données trouvés 
while ($data = mysql_fetch_array($result)) { 
 
// On affiche les resultats 
echo "Description : ".$data[description]." <br/>"; 
echo "Intervenants : ".$data[intervenants]." <br/>"; 
echo "Public : ".$data[public]." <br/>"; 
 
 
} 
 
?>
et voilà ce qu'affiche la requête (echo $sql, mai sj'ia bien deux mots clefs (echo $motsclef; donne "2")


Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT * FROM aide_ac WHERE (specifique LIKE '%ollivet%' OR description LIKE '%ollivet%' OR adresse LIKE '%ollivet%' OR tarifs LIKE '%ollivet%' OR intervenants LIKE '%ollivet%') AND (specifique LIKE '%%' OR description LIKE '%%' OR adresse LIKE '%%' OR tarifs LIKE '%%' OR intervenants LIKE '%%')



si besoin, le code de la page du formulaire


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
<form method="POST" action="test1.php"> 
 
<!-- Le champs à remplir par le visiteur --> 
<tr><td><input type="text" name="motsclef"> 
 
<!-- Ici le visiteur choisit la methode --> 
<select name="methode"> 
 
<option value="AND">Tous les mots</option> 
<option value="OR">Au moins un mot</option> 
 
</select> 
 
</td></tr> 
 
<!-- Le bouton de validation --> 
<tr><td><input type="submit" value="Rechercher"></td></tr> 
 
<!-- On referme le formulaire --> 
</form>