Moteur de recherche interne en php

Fermé
Hadès - 18 sept. 2010 à 11:49
 Hadès - 18 sept. 2010 à 11:51
Bonjour,



Je suis en train de créer un site sur la mythologie grecque, comme celui-ci contient beaucoup d'informations, j'ai donc décidé d'y mettre un petit moteur de recherche interne en php.

Mais lorsque je le mets en ligne j'ai toujours ce message au dessus de ma page :

Warning: Invalid argument supplied for foreach() in /home/users/00/1e/34/home/www/recherche/mrech.php on line 58

J'ai beau chercher, je ne sais pas quoi faire (je n'y connais rien en php, mais je voulais essayer pour comprendre)

Quelqu'un peut-il m'aider?
A voir également:

1 réponse

Voilà le code au juste:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>

<body>
<?php
//teste si la page correspond à la recherhce
function teste()
{
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;
}

//Récupération des locutiions à rechercher
$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 sou-répertoires
foreach ($dirs as $srep)
{
$dr = $drac.'/'.$srep;
$e = opendir ($dr);
while (($f = readdir($e)) !== false){
if (($f != '.') && ($f != '..')){
if (strpos ($f, '.') !== false){
if (strpos ($f, '.htm') !== false){
$fhtm[] = $srep.'/'.$f;
}
}
}
}
}

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

</body>
</html>
0