Petit moteur de recherche
derrick
-
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19252 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Petit moteur de recherche
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Copernic moteur de recherche - Télécharger - Navigateurs
- Pourquoi mon moteur de recherche change tout seul ✓ - Forum Réseaux sociaux
- Petit 1 comme ² ✓ - Forum Bureautique
7 réponses
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.
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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().
Pour la dernière erreur, tu n'as pas défini la fonction teste().