IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[CSV] read_csv (ne pas lire les ligne vide)


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Points : 46
    Points
    46
    Par défaut [CSV] read_csv (ne pas lire les ligne vide)
    bonjour
    jutilise la fonction suivante pour lire un fichier csv


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function read_csv( $filename, $separateur)              // transfert le fichier dans un tableau
    {
     if ( $FILE=fopen($filename,"r") )                      // ouverture du fichier
     {
      while ($ARRAY[]=fgetcsv($FILE,1024,$separateur));     // lire ligne par ligne et coupe colonne par colonne
      fclose($FILE) ;                                       // ferme le fichier
      array_pop($ARRAY);                                    // efface la derniere ligne
      return $ARRAY ;                                       // renvoie le tableau
     }
    }


    Dans mon fichier il y a des lignes vides, comment lire toutes les lignes sauf les lignes vides.

    mon fichier csv :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    a,a,valeur a
     
     
    b,b,valeur b
     
    c,c,valeur c
    d,d,valeur d
     
    e,e,valeur e
    f,f,valeur f
    g,g,valeur g

    avez vous une idée pour eviter de lire les ligne vide ?
    merci pour votre aide

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($line=fgetcsv($FILE,1024,$separateur)
    {
      if (!(is_null($line)))
      {
        $ARRAY[]=$line;
      }
    }
    car fgetcsv renvoit NULL si la ligne de ton CSV est nulle.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    merci pour ta reponse
    jai testé la fonction suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function read_csv( $filename, $separateur)
    {
     if ( $FILE=fopen($filename,"r") )
     {
     
     while ($line=fgetcsv($FILE,1024,$separateur))
    {
      if (!(is_null($line)))
      {
        $ARRAY[]=$line;
      }
    }
      fclose($FILE) ; 
      array_pop($ARRAY); 
      return $ARRAY ;                                       
     }
    }
    et voila le resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [0] => Array ( [0] => ) [1] => Array ( [0] => a [1] => a [2] => valeur a ) [2] => Array ( [0] => ) [3] => Array ( [0] => ) [4] => Array ( [0] => b [1] => b [2] => valeur b ) [5] => Array ( [0] => ) [6] => Array ( [0] => c [1] => c [2] => valeur c ) [7] => Array ( [0] => d [1] => d [2] => valeur d ) [8] => Array ( [0] => ) [9] => Array ( [0] => e [1] => e [2] => valeur e ) [10] => Array ( [0] => f [1] => f [2] => valeur f ) [11] => Array ( [0] => g [1] => g [2] => valeur g ) [12] => Array ( [0] => ) [13] => Array ( [0] => ) [14] => Array ( [0] => ) )
    toujour le meme pb ....

    je me suis trompé ? ou je n ai pas compris ton explication ?

    qu en pensez vous ?

  4. #4
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Je me suis trompé sur un point. Le code suivant marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($line=fgetcsv($FILE,1024,$separateur))
    {
    	if (!empty($line[0]))
    	{
    		$ARRAY[]=$line;
    	}
    }
    PS : essaie d'éviter d'utiliser des variables en majuscules car c'est habituellement utilisé pour la déclaration de constantes (bien que ça ne soit pas obligatoire)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    super ton code fonctionne tres bien

    merci pour ton aide ainsi que le temps passer a reflechir a mon pb

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2011, 13h46
  2. [WD-2007] Ne pas numéroter les lignes vides?
    Par Psydux dans le forum Word
    Réponses: 2
    Dernier message: 15/09/2010, 18h27
  3. [CSV] fopen() - Ne pas lire la 1ère ligne
    Par arnogb69 dans le forum Langage
    Réponses: 3
    Dernier message: 02/06/2008, 16h17
  4. ne pas afficher les lignes Vides
    Par k-eisti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/05/2007, 18h02
  5. Réponses: 2
    Dernier message: 04/05/2006, 13h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo