Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Dreamgratuit - Philosophie
6 août 2009

Page de résultats : implémentation du full text - tutorial moteur de recherche full text multi-critère avec Dreamweaver

Nous allons maintenant implémenter le full text dans notre moteur de recherche.

Il va nous falloir :

  1. modifier la requête SQL permettant d'effectuer une recherche full text
  2. créer le code permettant d'isoler les différents mots qui pourraient être saisis dans le champ de recherche du formulaire
  3. Enfin nous allons devoir traiter 2 cas différents : lorsque la personne a saisi des mots clés dans le champ recherche et lorsqu'elle s'est contentée d'utiliser les critères de sélection (puisque qu'alors le full text n'est pas appliqué, une requête full text ne pouvant fonctionner "à vide").

Mettez-vous en mode code. Copiez le code PHP créé par Dreamweaver pour votre requête et sauvegarder le dans un document texte (vous vous en re-servirez par la suite). Modifiez maintenant la ligne de la requête SQL comme suit (pour en savoir plus sur la syntaxe du full-text, reportez-vous au codex MySQL) :

$query_rsRecherche = sprintf("SELECT ouvrages.titre, auteurs.nom_auteur, editeurs.nom_editeur FROM ouvrages, auteurs, editeurs WHERE MATCH (ouvrages.titre, ouvrages.descriptif, auteurs.nom_auteur, editeurs.nom_editeur) AGAINST ('$liste_recherche' IN BOOLEAN MODE) AND ouvrages.code_edit LIKE %s AND ouvrages.code_aut LIKE %s AND auteurs.code_aut = ouvrages.code_aut AND editeurs.code_edit = ouvrages.code_edit", GetSQLValueString($colname2_rsRecherche, "text"),GetSQLValueString($colname3_rsRecherche, "text"));

Repérez maintenant le code que Dreamweaver avait créé pour le champ de recherche. Supprimez les lignes suivantes

$colname_rsRecherche = "-1";
if (isset($_POST['recherche'])) {
  $colname_rsRecherche = $_POST['recherche'];
}

Insérez le code suivants à la fin des lignes concernant les deux variables $colnames restants  :

$recherche = $_POST['recherche'];
$recherche = strip_tags($recherche); // pour sécurisation contre injection code js ou HTML
$recherche = mysql_real_escape_string($recherche); // pour sécurisation contre injection code SQL
if ($recherche != "") { // SI LE CHAMP RECHERCHE N'EST PAS VIDE
  $liste_cles = explode(" ", $colname_rsRecherche);  // on mets les mots saisis dans un tableau
  $liste = array(); // on instancie le tableau
  foreach($liste_cles as $cle)    {
            $cle = "+".$cle."*"; // ajout de l'opérateur inter-mots ET et de la troncature à droite pour chaque mot conformément à la syntaxe full text de MySQL
array_push($liste, $cle); // on met les mots dans le tableau instancié
            }
  $liste_recherche = implode(" ", $liste);  // passage du tableau en chaîne de caractères et ajout de l'espace entre chaque mot clé.

En dessous vient s'afficher le code de la recherche full-text. Nous venons de traiter le cas où la personne a saisi un mot clé dans le champ. Nous devons maintenant traiter le cas où ceci n'est pas vrai.

En dessous du code :

$rsRecherche = mysql_query($query_rsRecherche, $maConnexion) or die(mysql_error());
$row_rsRecherche = mysql_fetch_assoc($rsRecherche);
$totalRows_rsRecherche = mysql_num_rows($rsRecherche);

Ajoutez le code suivant qui comprend la requête SQL que vous aviez collé dans un document texte mais légèrement modifiée :

} else { // SI LE CHAMP RECHERCHE EST VIDE

mysql_select_db($database_maConnexion, $maConnexion);
$query_rsRecherche = sprintf("SELECT ouvrages.titre, ouvrages.descriptif, auteurs.nom_auteur, editeurs.nom_editeur FROM ouvrages, auteurs, editeurs WHERE ouvrages.code_edit LIKE %s AND ouvrages.code_aut LIKE %s AND auteurs.code_aut = ouvrages.code_aut AND editeurs.code_edit = ouvrages.code_edit", GetSQLValueString($colname2_rsRecherche, "text"),GetSQLValueString($colname3_rsRecherche, "text")); // on a supprimé ici ce qui concernait le champ recherche
$rsRecherche = mysql_query($query_rsRecherche, $maConnexion) or die(mysql_error());
$row_rsRecherche = mysql_fetch_assoc($rsRecherche);
$totalRows_rsRecherche = mysql_num_rows($rsRecherche);
}

Voilà c'est terminé : il ne vous reste plus qu'à tester votre application !

Sommaire du tutorial

  1. Introduction : concept de full text
  2. Structure et paramétrage de la base
  3. Création de la page de recherche
  4. Page de résultat : fonctionnement multi-critère
  5. Implémentation du full text
Publicité
Commentaires
D
Salut tout dabord merci à toi pour ce tuto il est parfait.<br /> <br /> <br /> <br /> Voilà mon test,faire "admin" pour la recherche.:<br /> <br /> <br /> <br /> http://lcsw.fr/test/search/recherche2.php<br /> <br /> <br /> <br /> Par contre impossible d'intégrer cette derniére parti j'ai tjrs une page blanche, j'y suis depuis le 27/07, la preuve:<br /> <br /> <br /> <br /> http://dreamgratuit.canalblog.com/archives/2009/07/31/14601328.html<br /> <br /> <br /> <br /> tout en bas le dernier post<br /> <br /> <br /> <br /> peux-tu m'aider par mail, stp, merci.
W
Bonjours, merci encore pour ce bon tutoriel,<br /> <br /> Je peine simplement à mettre en place avec la fonction Jeu d'enregistrement pour les fonction et la connection Mysql.<br /> Pourriez-vous m'envoyer le contenu php et mysql pour que je puisse terminer ce moteur de recherche. merci beuacoup
Archives
Publicité
Publicité