Création d'un moteur de recherches
Comment créer un moteur de recherches sur un site dynamique? C'est ce que nous allons voir dans cette partie
.
On créé un nouveau fichier à partir du fichier gabarit.php que l'on va nommer moteur.php.
Un moteur de recherches, c'est au point de départ un simple formulaire.
<form method="post" action="moteur.php"> <p> <input size="50" name="requete" value="" type="text"/> <input value="Rechercher" name="submit" type="submit"/> </p> </form>
Ensuite, il faut traiter la requête de l'utilisateur :
<?php if(isset($_POST['submit'])) { //On nettoie un peut la requête $requete = trim(stripcslashes(htmlspecialchars($_POST['requete']))); } ?>
Une fois la requête "néttoyé", on se connecte à la base de données et on effectue une recherche de la requête dans les champs titre, description et texte.
<?php if(isset($_POST['submit'])) { //On nettoie un peut la requête $requete = trim(stripcslashes(htmlspecialchars($_POST['requete']))); //On se connecte à la base de données include('connexion_bd.php'); mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.'); $query = mysql_query("SELECT id,titre,description,texte FROM CONTENU WHERE titre
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' OR description
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' OR texte
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' ORDER BY id ASC") or die (mysql_error()); } ?>
Pour déterminer les limites d'un mot, on utilise ici la fonction REGEXP [[:<:]]$requete [[:>:]]. Généralement, on a tendance à utiliser la fonction LIKE '%$requete%' mais celle-ci nous ressort parfois beaucoup de résultats inutiles...
La suite du code est simple :
- On vérifie si la requête ressort un résultat.
- Si il y a au moins un résultat, on affiche le titre+lien et la description de la page concernée.
- Si il n'y a aucun résultat, on affiche un texte.
<?php if(isset($_POST['submit'])) { //On nettoie un peut la requête $requete = trim(stripcslashes(htmlspecialchars($_POST['requete']))); //On se connecte à la base de données include('connexion_bd.php'); mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.'); $query = mysql_query("SELECT id,titre,description,texte FROM CONTENU WHERE titre
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' OR description
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' OR texte
REGEXP '[[:<:]]".mysql_real_escape_string($requete)."[[:>:]]' ORDER BY id ASC") or die (mysql_error()); //On utilise la fonction mysql_num_rows pour compter les résultats $nb_resultats = mysql_num_rows($query); //Si le nombre de résultats est différent de 0, on continue if($nb_resultats != 0) { //On affiche le nombre de résultats echo 'Il existe <b>'.$nb_resultats.'</b>'; if($nb_resultats > 1) // on vérifie le nombre de résultats pour orthographier correctement. { echo ' résultats'; } else { echo ' résultat'; } echo ' pour votre recherche "<b>'.$requete.'</b>" trouvé :<br/>'; //On attribue un chiffre pour chaque enregistrement trouvé $i = "1"; //On boucle pour afficher la liste des enregistrements trouvés while($donnees = mysql_fetch_array($query)) { echo '<div class="cadre"><big><big>'.$i.'-<a title="'.$donnees['titre'].'" href="page.php?id='.$donnees['id'].'">'.$donnees['titre'].'</a></big></big><br/><p>'.$donnees['description'].'</p></div>'; $i++; } //on ferme if($nb_resultats > 1) } //Si il n'y a rien else { echo '<p>Nous n\'avons trouvé aucun résultats pour votre recherche "<b>
'.$requete.'</b>" !</p>'; } //On ferme if(isset($_POST['requete']) } //On ferme mysql mysql_close(); ?>
Ceci étant fait, (je vous laisse la mise en page ^^) il nous reste plus qu'à afficher le formulaire sur toutes les pages. Personnellement, je l'ai ajouté en fin de menu du fichier menu.php.
<h1>Recherches</h1> <form method="post" action="moteur.php"> <p><input size="20" name="requete" value="" type="text"/> <input value="Rechercher" name="submit" type="submit"/></p> </form> </div>

Signaler une erreur
Création d'un flux rss dynamique
Protection de l'administration et petit plus
Comment rendre la page d'accueil dynamique?


