Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2007, 16h28   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 86
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 86
Points : 14
Points : 14
Par défaut [CSV] read_csv (ne pas lire les ligne vide)

bonjour
jutilise la fonction suivante pour lire un fichier csv


Code :
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 :
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
gpsevasion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2007, 19h08   #2
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

Code :
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.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 04h50   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 86
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 86
Points : 14
Points : 14
merci pour ta reponse
jai testé la fonction suivante

Code :
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 :
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 ?
gpsevasion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 14h04   #4
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
Je me suis trompé sur un point. Le code suivant marche :
Code :
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)
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 14h53   #5
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 86
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 86
Points : 14
Points : 14
super ton code fonctionne tres bien

merci pour ton aide ainsi que le temps passer a reflechir a mon pb
gpsevasion est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h32.


 
 
 
 
Partenaires

Hébergement Web