J'ai voulu mettre un moteur de recherche sur mon site web (moteur'ed) et dès que je lance la recherche avec une requète ou sans, quoique je fasse j'obtient se message d'erreur:
Vous avez activé la recherche sans avoir préalablement saisi votre requête.
Cliquez ici pour effectuer une nouvelle recherche.
Voici le code HTML que j'utilise pour envoyer le requete:
<?php
// #####################################################################################
// =============================================================================
// Moteur'Ed 1.0 - (c) 2001 Thierry Arsicaud (deltascripts@ifrance.com)
// =============================================================================
// *************************************************************************************
// Configuration des paramètres d'affichage des résultats.
// Les intitulés des pages correspondantes sont affichés dans un tableau, par groupe de
// n réponses (paramètre à spécifier)
// *************************************************************************************
// === Paramètres d'affichage du Tableau ===
$largeurTableau="95%"; // Largeur du Tableau
$NombreRepPages=10; // Nombre n d'intitulés de pages Web à afficher par pages de résultat
$NombreRepMax=200; // Nombre maximum de résultats à traiter par le moteur
$policeResultats="verdana"; // Police de caractères utilisée pour l'affichage des résultats
$couleurPoliceResultats="#000000"; // Couleur de la police de caractères utilisée pour l'affichage des résultats
// #####################################################################################
?>
<html>
<head>
<title>Moteur'Ed - Résultats de la recherche</title>
</head>
<body>
<!- inserez la première partie de votre code html ici ->
<?php
// ####################################################################################
// *******************************************************************************
// Localisation de l'index dans lequel doit être effectuée la recherche
// *******************************************************************************
$fichierIndex="indexsite.dat";
// *******************************************************************************
// Liste des "mots vides", dont les valeurs ne doivent pas être prises en compte
// lors des recherches dans l'index
// *******************************************************************************
$motsVides=" and or et ou le la les un une du de des a à au aux son sa ses ne ni non sauf ce ces cet je tu il elle on nous vous ils elles etc mon ma ton ta vos se y en ";
// *******************************************************************************
// Affichage d'un message d'avertissement dans le cas où le site n'a pas encore
// été indexé
// *******************************************************************************
if(!file_exists("indexsite.dat")) {
print("Le site Web n'a pas encore été indexé : veuillez exécuter le <b>script d'indexation</b> avant d'effectuer votre première recherche.\n");
exit;
}
// *******************************************************************************
// Affichage d'un message d'avertissement dans le cas de figure où l'utilisateur
// a activé la recherche sans avoir préalablement saisi de requête ($requete est nul)
// *******************************************************************************
if(!$requete) {
print("<center>\n");
print("<font face=\"$policeResultats\" size=\"-1\" color=\"$couleurPoliceResultats\">\n");
print("Vous avez activé la recherche sans avoir préalablement saisi votre requête.<br>");
print("<a href=\"moteured.php\">Cliquez ici</a> pour effectuer une nouvelle recherche.<br>\n");
print("</font>\n");
print("</center>\n");
}
else {
// *******************************************************************************
// Cas de figure où l'utilisateur a bien saisi une requête
// *******************************************************************************
// *******************************************************************************
// Analyse de la requête et préparation de la recherche. La requête (entrée par
// l'utilisateur dans la valeur $requete) est décomposée en une série de mots clés,
// stockés dans les tableaux $expressions et $motsCles
// *******************************************************************************
// === Premier nettoyage de la requête formulée par l'utilisateur ===
$requete=trim(stripslashes($requete));
// ***************************************************
// === Extraction des expressions entre guillemets ===
// ***************************************************
$requete1=$requete;
$expressions[]="Liste des expressions";
while($testExpress=ereg("[\"]([^\"]+)[\"]",$requete1,$corresExpress)) {
$exp=$corresExpress[1];
$expressions[]=$exp;
$requete1=ereg_replace($corresExpress[0],"",$requete1);
}
$nombreExpressions=count($expressions)-1; // Nombre d'expressions à analyser
// ********************************
// === Extraction des mots-clés ===
// ********************************
// === Définition de la fonction netGuil,
// utilisée pour le nettoyage des termes
// isolés compris entre guillemets ===
function netGuil($term) {
if(ereg("^[\"]*([^\"]+)[\"]*$",$term,$corres)) {
$reps=$corres[1];
return $reps;
}
else {
return($term);
}
}
// === Stockage des valeurs dans le tableau $motsCles ===
$requete2=$requete;
$motsCles[]="Liste des mots-clés";
$mot=trim(stripslashes(strtok($requete2," ")));
if(!(ereg("[ ]".$mot."[ ]",$motsVides))) {
$motsCles[]=netGuil($mot);
}
while($mot=trim(stripslashes(strtok(" ")))) {
if($mot and (!(ereg("[ ]".$mot."[ ]",$motsVides)))) {
$motsCles[]=netGuil($mot);
}
}
$nombreMotsCles=count($motsCles)-1; // Nombre de mots-clés à analyser
// ************************************************************************************
// Ouverture du fichier indexsite.dat et stockage des lignes dans le tableau $contenuIndex
// ************************************************************************************
$contenuIndex=file($fichierIndex);
$nlignesIndex=count($contenuIndex);
$nombreDocumentsIndexes=($nlignesIndex-1)/4;
// ************************************************************************************
// Stockage des données dans les tableaux $cheminDocument, $titreDocument,
// $descriptionDocument, $texteDocument
// ************************************************************************************
for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {
$cheminDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+1]));
$titreDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+2]));
$descriptionDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+3]));
$texteDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+4]));
}
// ***************************************************************************
// ========================================================
// === Lancement de la procédure d'évaluation des pages ===
// ========================================================
//
// Chaque page est passée en revue et se voit attribuer des points
// selon les règles suivantes :
//
// - 2 point si la requête (considérée comme expression) est présente dans le titre
// - 1 point si la requête (considérée comme expression) est présente dans le texte indexé
//
// - 2 point par expression présente dans le titre
// - 2 point par mot-clé présent dans le titre
//
// - 1 point par expression présente dans le texte indexé
// - 1 point par mot-clé présent dans le texte indexé
//
// Note : une ou plusieurs expressions présentes donnent naturellement un meilleur
// score à la page
//
// ***************************************************************************
// Les différents documents indexés spnt passés en revue et analysés
for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {
$score[$compt]=0;
// === Recherche de la requête (considérée comme expression) dans le titre du document : 2 points
//if(eregi("(^|[ .,:;!?'()])".$requete."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
// === Recherche de la requête (considérée comme expression) dans le texte indexé : 1 points
if(eregi("(^|[ .,:;!?'()])".$requete."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
for($a=1;$a<=$nombreExpressions;$a++) {
// ===== Recherche des expressions =====
// === Recherche de l'expression dans le titre du document : 2 points s'il y a correspondance
if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
// === Recherche de l'expression dans le texte indexé : 1 point s'il y a correspondance
if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
}
for($b=1;$b<=$nombreMotsCles;$b++) {
// ===== Recherche des mots-clés =====
if(eregi("([^*]*)[*]",$motsCles[$b],$corMotCle)) {
// l'utilisateur a fait suivre le mot-clé d'une astérisque (il faut donc étendre la recherche)
// === Recherche du mot-clé dans le titre du document : 2 points s'il y a correspondance
if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
// === Recherche du mot-clé dans le texte indexé : 1 point s'il y a correspondance
if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
}
else {
// le mot-clé ne comporte pas d'astérisque
// === Recherche du mot-clé dans le titre du document : 2 points s'il y a correspondance
if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;
// === Recherche du mot-clé dans le texte indexé : 1 point s'il y a correspondance
if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;
}
}
}
// ************************************************************************************
// Tri des résultats en vue de leur affichage :
// Les pages seront affichées de la plus pertinente à la moins pertinente
// ************************************************************************************
// Détermination du score le plus élevé parmi toutes les pages analysées
$HiScore=max($score);
// TRI du tableau à l'aide de la fonction asort
arsort($score);
// Création du tableau $documentsCorrespondantsOrd
$documentsCorrespondantsOrd[]=0;
for(reset($score);$cle=key($score);next($score)) {
if(current($score)>0) {
$documentsCorrespondantsOrd[]=$cle;
}
}
$nombreCorrespondances=count($documentsCorrespondantsOrd)-1;
// ************************************************************************************
// Les résultats sont affichés dans un tableau, dont les caractéristiques ont été
// précisées en début de script.
// Note : les pages sont affichées dans l'ordre décroissant de leur pertinence
// ************************************************************************************
print("<table width=\"$largeurTableau\" border=\"0\" align=\"center\"> \n"); // Début du code pour l'affichage du tableau
print("<tr><td> \n");
if($nombreCorrespondances<1) {
print("<center> \n");
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("Désolé, aucune page ne correspond à la recherche : '<b>$requete</b>'. <br><br> \n");
print("</font> \n");
print("</center> \n");
}
else {
if(@ !$p) $p=1;
if($nombreCorrespondances==1) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("La requête '<b>$requete</b>' a donné <b>1</b> résultat. <br>\n");
print("</font> \n");
}
else {
if($nombreCorrespondances>=$NombreRepMax) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("La requête '<b>$requete</b>' a donné plus de $NombreRepMax résultats. <br>\n");
print("</font> \n");
$nombreCorrespondances=$NombreRepMax;
}
else {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("La requête '<b>$requete</b>' a donné <b>$nombreCorrespondances</b> résultats. <br>\n");
print("</font> \n");
}
}
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("Liste des pages <b>".$p."</b> à <b>".(min(($p+$NombreRepPages-1),$nombreCorrespondances))."</b> :<br><br>");
print("</font> \n");
for($compt=$p;$compt<=min(($p+$NombreRepPages-1),$nombreCorrespondances);$compt++) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("<b>$compt</b>. <a href=\"".$cheminDocument[$documentsCorrespondantsOrd[$compt]]."\"><b>".$titreDocument[$documentsCorrespondantsOrd[$compt]]."</b></a><br> \n");
print($descriptionDocument[$documentsCorrespondantsOrd[$compt]]."<br><br> \n");
print("</font> \n");
}
print("<center> \n");
if(($p-$NombreRepPages)>0) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("<a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".($p-$NombreRepPages)."\"><< page précédente</a> \n");
print("</font> \n");
}
if($nombreCorrespondances>$NombreRepPages) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
for($a=1;$a<=(floor(($nombreCorrespondances-1)/$NombreRepPages)+1);$a++) {
if((floor($p/$NombreRepPages)+1)==$a) {
print("$a \n");
}
else {
@ print("<a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".(($a-1)*$NombreRepPages+1)."\">$a</a> \n");
}
}
print("</font> \n");
}
if(($p+$NombreRepPages)<=$nombreCorrespondances) {
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
@ print(" <a href=\"resultats.php?requete=".rawurlencode($requete)."&p=".($p+$NombreRepPages)."\">page suivante >></a> \n");
print("</font> \n");
}
print("</center> \n");
}
// **************************************************************************
// Affichage du formulaire permettant d'effectuer une nouvelle recherche
// **************************************************************************
print("<form action=\"resultats.php\" method=\"post\"> \n");
print("<table align=\"center\"> \n");
print("<tr><td align=\"center\"> \n");
print("<font face=\"$policeResultats\" color=\"$couleurPoliceResultats\" size=\"-1\"> \n");
print("Effectuer une nouvelle recherche: <br> \n");
print("</font> \n");
print("</td></tr> \n");
print("<tr><td align=\"center\"> \n");
print("<input type=\"text\" name=\"requete\" size=\"20\"> \n");
print(" ");
print("<input type=\"submit\" value=\"Chercher\"> \n");
print("</td></tr> \n");
print("</table> \n");
print("</form> \n");
print("<center><font face=\"$policeResultats\" size=\"-2\" color=\"$couleurPoliceResultats\">Avec la complicité de <a href=\"http://www.echodelta.net/scriptsphp/moteured/\" target=\"_blank\">Moteur'Ed 1.0</a>, moteur de recherche interne en PHP.\n");
print("</td></tr> \n");
print("</table> \n");
// **************************************************************************
// Sauvegarde de la requête dans le fichier req.txt
// **************************************************************************
$idFiqReq=fopen("req.txt","a+");
fputs($idFiqReq,$requete."\n");
fclose($idFiqReq);
}
// ####################################################################################
?>
<!- inserez la seconde partie de votre code html ici ->
</body>
</html>