Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1432 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  moteur de recherche

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

moteur de recherche

n°1691864
snoopi2000​7
Posté le 25-02-2008 à 12:57:13  profilanswer
 

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>

mood
Publicité
Posté le 25-02-2008 à 12:57:13  profilanswer
 

n°1692588
PierreC
Posté le 26-02-2008 à 09:40:55  profilanswer
 

réponse à coté, mais renseigne toi sur htdig


---------------
Du tofu en Alsace : www.tofuhong.com
n°1692634
houyass
Posté le 26-02-2008 à 11:03:57  profilanswer
 

if ($_POST['action']=="Recherche Interne" && $_POST['recherche']!="" ) {
 
essayes de ne pas utiliser des espaces dans les variables en POST!!

n°1692691
snoopi2000​7
Posté le 26-02-2008 à 12:10:30  profilanswer
 

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

n°1692719
dwogsi
Défaillance cérébrale...
Posté le 26-02-2008 à 12:39:08  profilanswer
 

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?

 

http://fr.php.net/glob

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 :
  1. $files = glob("*.html" );
  2. if(!$files) die('Erreur');
  3. foreach ($files as $filename)
 

Si ça t'affiche le message 'erreur', je dirais qu'il doit y avoir un problème dans le masque que tu donne à glob.


Message édité par dwogsi le 26-02-2008 à 12:39:40

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1692734
snoopi2000​7
Posté le 26-02-2008 à 12:53:02  profilanswer
 

en effet cela m'affiche le message erreur

n°1692768
snoopi2000​7
Posté le 26-02-2008 à 13:22:54  profilanswer
 

Que dois je faire??

n°1692802
dwogsi
Défaillance cérébrale...
Posté le 26-02-2008 à 14:20:05  profilanswer
 

Tu passes bien *.html à glob()?
Si oui je vois pas trop de raison pour que ça renvoie false.
Mais vérifie bien ce que tu lui passe comme masque.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1692806
snoopi2000​7
Posté le 26-02-2008 à 14:22:06  profilanswer
 

oui je suis sur, regarde le code que j'ai mis:  

Code :
  1. $files = glob("*.html" );


c'est bien ca?

n°1692809
dwogsi
Défaillance cérébrale...
Posté le 26-02-2008 à 14:25:32  profilanswer
 

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.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
mood
Publicité
Posté le 26-02-2008 à 14:25:32  profilanswer
 

n°1692811
snoopi2000​7
Posté le 26-02-2008 à 14:26:30  profilanswer
 

est ce que tu pourrais me dire comment faire par rapport au code que j'ai mis plus haut?

n°1692858
dwogsi
Défaillance cérébrale...
Posté le 26-02-2008 à 16:13:42  profilanswer
 

Tu peux remplacer la ligne où il y a glob par :

Code :
  1. $files = array();
  2. $dir = opendir('./');
  3. while($file = readdir($dir))
  4.    if (is_file('./'.$file) && substr($file,-4,4) == '.html' )
  5.        $files[] = $file;

Ç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.


Message édité par dwogsi le 26-02-2008 à 16:17:30

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  moteur de recherche

 

Sujets relatifs
Moteur de recherche dans BDD MySQLmoteur de recherche en php
Moteur de recherche multi sitesMoteur de recherche de fichiers
Moteur de recherche avancéMoteur de recherche dans mon site ???
[résolu] Moteur de recherche interne avec fichier pdfproblème avec un moteur de recherche
moteur de recherche interneExpression régulière pour moteur de recherche...
Plus de sujets relatifs à : moteur de recherche


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR