List et INSERT

List et INSERT - PHP - Programmation

Marsh Posté le 11-01-2006 à 23:58:22    

Salut à tous !
 
J'ai récupéré un code qui me liste et affiche et tous les docoments WORD d'un répertoire.
 
Le problème est que, à partir de script, j'aimerai insérer tous les documents dans ma base de données de facon à y mettre un commentaire. Je ferai alors une requête directement dans ma BDD qui m'affichera le nom du fichier ET les commentaires que j'ajouterai manuellement plus tard.
.
Mon probleme est que, pour le moment, je n'arrive pas à les insérer. J'en ai plus de 1000 et ca m'embete de les faire 1 par 1 !!
 
Ma base s'appelle bulletin et ma base [b]totalfrance[b].
 
Voici le code qui liste le répertoire :

Code :
  1. <?php
  2. function browse ($pDirectory, $pExtension)
  3. {
  4.     if($handle = opendir($pDirectory))
  5.     {
  6.          while(false !== ($file = readdir($handle)))
  7.         {
  8.             $getExt = explode(".", $file);
  9.             $countExt = count($getExt);
  10.             $fExt = $countExt - 1;
  11.             $myExt = $getExt[$fExt];
  12.            
  13.             if (($myExt == $pExtension) && ($file != "." ) && ($file != ".." ))
  14.                 {$files[] = $file;}
  15.         }
  16.      }
  17. return $files;
  18. closedir($handle);
  19. }
  20. // utilisation de la fonction avec des fichiers EXE  
  21. $getFile = browse("/mon_chemin", "doc" );
  22. $countFile = count($getFile);
  23. echo "<b> $countFile Quero trouvé(s)</b><br>";
  24. foreach ($getFile as $myFile)
  25.     {echo $myFile."<br>";}
  26. ?>


 
Dans le même fichier count.php, en haut, j'ai mis la requete qui essaie d'insérer le contenu. Voci ce que j'ai mis :

Code :
  1. <?
  2. mysql_select_db( bulletin );
  3. $req = mysql_query('INSERT INTO totalfrance(id, titre) VALUES($myFile.); 
  4. mysql_close($db);
  5. ?>


 
Merci de votre coup de main.


Message édité par mikedimoi le 12-01-2006 à 00:01:49
Reply

Marsh Posté le 11-01-2006 à 23:58:22   

Reply

Marsh Posté le 12-01-2006 à 00:22:47    

M'étonnes pas que l'insertion échoue, la chaine qui contient la requête n'est même pas fermée, tu veux insérer 2 infos tu n'en donnes qu'un seul (et mal en plus), bref, goto mysql.com section documentation rubrique insert :)

Reply

Marsh Posté le 12-01-2006 à 00:49:47    

Je crois ne pas etre assez calé pour comprendre ! Tu ne peux pas me donner la solution ?

Reply

Marsh Posté le 12-01-2006 à 11:38:55    

Reply

Marsh Posté le 12-01-2006 à 16:23:45    

Merci quand même ! Je crois que je vais me debrouiller autrement ou tout seul !

Reply

Marsh Posté le 12-01-2006 à 17:06:26    

C'est un peu le but :D

Reply

Marsh Posté le 12-01-2006 à 17:11:54    

J'ai bien compris mais ca fait deux jours que je bataille et ca me g.... maintenant !! J'en ai absolument besoin pour mon boulot et je dois partir samedi ! :(
 
J'en suis là :
 

Code :
  1. <?php
  2. $db = mysql_connect('****', '*****', '*****')  or die('Erreur de connexion '.mysql_error());
  3.     mysql_select_db('download',$db)  or die('Erreur de selection '.mysql_error());
  4.     $getFile = browse("mon_chemin", "doc" );
  5.     $countFile = count($getFile);
  6. foreach ($getFile as $myFile)
  7.   {
  8.    
  9.     $sql = "INSERT INTO totalfrance(id, titre) VALUES('','$getFile')";}
  10.    
  11.     // on insère les informations du formulaire dans la table  
  12.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  13.     // on affiche le résultat pour le visiteur  
  14.     echo 'Vos infos on été ajoutées.';
  15. function browse ($pDirectory, $pExtension)
  16. {
  17.     if($handle = opendir($pDirectory))
  18.     {
  19.          while(false !== ($file = readdir($handle)))
  20.         {
  21.             $getExt = explode(".", $file);
  22.             $countExt = count($getExt);
  23.             $fExt = $countExt - 1;
  24.             $myExt = $getExt[$fExt];
  25.            
  26.             if (($myExt == $pExtension) && ($file != "." ) && ($file != ".." ))
  27.                 {$files[] = $file;}
  28.         }
  29.      }
  30. return $files;
  31. closedir($handle);
  32. }
  33. // utilisation de la fonction avec des fichiers EXE  
  34. $getFile = browse("mon_chemin", "avi" );
  35. $countFile = count($getFile);
  36. echo "<b> $countFile Ficiher(s) trouvé(s)</b><br>";
  37. foreach ($getFile as $myFile)
  38.   {
  39.     echo   "<a target='_blank' href=mon_url/$myFile'>".$myFile."<br>";}
  40. mysql_close(); 
  41.  
  42. ?>


 
Lorsque je fais çà, j'ai bien des entrées qui sont ajoutées à la BDD mais, au lieu du titre, il y a marqué Array partout !!! :(

Reply

Marsh Posté le 12-01-2006 à 17:16:16    

Bah oui, c'est pas $getFile (qui est le tableau global) mais son contenu ($myFile) que tu veux insérer :)

Reply

Marsh Posté le 12-01-2006 à 17:17:25    

C'est pas plutot $MyFile que tu veux insérer dans la base ?
 
EDIT : merde :D


Message édité par ritzle le 12-01-2006 à 17:18:05
Reply

Marsh Posté le 12-01-2006 à 17:19:17    

Je continue de chercher alors !
Je vais tenter avec $goto ou $post....

Reply

Marsh Posté le 12-01-2006 à 17:19:17   

Reply

Marsh Posté le 12-01-2006 à 17:21:08    

On vient de te donner la réponse. C'est pas ca ?

Reply

Marsh Posté le 12-01-2006 à 17:22:13    

Erreur !!! Je m'en doutais un peu !! :)
 
Oui, biensur que c'est $myFile !! Je continue... :)

Reply

Marsh Posté le 12-01-2006 à 17:24:25    

Yeeeeeeeeeeesssssssssssssssssssssssss      !!!!!!!!!!!!!!!!!!!!  
 
J'ai trouvé !!!

Reply

Marsh Posté le 12-01-2006 à 17:26:55    

Je mets la solution au cas où ca puisse servir à quelqu'un !
 
Merci pour ton tuyau naceroth !!!!
 
J'ai simplement remplacé :

Code :
  1. $getFile = browse("mon_chemin", "doc" );   
  2. $countFile = count($getFile);   
  3. foreach ($getFile as $myFile)


 
par  

Code :
  1. $postFile = browse("mon_chemin", "doc" );   
  2. $countFile = count($postFile);   
  3. foreach ($postFile as $myFile)

Message cité 1 fois
Message édité par mikedimoi le 12-01-2006 à 17:27:33
Reply

Marsh Posté le 12-01-2006 à 17:32:51    

Grrrrr !!!!! Fausse alerte !!!! Ca ne m'ajoute qu'un fichier...le seul qui commence par [ !!!!!
 
 :fou:

Reply

Marsh Posté le 12-01-2006 à 17:45:37    

Là, je ne vois plus comment faire !
 
Un autre petit filon ?!

Reply

Marsh Posté le 12-01-2006 à 17:50:21    

mikedimoi a écrit :

Là, je ne vois plus comment faire !
 
Un autre petit filon ?!


http://www.assemblee-nationale.fr/tribun/photos/1310.jpg
 
bon, je sors...

Reply

Marsh Posté le 12-01-2006 à 17:51:42    

Même pas marrant !

Reply

Marsh Posté le 12-01-2006 à 17:52:09    

mikedimoi a écrit :

Même pas marrant !


je sais  :sweat:

Reply

Marsh Posté le 12-01-2006 à 17:53:50    

Je suis loin de la solution ?

Reply

Marsh Posté le 12-01-2006 à 18:53:24    

mikedimoi a écrit :


J'ai simplement remplacé :

Code :
  1. $getFile = browse("mon_chemin", "doc" );   
  2. $countFile = count($getFile);   
  3. foreach ($getFile as $myFile)


 
par  

Code :
  1. $postFile = browse("mon_chemin", "doc" );   
  2. $countFile = count($postFile);   
  3. foreach ($postFile as $myFile)



 
Ouais, en fait, t'as absolument rien fait quoi :D
 
Et je l'avais même pas vu (avoir un code bien structuré ça aide pour le débogage, juste un conseil en passant), mais ton mysql_query, faudrait mieux qu'il soit à l'intérieur de la boucle du foreach, sinon, tu vas jamais insérer que le dernier élément renvoyé par ta fonction browse (que je n'ai même pas le courage de vérifier, mais la condition du while est, hum, lourde :D)

Reply

Marsh Posté le 12-01-2006 à 19:34:23    

Ok, je ne vous en demande pas plus par peur de vous deranger !
 
Je n'ai plus le temps !
 
Bonne continuation et en espèrant qu'un jour vous n'ayez pas besoin des autres ! ;)

Reply

Marsh Posté le 12-01-2006 à 19:51:32    

Bah, si tu passais pas ton temps à attendre que d'autres fassent ton job à ta place et à faire n'importe quoi...
 
Toujours la même histoire sur les forums avec des glandeurs comme toi, vous prennez les autres pour des domestiques, ne prennez même pas la peine de suivre les réponses qu'on vous donne et ensuite trouvez encore le culot nécessaire pour venir nous lacher des conneries style "en espérant qu'un jour vous n'ayez pas besoin des autres"...
 
Ben je vais te dire, c'est déjà arriver, et JAMAIS je n'ai pris les personnes à qui je demandais de l'aide pour mon chien en leurs sortant des "j'ai pas le temps, c'est pour le week-end" ou "je suis pas assez calé pour comprendre mais j'ai déjà fait ça, alors donne moi la solution"... (sans même un s'il te plait, non rien, un cleb je te dis...)

Reply

Marsh Posté le 12-01-2006 à 20:01:27    

Je ne pense pas avoir autant attendu que tu puisses le prétendre et bien au contraire !
 
Si je me suis résolu à poster ici, c'est parce que j'ai bien bataillé avant !
 
A ma place, j'ai aussi une impression de glandeur par rapport à vous qui, croirait on, détiennent la science infuse et ne veulent en aucun ca la dévolier !
 
Pour répondre à tes attaques :

Citation :

ne prennez même pas la peine de suivre les réponses qu'on vous donne


 
si je n'avais pas suivi tout ce que vous m'aviez dit, je ne pense pas en être arrivé là !
 
Je ne suis pas pressé, c'est que ca m'aurait bien rendu service !
J'avoue que  c'est un peu de ma faute de m'y prendre aussi tard.
Sache aussi que je ne faisais pas çà pour m'amuser mais pour m'alléger mon travail lorsque je suis à l'étranger.

Reply

Marsh Posté le 12-01-2006 à 20:04:42    

bon allez ...

Code :
  1. if ($fichiers = glob('/monrep/*.doc' , GLOB_NOSORT))
  2. {
  3.      $sql = mysql_connect(...);
  4.      mysql_select_db(... , $sql);
  5.      foreach ($fichiers as $fichier)
  6.      {
  7.           $query = "INSERT INTO totalfrance(id, titre) VALUES ('',$fichier)";
  8.           mysql_query($query , $sql);
  9.      }
  10.      mysql_close($sql);
  11. }


Mais si tu etais un tout petit peu rigoureux tu pourrais le faire tout seul :o

Reply

Marsh Posté le 12-01-2006 à 20:35:38    

Merci afbilou ! C'est gentil de ta part !
J'avoue que je ne connais pas cette fonction et qu'il faudrait que je me mette à bûcher un peu plus le php si je veux arriver à de telles fins.
 
J'ai essayé ton code....marche po !! J'ai vraiment pas de chance !
 
J'ai essayé plusieurs possibilités et, au final, l'ai mis seul dans une page comme suit :

Code :
  1. <?
  2. if ($fichiers = glob('/new/*.avi' , GLOB_NOSORT))
  3. {     
  4.       $sql = mysql_connect('mon_serveur', 'mon_login', 'mon_pass');     
  5.   mysql_select_db(ma_base, $sql);       
  6.   foreach ($fichiers as $fichier)     
  7.   {           
  8.   $query = "INSERT INTO ma_table(id, nom) VALUES('',$fichier)";           
  9.   mysql_query($query , $sql);     
  10.   }       
  11.   mysql_close($sql);}  
  12. ?>


 
Ai je une erreur là ?! :(
 
Merci beaucoup à toi !

Reply

Marsh Posté le 12-01-2006 à 20:40:43    

mysql_select_db attend une chaine de caractere comme premier argument.

Reply

Marsh Posté le 12-01-2006 à 21:00:19    

C'est à dire ? J'ai fait une erreur ?

Reply

Marsh Posté le 12-01-2006 à 21:03:18    

prendre un enfant par la maiiiiiiin ...

Reply

Marsh Posté le 12-01-2006 à 21:07:11    

afbilou a écrit :

prendre un enfant par la maiiiiiiin ...


 :lol:

Reply

Marsh Posté le 12-01-2006 à 21:10:30    

Vous devez vraiment être super cultivés pour prendre les gens d'aussi haut !

Reply

Marsh Posté le 12-01-2006 à 21:14:52    

Il faut apprendre le PHP pour comprendre le PHP.
Je te donne une solution ... et tu t'apercois que tu ne sais pas ce que c'est qu'une chaine de caractères. Je t'apprends donc que c'est un type de données que sait manipuler PHP. Sans ces bases là personne ne pourra t'aider. Pour recevoir de l'aide ... il faut avoir les competances qui permettent de poser des questions et d'en comprendre les reponses.

Reply

Marsh Posté le 12-01-2006 à 21:41:21    

Si tu parles de çà :

Code :
  1. mysql_select_db('ma_base', $sql);


 
je l'avais bien corrigé !
 
Je pensais que tu parlais de l'erreur que ça me retourner. La page affiche Array et rien n'est ajouté à la BDD.


Message édité par mikedimoi le 12-01-2006 à 21:41:52
Reply

Marsh Posté le 12-01-2006 à 22:16:23    

J'ai encore dit une connerie ????

Reply

Marsh Posté le 12-01-2006 à 22:31:37    

Heu, c'est quoi le code actuel?

Reply

Marsh Posté le 12-01-2006 à 22:35:17    

Salut omega2 !
 
C'est celui-ci pour l'instant (qui parait le plus simple) mais que je n'arrive pas à faire fonctionner.
 

Code :
  1. <? if ($fichiers = glob('/new/*.avi' , GLOB_NOSORT))
  2. {           
  3. $sql = mysql_connect('mon_serveur', 'mon_login', 'mon_pass');           
  4. mysql_select_db('ma_base', $sql);             
  5. foreach ($fichiers as $fichier)           
  6. {                 
  7. $query = "INSERT INTO ma_table(id, nom) VALUES('',$fichier)";                 
  8. mysql_query($query , $sql);           
  9. }           
  10.   mysql_close($sql);
  11. }  
  12. ?>


 
Merci bien pour ta contribution !


Message édité par mikedimoi le 12-01-2006 à 22:37:15
Reply

Marsh Posté le 12-01-2006 à 22:38:10    

Et elle est où la ligne qui affiche "array" dans ton code?

Reply

Marsh Posté le 12-01-2006 à 22:50:25    

Non, en fait j'ai simplement mis ce script dans un page. Il n'y a que çà.
Lorsque je lance ma page dans mon navigateur, la page est blanche avec marque Array en haut !
 
Je ne comprends plus rien ! :(


Message édité par mikedimoi le 12-01-2006 à 22:51:27
Reply

Marsh Posté le 12-01-2006 à 22:56:59    

T'as soiit un echo, soit un print qui traine quelque part, soit carément un "Array" écrit en dehors du code php mais j'y crois pas.
En tout cas, "Array" n'est pas un mot qui apparait miraculeusement tout seul.

Reply

Marsh Posté le 12-01-2006 à 22:57:10    

A mon avis, l'arborescence des fichiers à étudier n'est pas bonne... Où sont placés les fichiers ? dans un répertoire enfant nommé new du ficher PHP ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed