[resolu] compter les lignes d'un fichier .csv

compter les lignes d'un fichier .csv [resolu] - PHP - Programmation

Marsh Posté le 23-06-2004 à 16:49:59    

Salut à tous
J'aimerais juste savoir comment je pe faire pour compter les lignes d'un fichier .csv (qui vient d'un fichier excel)?
En fait je veut récupérer dans un tableau tous le fichier mais il me mais aussi une ligne vide. Il me faudrait alors un moyen de la virer  
 
Merci


Message édité par arma le 24-06-2004 à 09:40:07
Reply

Marsh Posté le 23-06-2004 à 16:49:59   

Reply

Marsh Posté le 23-06-2004 à 16:59:11    

une boucle qui teste la fin de fichier avec feof, et dans cette boucle un compteur que tu incrémentes à chaque tour de boucle pour chaque ligne trouvée avec fgets()


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 23-06-2004 à 17:01:52    

c ce que je fais et ca marche pas il me prend en compte la dernière ligne qui est pourtant vide.

Reply

Marsh Posté le 23-06-2004 à 17:02:58    

arma a écrit :

c ce que je fais et ca marche pas il me prend en compte la dernière ligne qui est pourtant vide.


bah une ligne vide reste une ligne...s'il y a effectivement un retour à la ligne c'est normal, non? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-06-2004 à 17:05:14    

skeye a écrit :

bah une ligne vide reste une ligne...s'il y a effectivement un retour à la ligne c'est normal, non? :??:


le fichier .csv est créé a partir d'un fichier excel et je ne fais pas de retour a la ligne donc il n'es tpas censé prendre ne compte cette dernière ligne il es tcensé faire feof

Reply

Marsh Posté le 23-06-2004 à 17:11:48    

montre ton code


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 23-06-2004 à 17:15:27    

T509 a écrit :

montre ton code


 
$myFile = fopen("company.csv",r)
$i = 0;
   while (!feof($myFile)){
         $myLine=fgets($myFile, 500);
         $tab = explode(";", $myLine);
 
         if ($i != 0){
           $name =$tab[0];
           $nb_client=$tab[1];
           $req="INSERT INTO Niveau1 ...
           }
        $i++
        }
fclose($myFile);
 
//le $i est la pour virer la première ligne
 

Reply

Marsh Posté le 23-06-2004 à 17:23:53    

apparement, tu veux insérer un CVS en BDD, je fais autrement et je laisse la BDD s'en occuper tout seul :
 

Code :
  1. $requete_remplissage_table = "LOAD DATA LOCAL INFILE 'fichier.csv' INTO TABLE `table`
  2.    FIELDS TERMINATED BY ','
  3.    ENCLOSED BY '\"'
  4.    LINES TERMINATED BY '\r\n'
  5.    (`champ1`, `champ2`, `champ3`, `champ4`, `champ5`)";


 
Le fichier csv se trouve sur le serveur dans le même dossier que le script php qui effectue cette requête SQL


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 23-06-2004 à 17:27:04    

T509 a écrit :

apparement, tu veux insérer un CVS en BDD, je fais autrement et je laisse la BDD s'en occuper tout seul :
 

Code :
  1. $requete_remplissage_table = "LOAD DATA LOCAL INFILE 'fichier.csv' INTO TABLE `table`
  2.    FIELDS TERMINATED BY ','
  3.    ENCLOSED BY '\"'
  4.    LINES TERMINATED BY '\r\n'
  5.    (`champ1`, `champ2`, `champ3`, `champ4`, `champ5`)";


 
Le fichier csv se trouve sur le serveur dans le même dossier que le script php qui effectue cette requête SQL


 
je ne pe pas faire comme ca car g des valeurs dans le .csv qu'il faut que je prenne et que je transforme avant de les entrer dans la base.
 
Et oui le fichier est sur le serveur dans le meme repertoire

Reply

Marsh Posté le 23-06-2004 à 17:35:35    

essaie ceci
 

Code :
  1. $lien_bdd = ...
  2. $myFile = fopen("company.csv",r)
  3. $i = 0;
  4.    while (!feof($myFile)){
  5.          $i++;
  6.          $myLine=fgets($myFile);
  7.          $tab = explode(";", $myLine);
  8.          if ($i > 1 && strlen($tab[0]) >0){
  9.            $name =$tab[0];
  10.            $nb_client=$tab[1];
  11.            $req="INSERT INTO Niveau1 ...
  12.            }
  13.         }
  14. fclose($myFile);


 
La différence majeure est la suppression du paramètre optionnel de fgets (à mettre si tes lignes font plus de 8Ko)


Message édité par T509 le 23-06-2004 à 17:36:10

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 23-06-2004 à 17:35:35   

Reply

Marsh Posté le 23-06-2004 à 17:49:36    

ok je v essayer merci

Reply

Marsh Posté le 24-06-2004 à 09:11:26    

Ca marche merci bcp

Reply

Marsh Posté le 24-06-2004 à 09:24:08    

Il n'y a plus qu'à fermer le topic


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 24-06-2004 à 09:36:48    

le truc c que je sais pas comment on met résolu...

Reply

Marsh Posté le 24-06-2004 à 09:38:48    

arma a écrit :

le truc c que je sais pas comment on met résolu...


bouton éditer sur le premier post...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-06-2004 à 11:20:19    

On peut aussi utiliser la fonction file qui mets directement le contenu d'un fichier dans un tableau :)

Reply

Marsh Posté le 28-06-2004 à 09:15:36    

IL y a la fonction fgetcsv pour les fochier csv...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed