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

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] problème insertion de données issues de csv dans une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] problème insertion de données issues de csv dans une table

n°1309636
flock86
oh non les gars pas le slip!
Posté le 20-02-2006 à 14:12:13  profilanswer
 

Bonjour à tous!!
 
je suis actuellement bloqué sur une importation de données via un fichier csv.
je suis novice en php, et je viens de découvrir la majorité des fonctions incluses dans ce code :  

Code :
  1. <?
  2. if (isset ($_POST['importer']) AND !empty ($_POST['importer']))
  3. {
  4. mysql_connect("localhost", "root", "" );
  5. mysql_select_db("carte_demarchage" );
  6. $row=1;
  7. $handle = fopen($_POST['importer'], 'r' );
  8. while (($data = fgetcsv($handle, 1000, ';')) !== FALSE)
  9. {$num = count($data);
  10. echo '<p> '.$num.' entrées à la ligne'.$row.' : <br /> </p> \n';
  11. $row++;
  12. for ($c=0; $c < $num; $c++)
  13. {echo ($data[$c].'<br />');
  14. $essai = explode (";" , $data[$c]);
  15. //test de $essai
  16. echo $essai[0];
  17. echo $essai[1];
  18. $requeteinsertion = mysql_query ('INSERT INTO tp_fdv (CodeRemettant, LibRemettant) VALUES ("'.$essai['0'].'", "'.$essai['1'].'" ) ') or die(mysql_error());
  19. }
  20. //lit le fichier incarné par $handle
  21. //$contents = fread ($handle, filesize ($_POST['importer']));
  22. //echo $contents;
  23. echo '<br> youplaliyouplala';
  24. }
  25. fclose($handle);}
  26. //else { echo 'Veuillez spécifier le chemin d\'un fichier  ';}
  27. ?>


 
alors voilà j'ai plusieurs soucis :  
1 - mon fichier csv a pour séparateur de champs le ';'.
lorsque je fais : echo ($data[$c].'<br />'); ça m'affiche chaque champs à la ligne.
exemple :  
(ligne 1 qui correspond au nom des champs)
Identifiant
nom
prénom
....  
 
(ligne 2 qui correspond aux données cette fois ci )
abcd
dupont
robert
....
 
est-ce normal? je dois pas avoir plutot tout à la suite et avoir un saut de ligne à la fin de chaque ligne et non à la fin de chaque champ?
 
2- mon code me met comme erreur undefined offset... on line 26, c'est à dire auè niveau des echo $essai[0] et [1]
et idem avec offset 2...
ça veut dire quoi? :pt1cable:  
 
qq'un peut m'orienter un peu s'il vous plait?
 
merci beaucoup!!! :D
 
[edit]
bon déjà $essai[1] n'existe pas...d'ou les problèmes d'offset.
seul $essai[0] est valide...enfin...façon de parler.
 
le résultat de ce m..dier : il m'insere toutes mes données les 1 ) la suite des autres dans le champ coderemettant...?
ça doit être le explode qui me donne des résultats inattendus, ou les fgetcsv...


Message édité par flock86 le 21-02-2006 à 12:25:52
mood
Publicité
Posté le 20-02-2006 à 14:12:13  profilanswer
 

n°1309807
omega2
Posté le 20-02-2006 à 16:52:51  profilanswer
 

Vu que tu mets un '<br />' aprés chaque champs ("echo ($data[$c].'<br />');" ) , c'est normal que ca revienne à la ligne tout le temps.
 
Quand à ton explode, a quoi il sert? Il ne risque pas d'y avoir beaucoup de ";" dans ton texte vu que "fgetcsv()" va les avoir quasiment tous viré s'il ne les a tout simplement pas tous viré.

n°1309819
flock86
oh non les gars pas le slip!
Posté le 20-02-2006 à 17:05:00  profilanswer
 

aaaaaaaaaaaaah
ok! merci omega2 pour ta réponse!!
 
le explode c'est pas très malin c'est sur...je voulais qu'il m'explose la ligne qui correspond à $data[$c], m'en faire un array pour l'insérer dans ma table.
donc avec fgetcsv je récupère toutes les données de mon csv...
mais s'il ils sont pas séparés par quelque chose comment l'insérer dans ma table?
faut que je fasse un array à partir de $data?
et la première ligne du csv c'est le nom des champs...ne vont-ils pas ête insérés comme des valeurs dans ma table?  
je maitrise pas, là c'est sur!
mais déjà merci pour ces indications je vais continuer à chercher...et virer les saloperies que j'ai écrit..
 
[edit] bon j'ai trouvé un script qui importe les données d'un fichier csv dans une table:
le voici :  

Code :
  1. <?php
  2. // ------------------------------------------------------------------------- //
  3. // Insérer le contenu d'un fichier CSV dans une table MySQL.                 //
  4. // ------------------------------------------------------------------------- //
  5. // Auteur: Perrich                                                           //
  6. // Email:  perrich@club-internet.fr                                          //
  7. // Web:    http://www.frshop.net/                                            //
  8. // ------------------------------------------------------------------------- //
  9. // $fileName  : le nom du fichier
  10. // $tableName : le nom de la table
  11. // $con       : id de connexion à MySQL (recupéré avec $con = mysql_connect(...)
  12. function insertIntoTable( $fileName, $tableName, $con )
  13. {
  14.     $file = fopen( $fileName, 'r' );
  15.     $k = 0;
  16.  
  17.     while ( ! feof( $file ) )
  18.     {
  19.         $k++;
  20.         $line = fgets( $file, 1024 );
  21.         if ( strlen( $line ) > 2 )
  22.         {
  23.             $line = addslashes( $line );
  24.             $line = str_replace ( ";", "', '", $line );
  25.             $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';
  26.             if ( ! mysql_query ( $requete, $con ) )
  27.                 echo 'Erreur Ligne '.$k.' : '.mysql_error().'<br>'.$requete.'<br>';
  28.         }
  29.         else
  30.             echo 'Ligne '.$k.' ignorée.<br>';
  31.     }
  32.     echo '<p>Insertion du fichier '.$fileName.' terminé.</p><hr>';
  33.     fclose( $file );
  34. }
  35. ?>


 
en remerciant son auteur et en déplorant de ne pas avoir trouvé seul ce code...
en tous les cas, il m'a appris plein de choses...
bonne journée à tous!!
 


Message édité par flock86 le 21-02-2006 à 12:24:48

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

  [RESOLU] problème insertion de données issues de csv dans une table

 

Sujets relatifs
[resolu]parse error :/[Résolu] Problème d'héritage d'héritage + redéfinition de méthode
[Résolu][BDE C++ Builder 6 TTable] Impossible d'activer une TTable[Pas tout à fait résolu] Pb de positionnement de div en design fluide
[Sybase] Restaurer l'intégrité référentielle d'un jeu de donnéesproblème connection VB6 vers MSSQL par ODBC W2003 SERVEUR
problème connection VB6 vers MSSQL par ODBC W2003 SERVEURprobléme programmation AS
probleme validation dtd 
Plus de sujets relatifs à : [RESOLU] problème insertion de données issues de csv dans une table


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