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

  FORUM HardWare.fr
  Programmation
  PHP

  Lire mon fichier csv a partir de la deuxième ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lire mon fichier csv a partir de la deuxième ligne

n°2118458
kpris
Posté le 27-12-2011 à 17:10:38  profilanswer
 

Code :
  1. <?php
  2. $row=1;// cela va nous permettre de passer d'une ligne à l'autre.
  3.  
  4. $fichier = $_FILES['fichier']['name'] ;
  5. $elementsChemin = pathinfo($fichier);
  6. $extensionFichier = $elementsChemin['extension'];
  7. $extensionsAutorisees = array("csv" );
  8.  
  9. if (!(in_array($extensionFichier, $extensionsAutorisees)))
  10. {
  11.      echo "<script langage='javascript'>alert('Le fichier n\'a pas l\'extension attendue');</script>";
  12.      include("formulaire.php" );
  13. } else {    
  14.    // Copie dans le repertoire du script avec un nom
  15.    // incluant l'heure a la seconde pres
  16.    $repertoireDestination = dirname(__FILE__)."/";
  17.    $nomDestination = "fichier_du_".date("YmdHis" ).".".$extensionFichier;
  18.  
  19.    move_uploaded_file($_FILES["fichier"]["tmp_name"],$repertoireDestination.$nomDestination);
  20.     
  21.  
  22.  
  23. $handle = fopen($nomDestination, "r" ); //on ouvre le fichier .csv
  24.  
  25. if($handle !== false){ // on vérifie si le fichier existe, si oui on exécute le code qui arrive après.
  26.  
  27.  
  28. for($row!=0;$row<=1000;$row++){  //ici on effectue une boucle qui va parcourir le fichier de la ligne 1 à la ligne 4.
  29. $data = fgetcsv($handle, 1024, "," );  // ici on récupère les valeurs de la ligne qui se trouvent entre les virgules.
  30.  
  31. $valeur0=$data[0];
  32. $valeur1=$data[1]; // on récupère la 2ème valeurs.
  33. $valeur2=$data[2]; // on récupère la 3ème valeurs.
  34.  
  35. $fp=fopen("COARRI_DISCHARGE.csv", "a" );
  36. fwrite($fp,"$valeur0" );fwrite($fp,"\n" );
  37. fwrite($fp,"$valeur1" );fwrite($fp,"\n" );
  38. fwrite($fp,"$valeur2" );fwrite($fp,"\n" );
  39. fwrite($fp,"\n" ); //permet de faire un saut de ligne.
  40.    
  41. fclose($fp); // ferme $fp.
  42. }
  43.  
  44. fclose($handle);
  45. }
  46. }
  47. ?>


 
 
 
j'ai un fichier CSV que je lis pour récupérer les données et les mettrent dans un autres fichier CSV
Mon problème est que je n'arrive pas à lire à partir de la deuxième ligne
ce que j'aimerai faire car la première ligne correspond aux titres des colonnes;
Merci de m'aider

mood
Publicité
Posté le 27-12-2011 à 17:10:38  profilanswer
 

n°2118494
nisalon_ca​je
Posté le 27-12-2011 à 23:20:15  profilanswer
 

ben lire à partir de la seconde, c'est comme lire à partir de la première et ne pas recopier la première dans ton fichier destination


---------------
http://nisalon.labrute.com/
n°2118516
kpris
Posté le 28-12-2011 à 09:31:59  profilanswer
 

nisalon_caje a écrit :

ben lire à partir de la seconde, c'est comme lire à partir de la première et ne pas recopier la première dans ton fichier destination


oui mais comment lui faire reconnaitre la seconde ligne ou lui dire que celle ci c'est la première que de l'ignorer

n°2118532
GordonF_69
Posté le 28-12-2011 à 11:22:20  profilanswer
 

Moi je mettrai tt le fichier dans une variable, apres un explode avec pour delimiteur un "retour a la ligne".
 
Puis apres ya plus qua copier le tableau de la 2e ligne jusqua la fin....

n°2120280
nisalon_ca​je
Posté le 09-01-2012 à 16:46:15  profilanswer
 

donc tu fais

 
Code :
  1. $data = file_get_contents($filename) // On récupère tout le contenu du fichier
  2. $data = explode("\n",$data);  // On divise selon les lignes
  3. unset($data[0]); // On enlève la première
  4. $data = array_values($data); // On reconstruit notre tableau pour avoir des indices allant de 0 à n-1 au lieu de 1 à n (pas sur que cette ligne soit nécessaire pour l'implode, teste sans et dis moi)
  5. $data = implode("\n",$data); // On recolle


Message édité par nisalon_caje le 09-01-2012 à 16:46:45
n°2120347
pop-pan
yay!
Posté le 10-01-2012 à 01:41:40  profilanswer
 

je propose ca,
pas testé mais ca devrait faire l'affaire.
 

Code :
  1. if (($handle1 = fopen("in.csv", "r" )) !== FALSE) { // ouvre fichier source
  2.     if (($handle2 = fopen("out.csv", "a" )) !== FALSE) { // ouvre fichier dest
  3.         $firstline = fgets($handle1, 4096); // on lit la premiere ligne pour faire bouger l'index sur la seconde.
  4.         while ((fputs($handle2,fgets($handle1, 4096),4096) !== FALSE); // tant que l'on peut copier du premier fichier (!eof) dans le second (string a ecrire !== false)
  5.         fclose($handle2);
  6.     }
  7.     fclose($handle1);
  8. }


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2120393
rufo
Pas me confondre avec Lycos!
Posté le 10-01-2012 à 10:00:05  profilanswer
 

A titre informatif, vous partez tous sur l'idée qu'un fichier csv, c'est une ligne dans le fichier csv = une ligne de donnée.
On peut parfaitement échapper le "\n".
 
Je vous recommande d'utiliser la fonction native de php pour lire des CSV : http://www.php.net/manual/fr/function.fgetcsv.php


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2120470
pop-pan
yay!
Posté le 10-01-2012 à 12:31:24  profilanswer
 

rufo a écrit :

A titre informatif, vous partez tous sur l'idée qu'un fichier csv, c'est une ligne dans le fichier csv = une ligne de donnée.
On peut parfaitement échapper le "\n".
 
Je vous recommande d'utiliser la fonction native de php pour lire des CSV : http://www.php.net/manual/fr/function.fgetcsv.php


 
a oui c'est vrai
 

Code :
  1. $delimiter = ',';
  2.     $enclosure = '"';
  3.     if (($handle1 = fopen("in.csv", "r" )) !== FALSE) { // ouvre fichier source
  4.         if (($handle2 = fopen("out.csv", "a" )) !== FALSE) { // ouvre fichier dest
  5.             $firstline = fgetcsv($handle1, 4096, $delimiter, $enclosure); // on lit la premiere ligne pour faire bouger l'index sur la seconde.
  6.             while ((fputs($handle2, $enclosure . implode($enclosure.$delimiter.$enclosure, fgets($handle1, 4096, $delimiter, $enclosure, $escape)).$enclosure.$delimiter.PHP_EOL,4096) !== FALSE); // tant que l'on peut copier du premier fichier (!eof) dans le second (string a ecrire !== false)
  7.             fclose($handle2);
  8.         }
  9.         fclose($handle1);
  10.     }


Message édité par pop-pan le 10-01-2012 à 12:31:57

---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins

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

  Lire mon fichier csv a partir de la deuxième ligne

 

Sujets relatifs
Où se trouve le fichier de descripteur de déploiement ?ajouter ligne avec moins de colonnes jtable java
[RESOLU] Compression de fichier pstSuppresion d'un bloc de ligne dans Excel
Mise a jour d'un site a partir d'un document .txt ?Conversion en binaire et écriture dans un fichier
Erreur d'écriture de fichier RMAN ORA-27040 Oraclefichier .csv vers la base de données
[PowerShell] Récupérer le nom d'un fichier avec Caractère Spécialmatrice à partir d'un fichier ( module graphe)
Plus de sujets relatifs à : Lire mon fichier csv a partir de la deuxième ligne


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