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

  FORUM HardWare.fr
  Programmation
  PHP

  Script d'automatisation d'insertion d'infos dans une table mysql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script d'automatisation d'insertion d'infos dans une table mysql

n°247964
real_matho​s
Posté le 18-11-2002 à 20:52:14  profilanswer
 

salut,
Pour mon site, à chaque fois que j'uploade un fichier, je dois l'inscrire dans la base mysql pour mon script de gestion de d/l. Mais j'ai tellement de fichiers que c'est impossible de faire ça à la main. Est-ce qu'il existe un moyen de faire un script qui recherche tous les fichiers dans le répertoire qu'on veut et qu'il inscrit ça dans la base mysql, avec les paramètres qu'on veut?
 
Le script ferait ça:
J'inscris un répertoire à scanner.
J'inscris la ligne de code que je veux insérer dans mysql.
ex: INSERT INTO fichier VALUES ('', 1, '$fichier';);
'' correspond à l'id, 1 correspond au serveur où il se trouve (à modifier manuellement, mais je pense qu'il peut le trouver auto), et $fichier correspond au fichier.
pour chaque fichier, il insère le nom du fichier dans la variable $fichier, et donc il insère ainsi ts les fichiers dans la base mysql.
 
Exemple:
Il liste le répertoire qui contient 3 fichiers. Il trouve:
test.zip
test1.ace
test2.rar
 
il crée donc ça:
INSERT INTO fichier VALUES ('', 1, 'test.zip';);
INSERT INTO fichier VALUES ('', 1, 'test1.ace';);
INSERT INTO fichier VALUES ('', 1, 'test2.rar';);
 
il n'y a même pas besoin qu'il éxécute lui même les instructions mysql, il suffit qu'il les enregistre ds un fichier .txt, et on l'utilise avec PHPMyAdmin.

mood
Publicité
Posté le 18-11-2002 à 20:52:14  profilanswer
 

n°247967
lorill
Posté le 18-11-2002 à 20:55:51  profilanswer
 

oui

n°247970
real_matho​s
Posté le 18-11-2002 à 20:57:20  profilanswer
 

hehe, et comment?

n°248138
cleanx
Posté le 19-11-2002 à 00:20:33  profilanswer
 

Pourquoi tu n'inscris pas le nom du fichier dans ta table en même temps que tu "uploades" ton fichier ? :heink:  

n°248196
Sh@rdar
Ex-PhPéteur
Posté le 19-11-2002 à 09:10:04  profilanswer
 

moi je pense plutôt à un script de vérif / insertion
 
tu upload ton fichier, tu lances le script il vérifie les données déjà présentes dans la base et insère les nouveaux fichiers ou mets à jour les fichiers existants.
 
simplissime ! (enfin presque)
 
l'avantage : tu lances le script pour mettre à jour quand tu veux, pas de génération de fichier supplémentaire.
 
bon bin t'as l'algo, y'a plus qu'à coder !
 


Message édité par Sh@rdar le 19-11-2002 à 09:12:21

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°248919
real_matho​s
Posté le 19-11-2002 à 19:05:01  profilanswer
 

Est-ce que tu peux me donner les bases (au moins) du script parce que je débute en PHP...

n°249044
real_matho​s
Posté le 19-11-2002 à 21:34:48  profilanswer
 

Voilà ce que j'ai fait:

Code :
  1. <?
  2. //lister tous les fichiers du répertoire courant
  3. $rep=opendir('.');
  4. while ($file = readdir($rep)) {
  5. if($file != '..' && $file !='.' && $file !='') {
  6.      if (is_file($file)) {
  7. //stocker le nom des fichiers dans un tableau
  8.       $tabFichier[] = $file;
  9.      }
  10.     }
  11. }
  12. //trier le tableau
  13. sort ($tabFichier);
  14. //foreach est une instruction PHP 4 !
  15. foreach ($tabFichier AS $file) {
  16. echo "INSERT INTO fichier VALUES ('', '1', '$file')"."<BR>\n";
  17. }
  18. closedir($rep);
  19. clearstatcache();
  20. ?>


C'est déjà pas mal puisqu'il liste les fichiers et qu'il génère automatiquement les lignes de code pour mysql. Mais comment vérifier si les infos s'y trouvent déjà?

n°249239
Sh@rdar
Ex-PhPéteur
Posté le 20-11-2002 à 09:06:16  profilanswer
 

c'est déjà très bien  ;)  
 
maintenant ce qu'il faudrait c'est générer un tableau avec les fichiers déjà présents dans la base et comparer ensuite les deux tableaux pour savoir s'il faut insérer ou pas.  
 
le meiux c'est peut être de faire cette requête en premier et de former un tableau comme ça :
 

Code :
  1. $Req = mysql_query ("select * from matable",$Maconnec);
  2. while ($val = mysql_fetch_array($Query)) {
  3.   $Fichiers['Nom'][] = $val['nom_du_fichier'];
  4.   $Fichiers['Statut'][] = -1; pour l'instant on sait pas si on doit updater ou insérer
  5. }
  6. // là on a un tableau avec les fichiers présents dans la base
  7. // on parcourt la liste du contenu du REPERTOIRE
  8. foreach ($tabFichier as $File) {
  9.   // on regarde si le fichier est déjà dans notre liste de la base
  10.   if (in_array($Fichier['Nom'],$File)) {
  11.     // si OUI on mets à jour le statut du fichier
  12.     $Fichiers['Statut'][array_search($File,$Fichiers['Nom'])] = 0; // pas besoin d'inserer un nouvelle ligne
  13.   }
  14.   else {
  15.   // sinon on ajoute un entrée dans le tableau $Fichiers pour insérer une nouvelle ligne
  16.   $Fichiers['Nom'][] = $File;
  17.   $Fichiers['Statut'][] = 1;
  18.   }
  19. }


maintenant tu peux parcourir le tableau et quand le statut = 0 tu update ou laisse, et pour 1 tu insère une nouvelle ligne, si le statut est encore à -1 alors t'as une entrée morte dans ta base (e, le fichier n'est plus là)


Message édité par Sh@rdar le 20-11-2002 à 09:09:32

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°249529
real_matho​s
Posté le 20-11-2002 à 14:08:09  profilanswer
 

Est-ce que tu pourras m'expliquer pas à pas comment fonctionnent ces lignes de code? Parce que là je n'arrive pas à comprendre, et à le faire fonctionner.

n°250921
real_matho​s
Posté le 21-11-2002 à 19:46:51  profilanswer
 

STP comment le faire fonctionner?? je n'arrive pas!! :(

mood
Publicité
Posté le 21-11-2002 à 19:46:51  profilanswer
 

n°251989
real_matho​s
Posté le 23-11-2002 à 14:00:57  profilanswer
 

[:tomilou]


Message édité par real_mathos le 23-11-2002 à 14:01:26
n°252018
Sh@rdar
Ex-PhPéteur
Posté le 23-11-2002 à 15:03:26  profilanswer
 

:heink:  t'aurais pas comme l'envie que je fasse le boulot à ta place ?
 

Code :
  1. // recherche dans la table : modifier la requête pour que ça  
  2. // corresponde à tes paramètres
  3. $Req = mysql_query ("select * from matable",$Maconnec);
  4. // on parcourt les résultats
  5. while ($val = mysql_fetch_array($Query)) {
  6. // on crée un tableau contenant la liste des fichiers
  7. // présents dans la table et avec comme statut
  8. // par défaut -1 (qui correspond à fichier absnet du répertoire
  9. $Fichiers['Nom'][] = $val['nom_du_fichier'];
  10. $Fichiers['Statut'][] = -1; pour l'instant on sait pas si on doit updater ou insérer
  11. }
  12. // là on a un tableau avec les fichiers présents dans la base
  13. // on parcourt la liste du contenu du REPERTOIRE que
  14. // tu as crée avec ton script plus haut donc à modifier pour que les  
  15. // variables soient les mêmes
  16. foreach ($tabFichier as $File) {
  17. // on regarde si le fichier est déjà dans notre liste de la base
  18. if (in_array($Fichier['Nom'],$File)) {
  19.    // si OUI on mets à jour le statut du fichier
  20.    $Fichiers['Statut'][array_search($File,$Fichiers['Nom'])] = 0; // pas besoin d'inserer un nouvelle ligne
  21. }
  22. else {
  23. // sinon on ajoute un entrée dans le tableau $Fichiers pour insérer une nouvelle ligne
  24. $Fichiers['Nom'][] = $File;
  25. $Fichiers['Statut'][] = 1;
  26. }
  27. }


 
ensutie y'a encore du boulot et du code à faire mais j'ai déjà écris plus haut ce qu'il faut faire. et ça devrait ressembler à ça :
 

Code :
  1. foreach ($Fichiers['Nom'] as $Key => $Val) {
  2.   if ($Fichiers['Statut'] == 1) {
  3.     $Req = mysql_query ('INSERER LES DONNEES DANS LA TABLE, LE NOM DU FICHIER EST $Val);
  4.   }
  5.   elsif($Fichiers['Statut']==-1) {
  6.     $Req = mysql_query ('ON SUPPRIME LE FICHIER DE LA BASE CAR IL N'EST PLUS DANS LE REPERTOIRE);
  7.   }


 
 


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°252164
real_matho​s
Posté le 23-11-2002 à 18:12:57  profilanswer
 

Non je ne veux pas que tu fasse le boulôt à ma place, mais je ne m'y connais pas trop en PHP. Voilà le script que g comlpleté, mais ça ne veut pas fonctionner, ça met:
Parse error: parse error, unexpected $ in script.php on line 65
 

Code :
  1. <?
  2. $rep=opendir('.');
  3. while ($file = readdir($rep)) {
  4. if($file != '..' && $file !='.' && $file !='') {
  5.      if (is_file($file)) {
  6.       $Fichiers[] = $file;
  7.      }
  8.     }
  9. }
  10. sort ($Fichiers);
  11. foreach ($Fichiers ['Nom'] AS $Key => $Val) {
  12. if ($Fichiers['Statut'] == 1) {
  13.    $Req = mysql_query ('Nom');
  14. }
  15. elseif($Fichiers['Statut']==-1) {
  16.    $Req = mysql_query ('Nom');
  17. }
  18. closedir($rep);
  19. clearstatcache();
  20. $hote="localhost";
  21. $login="root";
  22. $pass="";
  23. $base="test";
  24. $db = mysql_connect($hote, $login, $pass);
  25. mysql_select_db($base,$db);
  26. $Req = mysql_query ("select * from fichier",$Maconnec);
  27. while ($val = mysql_fetch_array($Query)) {
  28. $Fichiers['Nom'][] = $val['nom_du_fichier'];
  29. $Fichiers['Statut'][] = -1;
  30. }
  31. foreach ($Fichiers as $File) {
  32. if (in_array($Fichier['Nom'],$File)) {
  33.   $Fichiers['Statut'][array_search($File,$Fichiers['Nom'])] = 0;
  34. }
  35. else {
  36. $Fichiers['Nom'][] = $File;
  37. $Fichiers['Statut'][] = 1;
  38. }
  39. }
  40. ?>

n°255589
real_matho​s
Posté le 27-11-2002 à 21:42:46  profilanswer
 

[:tomilou]

n°255818
Sh@rdar
Ex-PhPéteur
Posté le 28-11-2002 à 08:12:45  profilanswer
 

doit y avoir une accolade de manquante, je te laisse corriger


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°316916
real_matho​s
Posté le 24-02-2003 à 22:02:47  profilanswer
 

Ce sujet a été laissé pour mort, n'empêche que je n'ai toujours pas réussi à le faire fonctionner et que j'en ai toujours autant besoin! alors si quelq'un pouvait m'aider... ça serait cool! :)  
 
Merci d'avance!


Message édité par real_mathos le 24-02-2003 à 22:04:41
n°316985
beleg
黑社會
Posté le 24-02-2003 à 23:57:46  profilanswer
 

manque une accolade }

n°327638
real_matho​s
Posté le 09-03-2003 à 19:17:52  profilanswer
 

Ben non ça marche tjs pas. Est-ce que qqn pourrait tester le script pour qu'il voie ce qui ne va pas? Parce qu'il y a plein d'erreurs!
 
Merci d'avance!

n°327672
Hermes le ​Messager
Breton Quiétiste
Posté le 09-03-2003 à 20:03:16  profilanswer
 

ReaL_MathoS a écrit :

Ben non ça marche tjs pas. Est-ce que qqn pourrait tester le script pour qu'il voie ce qui ne va pas? Parce qu'il y a plein d'erreurs!
 
Merci d'avance!


 
Apprend le PHP. Tu viens avec des bouts de scripts qui ne sont pas de toi et que tu ne comprends pas.
 
Entraine toi déjà à faire un tableau, des boucles etc... Fais les tutos dispos sur phpdebutant.org et reviens nous voir après. ça servirait à rien de t'aider plus que ça. (Je trouve même que les gens ont été déjà particulièrement patients :D )

n°328529
real_matho​s
Posté le 10-03-2003 à 17:15:35  profilanswer
 

ben oui mais le^problème c que je n'aurai pas besoin particulièrement du PHP, il est vraiment indispensable seulement ici. Donc je ne vois pas trop l'intérêt d'apprendre le language complet, alors qu'en plus j'ai déjà le VC++ à apprendre (!)
 
SVP Qqn pourrait-t-il m'aider?

n°328545
Hermes le ​Messager
Breton Quiétiste
Posté le 10-03-2003 à 17:30:36  profilanswer
 

ReaL_MathoS a écrit :

ben oui mais le^problème c que je n'aurai pas besoin particulièrement du PHP, il est vraiment indispensable seulement ici. Donc je ne vois pas trop l'intérêt d'apprendre le language complet, alors qu'en plus j'ai déjà le VC++ à apprendre (!)
 
SVP Qqn pourrait-t-il m'aider?


 
Le PHP est bcp plus facile que le WC++ ... Quand on maitrise le C++, il faut 3 jours pour apprendre le PHP.  [:totozzz]


Message édité par Hermes le Messager le 10-03-2003 à 17:31:00
n°328552
real_matho​s
Posté le 10-03-2003 à 17:35:56  profilanswer
 

Oui mais je ne maîtrise pas le C++ :)
 
P.S: WC++ j'en ris encore

n°328556
Hermes le ​Messager
Breton Quiétiste
Posté le 10-03-2003 à 17:37:56  profilanswer
 

ReaL_MathoS a écrit :

Oui mais je ne maîtrise pas le C++ :)
 
P.S: WC++ j'en ris encore


 
Ben commence par le PHP, ce te servira de toutes façons. (En sachant que PHP est bcp bcp plus facile et permissif que le C++).

n°328569
Notsukaw
Be Aware
Posté le 10-03-2003 à 17:46:08  profilanswer
 

ReaL_MathoS a écrit :

Donc je ne vois pas trop l'intérêt d'apprendre le language complet.


 
 :heink: tu vas pas aller loin en prog avec un raisonnement pareil :heink:


---------------
[ Canon EOS 30D ] (Grip + Canon 50mm f/1.4 + Canon 18-55mm USM + Tamron 70-300mm Di LD Macro)  [Galerie perso]
n°329884
real_matho​s
Posté le 11-03-2003 à 20:21:48  profilanswer
 

[:tomilou]

mood
Publicité
Posté le   profilanswer
 


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

  Script d'automatisation d'insertion d'infos dans une table mysql

 

Sujets relatifs
conseiller moi un editeur mysql , simple , enfin pour une débutante![mysql]requete de type arbre (rechercher n-peres]
Mysql et batch[HTML]Comment "lisser" l'affichage d'infos bulles et les arrondir ?
Executer un script PHP à partir dun script perl ....[HELP] afficher infos sur un autre PC ( via port serie )
[PHP/MYSQL] - alors la si qqun y comprends qque chose, CHAPO! [résolu]Declarations de fonctions et temps d'executions du script...
[MySQL] - Personnaliser le format de la date/heure dans une table? 
Plus de sujets relatifs à : Script d'automatisation d'insertion d'infos dans une table mysql


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