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 !
Pratique ce tuto! lik it
RépondreSupprimerSalut jeune homme, je loue ton initiative, bon courage et bonne continuation. Quand je passerai très souvent, pour un bel échange.
RépondreSupprimerQue Dieu te garde vieux frère.
DIARRA
merci pour vos commentaires et vos appréciations. je serais très heureux de partager avec vous sur cet espace !
RépondreSupprimerSuper interessant!!
RépondreSupprimer