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 13/02/2007, 10h16   #1
Membre habitué
 
Inscription : mai 2004
Messages : 200
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 200
Points : 101
Points : 101
Par défaut [CSV] Problème avec un fichier csv

Bonjour à tous, voila je me pose un question, j'ai un fichier excel qu ej transforme en csv pour pouvoir insèrer le tout dans une bdd.

Tout fonctionne bien,meme l'insertion, le seul hic; c'est qu le fichier csv contient 1211 lignes, et que lorsque j'insère je met un petit compteur pour voir combien d'insertion le script me fait et la surprise, j'en ai 1212.

Soit une de plus. L'insert en plus à cette tête la .

Code :
INSERT INTO bp_article (libelle,reference,contenant,id_bp_produit) VALUES ("","","","6354")
Le problème viens du faite que quand il me compte mes lignes du fichier csv
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$i=0;
		    // ouverture du fichier en mode lecture (r = ready)
		    $fichier=fopen("laorav2.csv","r+");
		    // lecture ligne par ligne tant qu'on ne rencontre pas le code: fin de fichier(feof)  
		    while(!feof($fichier))
		        { 
		            $tableau[$i]=explode(";",fgets($fichier,1024));
		            $i++;
		        }
		    // fermeture du fichier
		    fclose($fichier);
		    $nblignes=$i;
si je fais afficher $nblignes il m'en ressort 1212 alors qu si j'ouvre le csv il y en a 1211.

Voila si vous savz pourquoi, je suis preneur
__________________
La programmation, c'est tout un art
gregal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 10h24   #2
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
tu fais ton $nblignes=$i; juste apres avoir incrementé $i ..... resultat $nblignes=$i; prend une ligne de trop !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 11h07   #3
Membre habitué
 
Inscription : mai 2004
Messages : 200
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 200
Points : 101
Points : 101
Citation:
tu fais ton $nblignes=$i; juste apres avoir incrementé $i ..... resultat $nblignes=$i; prend une ligne de trop !
Euh je ne vois pas trop ou j pourrai le faire sinon, car si je le met avant, il reste a zéro!!!
__________________
La programmation, c'est tout un art
gregal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 11h11   #4
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
je suis d'accord mais tu as demandé "pourquoi ?" , je t'explique !

maintenant tu peux faire :

__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 11h14   #5
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Moi je pense pas parce que à chaque tour de boucle $i vaut nombres d'éléments insérés - 1 car le tableau démarre à l'indice zéro, et donc quand on finit un tour de boucle après l'incrémentation logiquement $i vaut exactement le nombre d'éléments ajoutés.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 11h16   #6
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Bonjour,

Effectivement, ton incrémentation semble correcte.

N'y a-t-il pas une ligne vide en fin de fichier ?

Autre chose : tu ouvres en "r+" (lecture - ecriture). Je ne connais pas à fond ce mode d'ouverture, mais ne serait-il pas possible qu'il insère une ligne en fin de fichier pour se préparer à écrire ? Vu que ta fonction n'écrit pas dans le fichier, ne pourrais-tu pas ouvrir en mode "r" et voir ce qu'il se passe ?
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 11h19   #7
Membre habitué
 
Inscription : mai 2004
Messages : 200
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 200
Points : 101
Points : 101
Je viens d'essayer en mode "r" mais tjs pareil.

Pour c qui est du fichier csv, c un fichir excel à la base qui a été enregistrer en csv, donc oui dessous il y a ds lignes vides.

Donc sa peut venir de la, mais comment peut on faire pour que sa ne se produise pas
__________________
La programmation, c'est tout un art
gregal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 11h23   #8
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Un test de ligne vide...
Et il y a plein de façons de faire ce test, aussi je te laisse le soin de trouver et choisir.
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h14.


 
 
 
 
Partenaires

Hébergement Web