Menu

Petit moteur de recherche [Fermé]

- - Dernière réponse : avion-f16
Messages postés
18264
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 mars 2019
- 16 mai 2010 à 14:13
Bonjour, je débute en php et je souhaite créer un petit moteur de recherche dans mon site.
Lorsque je le mets en ligne, j'ai toujours se message d'erreur :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/venteart/public_html/mrech.php on line 77

Voici le code complet (je me suis basé sur un livre de programmation en php) :

<html>
<head>
<title>Résultat de la recherche</title>
</head>

<body>
<?php

//Test si la page correspond à la recherche
function test() {
global $texte, $l1, $l2, $l3, $l4;
$sat1=true;
$sat2=true;
if ($l1 != ' ' && strpos ($texte, $l1)===false) {$sat1=false;}
if ($l2 != ' ' && strpos ($texte, $l2)===false) {$sat1=false;}
if ($l1 == ' ' && $l2 == ' ') {$sat1=false;}
if ($l3 != ' ' && strpos ($texte, $l3)===false) {$sat2=false;}
if ($l4 != ' ' && strpos ($texte, $l4)===false) {$sat2=false;}
if ($l3 == ' ' && $l4 == ' ') {$sat2=false;}
return $sat1 || $sat2;
}

//Recuperation des locutions à chercher
$l1 = strtoupper (stripslashes($_POST['l1']));
$l2 = strtoupper (stripslashes($_POST['l2']));
$l3 = strtoupper (stripslashes($_POST['l3']));
$l4 = strtoupper (stripslashes($_POST['l4']));

//Lecture de la page de formulaire
$fp=fopen('mrech.htm', 'r');
$page=fread($fp, 32000);
fclose($fp);
$psb=strpos($page, '</body>');
$page=substr($page, 0, $psb);
$page.="\nRecherche de "; $l1;
if($l2!='') {$page.= 'ET'.$l2;}
if($l3!='') {$page.= 'OU'.$l3;}
if($l4!='') {$page.= 'ET'.$l4;}
$page.="<br /><br />\n";

//Lecture du catalogue du répertoire racine
$drac=getcwd();
$e=opendir($drac);
while (($f=readdir($e) !== false)){
if (($f != '.') && ($f != '..')){
if (strpos($f, '.')===false) {
$dirs[]=$f;
}else{
if (strpos($f, '.htm') !==false) {
$fhtm[]=$f;
}
}
}
}

//lecture des sous-répertoires
foreach ($dirs as $rep){
$dr=$drac.'/'.$rep;
$e=opendir($dr);
while (($f=readdir($e)) !== false) {
if (($f!='.') && ($f != '..')) {
if (strpos($f, '.') !== false){
if (strpos($f, '.htm') !== false){
$fhtm[]=$rep.'/'.$f;
}
}
}
}
}

//Examen des fichiers
foreach($fhtm as $fnam){
$fich=fopen($fnam, 'r');
$texte=strtoupper(fread($fich, 32000));
fclose($fich);
if (teste()){
$page.='<a href="'.$fnam'">'.$fnam.'</a>  ';
}
}
echo $page. "\n</body></html>";
?>

</body>
</html>

Est-ce que quelqu'un peut m'aider? Merci
Afficher la suite 

7 réponses

Messages postés
18264
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 mars 2019
5024
0
Merci
Tu nous aurais seulement donné la ligne 77 ...
$page.='<a href="'.$fnam'">'.$fnam.'</a>  ';
J'ai souligné l'endroit où est le problème, j'espère que tu comprendras.
0
Merci
S'il s'agit d'un . à rajouter, ca m'affiche deux autres erreurs :

Warning: Invalid argument supplied for foreach() in /home/venteart/public_html/mrech.php on line 57

Warning: Invalid argument supplied for foreach() in /home/venteart/public_html/mrech.php on line 72
Messages postés
18264
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 mars 2019
5024
0
Merci
$fhtm et $dirs ne sont pas des array.
0
Merci
J'ai effectué des corrections (rajouter des } et un . avant $l1), mais maintenant j'ai ça:

Warning: opendir(/home/venteart/public_html/error_log) [function.opendir]: failed to open dir: Not a directory in /home/venteart/public_html/mrech.php on line 59

Warning: readdir(): supplied argument is not a valid Directory resource in /home/venteart/public_html/mrech.php on line 60

Fatal error: Call to undefined function teste() in /home/venteart/public_html/mrech.php on line 76
Messages postés
18264
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 mars 2019
5024
0
Merci
Es-tu sûr que "/home/venteart/public_html/error_log" soit un dossier ?
Pour la dernière erreur, tu n'as pas défini la fonction teste().
0
Merci
Justement, je viens de supprimer error_log et quand je le fais, j'ai :

Fatal error: Call to undefined function teste() in /home/venteart/public_html/mrech.php on line 76
Messages postés
18264
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 mars 2019
5024
0
Merci
Ça ne veut dire que tu n'as pas écrit la fonction teste().