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

  FORUM HardWare.fr
  Programmation
  PHP

  PHP - code moteur de recherche : ça coince!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP - code moteur de recherche : ça coince!

n°1437781
miltonis
Posté le 06-09-2006 à 15:50:22  profilanswer
 

Bonjour à tous,
 
j'ai récupéré un modèle de code pour moteur de recherche sur les keywords des balises meta des pages du site concerné.
le script suivant sert à recenser toutes les pages d'un site et en récupérer le contenu des balises meta pour les intégrer dans une table créée auparavant.
Le pbm est qu'il n'insère que le prmier fichier sur lequel il tombe, les autres.......capout!
 
je ne vois pas d'où vient le problème et bien que je ne comprenne pas trop ce qu'est le "." et le ".." en bas de code, je ne pense pas que ça ait un rapport.
voici le code enquestion:

Code :
  1. function ScanDir($Directory){
  2. $MyDirectory = opendir($Directory);
  3.  while($Entry = readdir($MyDirectory)) {
  4.   echo "<br>entry= $Entry<br>";
  5.   echo "repertoire= $Directory<br>";
  6.   echo "chemin= $Directory/$Entry<br>";
  7.  
  8.    /*  vérifie que le fichier n'est pas un répertoire  */
  9.   if(is_dir($Entry)&& $Entry != "." && $Entry != ".." ) {
  10.     echo "<b><font color=\"red\">$Entry</font></b> est un repertoire<br>";
  11.     ScanDir("$Entry" );
  12.   }
  13.   else {
  14.     /*  type de fichiers qui seront indexés  */
  15.     if (eregi(".htm",$Entry) || eregi(".html",$Entry) || eregi(".php",$Entry)) { //
  16.       $MetaTags = get_meta_tags($Directory."/".$Entry);
  17.       /*  requete d'insertion du fichier dans la table  */
  18.       if ($MetaTags["robots"] == "all" ) {
  19.         $MetaKey = $MetaTags["keywords"];
  20.         //$MetaKey = strtoupper($MetaKey);   est-ce utile?
  21.         echo "Meta($Directory/$Entry): $MetaKey <br>";
  22.         $MetaTitre = $MetaTags["description"];
  23.         echo "Meta($Directory/$Entry): $MetaTitre <br>";
  24.         $query = "INSERT INTO recherche (lien,keyword,titre)
  25.                   VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\" )";
  26.         $mysql_result = mysql_query($query) or die ("<br><br><b>Erreur de modification de la table par la requete</b><br> \"$query\"" );
  27.       }
  28.     }
  29.   }
  30.  }
  31. closedir($MyDirectory);
  32. }
  33. $open_basedir="..";
  34. ScanDir("." );


 
le message d'erreur est :

Code :
  1. Erreur de modification de la table par la requete
  2. "INSERT INTO recherche (lien,keyword,titre) VALUES("dossier/page01.htm","mots, clés, un, deux, trois, ....","titre de la page" )"


 
merci beaucoup par avance, parce que là je rame...  :)

mood
Publicité
Posté le 06-09-2006 à 15:50:22  profilanswer
 

n°1437803
soju
One shot !
Posté le 06-09-2006 à 16:21:30  profilanswer
 

avec le vrai message d'erreur mysql ça serait mieux, modifie ton code :

$mysql_result = mysql_query($query) or die (mysql_error());


EDIT: tag


Message édité par soju le 06-09-2006 à 16:22:02
n°1437807
miltonis
Posté le 06-09-2006 à 16:27:52  profilanswer
 

salut Soju,
 
ça me rajote ceci en fin de page :

Code :
  1. Duplicata du champ '0' pour la clef 1


 
faut-il incrémenter quelque chose?

n°1438116
miltonis
Posté le 07-09-2006 à 10:34:09  profilanswer
 

bonjour, :)
je tourne en rond.....quelqu'un a une idée d'où peut venir le problème?
merci

n°1438120
FlorentG
Unité de Masse
Posté le 07-09-2006 à 10:35:30  profilanswer
 

T'as oublié de mettre la clé en auto_increment ?.

n°1438140
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-09-2006 à 10:50:16  profilanswer
 

la clé de ta table est bien définie en auto-increment?
edit:waouhh over-grilled de 15mins :o


Message édité par anapajari le 07-09-2006 à 10:50:43
n°1438152
miltonis
Posté le 07-09-2006 à 11:07:03  profilanswer
 

ça parait tellement évident après-coup.......
c'est bien ça et merci de vos réponses
 
le problème maintenant est que la boucle indexe deux fois les mêmes données dans la table....contraignant!
je regarde ce qui ne va pas
a++

n°1438365
miltonis
Posté le 07-09-2006 à 14:38:10  profilanswer
 

j'ai trouvé, et si ça peut servir à quelq'un..... :
il falliat mettre

Code :
  1. ScanDir("$Entry/$Directory" );


au lieu de  

Code :
  1. ScanDir("$Entry" );


 
voilà, merci encore de votre aide  :)

n°1799921
jamiel
Posté le 14-10-2008 à 12:19:41  profilanswer
 

Parfait , mais attention à Scandir je pense que c'est un mot réservé en php.
j'ai été personnellement confronté au probléme.
 
Comme c'est une fonction déclarée , on peut lui donner le nom que l'on veut.
Moi je l'ai transformé en PGScandir  parmi un millier d'autres solutions possibles.
 
Attention avec l'id , il faut le reseter à  0 avant chaque scan
 
en faisant :
 
$query      = " ALTER TABLE search AUTO_INCREMENT=0";
$mysql_result = mysql_query($query) or die (" Erreur de modification de la table par la requete \"$query\"" );
                                                                     
$query     = " INSERT INTO search (lien,keyword,titre)  
                    VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\" )" ;
 
$mysql_result = mysql_query($query) or die (" Erreur de modification de la table par la requete \"$query\"" );  
 
 
Mais moi j'ai aussi un petit probléme.
 
D'abord une mise en situation :
 
le script d'indexation scanne toutes les pages et  affiche l'ensemble des fichiers du répertoire , en affichant  en lettres rouges les répertoires.
 
la requête suivante :"query     = " INSERT INTO search (lien,keyword,titre)  
                                                             VALUES(\"$Directory/$Entry\",\"$MetaKey\",\"$MetaTitre\" )" ;
 
insére dans la table les valeurs de lien .
 
Mais chose étrange , malgré que le code n'affiche aucune erreur .
Les champs correspondant aux  "keyword" et "titre"
restents  vides à chaque ligne de la table .
 
Seule les champs correspondant à la  valeur  \"$Directory/$Entry\" se remplissent
à l'éxécution du script.
 
Comment expliquer qu'un insert laisse des champs vides ?
 
y aurait- il un probléme avec les expressions de \"$MetaKey\" et \"$MetaTitre\" ?
 
faut - il  inverser les barres obliques ?
 
j'ai  essayer en faisant '$MetaKey' , '$MetaTitre'.
 
Rien y fait les champs restent indefectiblement vides.
 
Quelqu'un peut-il venir à ma rescousse.
 


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

  PHP - code moteur de recherche : ça coince!

 

Sujets relatifs
[résolu][PHP+Javascript] Pb de retours chariotsJe recherche la commande lynx compatible windows
Recherche d'un outil[PHP] Session et objet :??:
Vbs et PhpRecherche collaboration pour projet déja entamé!
la function mail dans PHP - réglage SMTP[PHP] bug dans un script d'inscription
Nouveau site - Recherche collaborateursTri et recherche des occurences d'un tableau de données
Plus de sujets relatifs à : PHP - code moteur de recherche : ça coince!


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