mardi 17 avril 2012

Faire un moteur de recherche sur un site


Bonjour à tous,

J'espère que vous avez passé une bonne soirée et que vous êtes d'attaque en ce matin. Pour ma part, je le suis. Malgré la défaite de mon club de cœur hier soir. Mais bon c'est pas le sujet, dans ce nouveau billet nous allons voir comment mettre en place un moteur de recherche sur son site internet. Et oui un petit Google dans son site c'est pas mal du tout.

Avant tout, faisons une liste des possibilités qui s'offrent à nous :

  • Importer la barre de recherche Google dans son site :  ce cas de figure est assez pratique lorsque vous avez un site statique, dans le cas d'un site dynamique c'est un peu plus complexe et je ne conseille pas non plus.

  • Développer soit même son moteur de recherche en indexant les mots clés définis pour chaque article que l'on a insérer.

La seconde approche est celle que nous allons adopter ici. Faut savoir que SQL définit une clause LIKE adaptée au recherche,  c'est cette clause embarquée dans nos requêtes que nous allons utilisés. Pour un début résumons la séquence d'exécution des tâches.


Bien une fois que vous avez saisi le concept passons à la phase pratique. Imaginons que nous sommes sur un site de magazine et que nous voulons ajouter un moteur de recherche. Pour chaque article que l'on écrira, l'on définira une suite de mot clés (séparés par des virgules) ou alors on fait une petite description qui nous servira pour la recherche.

NB : le but de définir des mots clés ou de faire une description est d'alléger le champ de recherche, car si la recherche devait se faire sur tout le contenu de l'article cela mettrait du temps.

Dans notre cas de figure, voici notre table article


NB : Noté ici que nous pouvons remplacer Mots clés par description.

Le formulaire de recherche peut être en post ou en get, notre cas c'est get et doit renvoyer vers une page (ici recherche.php). Ci-dessous le code à mettre dans recherche.php

Le champ de recherche a pour nom blog dans notre exemple. Chaque article publié a une valeur 1 dans le champ Publié

// début du code

$_GET['blog']=urldecode(rawurlencode($_GET['blog']));

// ici on récupère la variable envoyée par le formulaire, les deux fonctions dans lesquelles ont met en paramètres la donnée sont très importantes, elles permettent de supprimer les %% qui s'insèrent lorsqu'il y a des espaces dans le mot recherché

 
  $m=mysql_real_escape_string($_GET['blog']);

// la fonction mysql_real_escape_string permet de lutter contre les injections de code sql. Avant d'exécuter cette fonction, l'ouverture à votre base de donnée doit être faite 


 $r=explode(" ",$m);   $t=count($r);

 // on découpe notre mot en bloc de mots individuelles pour faire la recherche sur chaque mot. Ainsi si nous avons entrée le monde, la recherche portera sur le et sur monde. Le but ici est d'offrir tout les résultats possibles



$req="select distinct * from article where Publie=1 and ( ";

for($i=0;$i<$t;$i++) {

if($i==0) $req.="(Mot_cles like '%$r[$i]%' or titre like '%$r[$i]%') ";

else $req.=" or (Mot_cles like '$r[$i]%' or titre like '%$r[$i]%') "; 
   }        
  

  $req.=" ) ";


// ci-dessous la requête que nous composons avant de l'éxécuter, comme vous le constater, cette requête prend en considération tout les mots de notre phrase de recherche


   $res=mysql_query($req);

// une fois notre requête prête, nous pouvons l'exécuter et ensuite traiter l'affichage à l'intérieure d'une boucle tel myql_fetch_array(), on peut aussi utiliser mysql_num_rows pour définir le nombre d'article trouvée ou alors dire s'il n'y a aucun article correspondant à la recherche

Remarques :

mysql_num_rows($res) : mysql_num_rows () prend en paramètres le resultats de l'exécution et retourne le nombre d'enregistrement trouvée (un entier)
 
 mysql_fetch_array($res) : cette fonction prend aussi en paramètres le résultat de l'exécution, mais permet d'afficher chaque ligne d'enregistrement trouvée.

Plus d'explication sur ces fonctions sur internet
 
  }

// fin du code


Ainsi donc ce termine cet article ou nous avons vu comment mettre en place un moteur de recherche, pour toute question ou suggestions, merci d'en parlé.

Bonne lecture !


4 commentaires:

  1. Salut jeune homme, je loue ton initiative, bon courage et bonne continuation. Quand je passerai très souvent, pour un bel échange.
    Que Dieu te garde vieux frère.

    DIARRA

    RépondreSupprimer
  2. merci pour vos commentaires et vos appréciations. je serais très heureux de partager avec vous sur cet espace !

    RépondreSupprimer