Formulaire |
<form method="POST" action="resultat.php"> <input type="text" name="mot" size="20"> <input type="submit" value="Rechercher"> </form> |
id (auto_increment) | noms (varchar) | adresse (varchar) | ville(varchar) | phone (varchar ou int) |
<? if(empty($mot)){ header('Location:pageformulaire.php'); exit; } else{ $db = mysql_connect('localhost', 'login', 'password') or die('<font color=red>Désolé mais vous ne pouvez voir les infos de la data-base</font>'); mysql_select_db('nomdelabase',$db); $query="Select * from contact where noms like '$mot'" ; $result = mysql_query( $query )or exit ('Erreur SQL !'.$query.'<br>'.mysql_error()); while($data = mysql_fetch_array($result)) { if(empty($data['noms'])){ echo"Désolé pas de résultat"; } else { echo"Nom : ".$data['noms']." Adresse:".$data['adresse']." Ville:".$data['ville']." Tél.:".$data['phone']."<br>"; } } mysql_close(); } ?> |
$query="Select * from contact where noms like '$mot' or adresse like '$mot' or ville like '$mot'" ; |
id (auto_increment) | date (datetime) | titre (varchar) | sujet(lontext) | pseudo (varchar) |
//remplacement des espaces par des + $mot= str_replace(" ","+",$mot); //formatage des mots clef $mot = StripSlashes(trim($mot)); //on va mettre en tableau la chaîne selon le séparateur indiqué (ici +) $mot=explode("+",$mot); $nb=sizeof($mot);//nombre de mots clés if( $nb>0 ){//s'il y a + d'1 mot clé ##################### Fin de la partie commune ########################### //Recherche sur "titre" (exemple) qu'au moins un des mots y soient: $message="Select * from table where 0 "; for($i=0 ;$i<$nb ;$i++ ){// boucle pour les mots clés $joint[$i]="OR titre like '%".$mot[$i]."%' "; } foreach ($joint as $value) {//on finit la requête $message.=$value; }//Fermeture boucle1 echo$message;// la requête au complet !! } //Recherche sur "titre" et "sujet" qu'au moins un des mots y soient: $message="Select * from table where 0 "; for($i=0 ;$i<$nb ;$i++ ){// boucle pour les mots clés $joint[$i]="OR titre like '%".$mot[$i]."%' "; $joint2[$i]="OR sujet like '%".$mot[$i]."%' "; } foreach ($joint as $value) {//on finit la requête $message.=$value; }//Fermeture boucle1 foreach ($joint2 as $valeur) {//on finit la requête $message.=$valeur; } echo$message;// Si vous désirez lire la requête au complet !! } //Recherche sur "titre" (exemple) que tous les mots y soient: $message="Select * from table where 0 or "; for($i=0 ;$i<$nb-1 ;$i++ ){//boucle pour le And $suivant[$i]="AND"; } for($i=0 ;$i<$nb ;$i++ ){// boucle pour les mots clés $joint[$i]=" titre like '%".$mot[$i]."%' ".$suivant[$i]." "; } foreach ($joint as $value) {//on finit la requête $message.=$value; }//Fermeture boucle1 echo$message;// si vous désirez lire la requête au complet !! } //Recherche sur "titre" et sujet que tous les mots y soient: $message="Select * from table where 0 or "; for($i=0 ;$i<$nb-1 ;$i++ ){//boucle pour le And $suivant[$i]="AND"; } for($i=0 ;$i<$nb ;$i++ ){// boucle pour les mots clés $joint[$i]=" titre like '%".$mot[$i]."%' ".$suivant[$i]." "; } foreach ($joint as $value) {//on finit la requête $message.=$value; }//Fermeture boucle1 $message.="OR"; for($i=0 ;$i<$nb ;$i++ ){// boucle pour les mots clés $joint[$i]=" sujet like '%".$mot[$i]."%' ".$suivant[$i]." "; } foreach ($joint as $valeur) {//on finit la requête $message.=$valeur; }// echo$message;// si vous désirez lire la requête au complet !! } |
$mot= str_replace(" ","+",$mot); //formatage des mots clef $mot = StripSlashes(trim($mot)); $db = mysql_connect('localhost', 'login', 'pass'); mysql_select_db('base',$db); $sql="Select * from $table "; $req = mysql_query($sql); $nbre = mysql_num_fields($req); $mot=explode("+",$mot); $nb=sizeof($mot); if( $nb>0 ){//s'il y au moins 1 mot clé //début de la requête $message="Select * from table where 0 "; $a=0; while($a<$nbre){//boucle 1 pour les différentes colonnes de la table $champ = mysql_field_name($req,$a++); for($i=0 ;$i<$nb ;$i++ ){//2nde boucle pour les mots clés $joint[$i]="OR ".$champ."like '%".$motsclef[$i]."%' "; } foreach ($joint as $value) {//on finit la requête $message.=$value; }//Fermeture boucle1 }//Fermeture boucle2 echo$message;// pour afficher la requête au complet !! } |
Notes:
Notez que de toute façon ces scripts ne sont qu'à titre d'exemples et n'en sont donc que trés
partiels, il vous faudra bien-sûr les intégrer dans l'environnement de votre page, de votre site,
mais la méthode est là et elle fonctionne.
Autre point important, ces morceaux de scripts notament, lorsqu'il y a connexion à votre base de données, ne font aucune référence à certains problèmes de
sécurité.