moteur de recherche - PHP - Programmation
Marsh Posté le 26-02-2008 à 09:40:55
ReplyMarsh Posté le 26-02-2008 à 11:03:57
if ($_POST['action']=="Recherche Interne" && $_POST['recherche']!="" ) {
essayes de ne pas utiliser des espaces dans les variables en POST!!
Marsh Posté le 26-02-2008 à 12:10:30
En fait il me met:
Warning: Invalid argument supplied for foreach() in /mnt/150/sdb/9/d/dante20007/moteur.php on line 8
A cette ligne:
foreach ($files as $filename) { //boucle qui ouvre les fichiers 1 par 1
Marsh Posté le 26-02-2008 à 12:39:08
1. Merci de placer les citations de codes dans tes post entre [code ] et [/code ] (sans les espaces).
2. Merci d'indenter ton code.
Vraisemblablement, foreach ne reçoit pas un tableau. Sinon il gueulerait pas. Donc ce qui est renvoyé par glob ne doit pas être un tableaux...
Dans quel cas glob retourne autre chose qu'un tableau?
Citation : glob() retourne un tableau contenant les fichiers et les dossiers trouvés, un tableau vide si aucun fichier/dossier n'est trouvé ou FALSE en cas d'erreur. |
En cas d'erreur, c'est vague...
M'enfin on peut quand même vérifier si ça vient de là :
Code :
|
Si ça t'affiche le message 'erreur', je dirais qu'il doit y avoir un problème dans le masque que tu donne à glob.
Marsh Posté le 26-02-2008 à 14:22:06
oui je suis sur, regarde le code que j'ai mis:
Code :
|
c'est bien ca?
Marsh Posté le 26-02-2008 à 14:25:32
Ok, mais je préfère demander, on sait jamais.
Donc le problème viendrait de glob, et je sais pas trop ce qui pourrait ne pas aller... En même temps j'aime pas trop cette fonction, je préfère les bon vieux opendir(), readdir() et closedir() que tu peux également essayer pour ton script.
Marsh Posté le 26-02-2008 à 14:26:30
est ce que tu pourrais me dire comment faire par rapport au code que j'ai mis plus haut?
Marsh Posté le 26-02-2008 à 16:13:42
Tu peux remplacer la ligne où il y a glob par :
Code :
|
Ça fait exactement le même boulot que ton glob() et au moins ça te lancera des erreurs en cas de problème.
Et à la limite lire les fichiers directement dans cette boucle plutôt que d'en stocker la liste puis boucler de nouveau dessus par la suite.
Marsh Posté le 25-02-2008 à 12:57:13
bonjour, je voudrais mettre un petit moteur de recherche en php pour mes pages html, mais mon code ne fonctionne pas, pouvez vous me dire pourquoi?
<?php /* -------Déclaration des variables ----------*/
$i=0; //initialisation du compteur de résultat à zéro
$resultat=""; //initialisation de la chaine qui stocke les fichiers de résultats
$trouve=0; //initialisation de la vraible "drapeau"
if ($_POST['action']=="Recherche Interne" && $_POST['recherche']!="" ) {
$files = glob("*.html" ); //changer ici par l'extension voulue
foreach ($files as $filename) { //boucle qui ouvre les fichiers 1 par 1
$fichier = fopen($filename,"r" );
while (!feof ($fichier)) {
$donnees = strtolower(strip_tags(fgets($fichier, 4096)));
$pos = strpos($donnees, strtolower($_POST['recherche']));
if ($pos>0) $trouve=1;
}//fin de la boucle
if ($trouve==1) {
$resultat.="<a href='$filename'>$filename</a><br>";
$i++;
}
fclose($fichier);
$trouve=0;
}
}
?>
<html>
<head>
</head>
<body>
<!-- formulaire de recherche -->
<form name="moteur" method="post">
<input type="text" name="recherche">
<input type="submit" name="action" value="Recherche Interne">
</form>
<!--fin du formulaire -->
<?
//affichage des resultats
echo "<h4>$i Résultat(s) pour l'occurence : $recherche </h4>";
echo $resultat;
if ($resultat=="" ) echo "pas de résultat trouvé";
?>
</body>
</html>