Salut
Si tu souhaites une solution propre intégrée à ton développement, une solution est de créer un script qui vérifie que pour chaque mot clef celui ci soit effectivement compris dans l'un des champs sur lesquels porte ta recherche
Idée
//L'entrée utilisateur est mise dans la variable $rech
$rech = isset($_POST['rech']) ? mysql_real_escape_string( $_POST['rech'] ): '';
//Les expressions à rechercher issues de la variable $rech sont mises dans un tableau
$tab=explode(" " , $rech)
Pour chacune des expressions entrées les champs concèrnés de ta base sont verifiés
// Nb d'entrées utilisateur
// Test des champs pour chaque entrée, ici les champs sont appelés champ1, champ2 ....
1 2 3 4
| for($i=1 ; $i<$nb; $i++):
$sql= " SELECT * FROM table_à_vérifier WHERE champ1 LIKE '%$tab[$i]% AND champ2 LIKE '%$tab[$i]% ....."; (NB : continuer avec chaque champ sur lequel doit porter la recherche)
endfor; |
Tu obtiens pour chaque entrée de l'utilisateur les enregistrements correspondants en utilisant qque chose du style
$result_recherche = mysql_query($sql) or die('Échec de la requête : ' . mysql_error());
//ecriture élement de la liste d'aprés objet courant
1 2 3 4 5 6
| while ($resultat_recherche = mysql_fetch_array($result_recherche, MYSQL_ASSOC)) :[/I]
[I]extract($resultat_rcherche);
--- Ici ton script pour traiter le resultat correspondant à chaque entrée ---
endwhile; |
Pour économiser les ressources, une précaution pourrait être à prendre en ce qui concerne le nombre d'expressions à rechercher , ou, puisque chaque expression doit se retrouver dans les champs, pour stopper la recherche si une expression n'est pas trouvée.
Pour cela tu peux par exemple utiliser en premier le même genre de script en utilisant
SELECT count(*) FROM table-à-vérifier .....
pour t'assurer préalablement à tout traitement que la condition que tu as fixé (TOUTES les expressions sont contenues dans au moins un des champs) est respectée.
J'éspére que cette base pourra t'aider. Attention, le script proposé n'est pas testé mais uniquement donné à titre de trame exemple.
Un moteur de recherche simple utilsant un principe similaire à celui ci et acceptant l'operateur OR est utilisé sur wikimaginot.eu là
Cordialement, Pascal
Partager