Probleme d'import d'un fichier .csv [Résolu/Fermé]

Signaler
Messages postés
52
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
30 juin 2009
-
sahoumita
Messages postés
52
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
30 juin 2009
-
Bonjour,
j'ai un petit probleme qui me bloque Et j'espere avoir une solution.
j'ai essayé d'importer des données d'un fichier .csv vers ma base mysql et ça a finalement marché aprés plusieurs essais.Mais le probleme c'est que lorsque les données sont importées une ligne vide s'ajoute aussi dans ma table et je ne sais ni la cause de ce probléme ni la solution bien sure.
Donc pour etre plus claire,voici mon code:


<?php
$fichier = "C:\Program Files\wamp\www\PHP\Book1.csv";
$db = mysql_connect("****","****","***") or die("Impossible de se connecter la base de donnees");
mysql_select_db("database1");
// ouverture du fichier en lecture
if (file_exists($fichier))
$fp = fopen("$fichier", "r");
else{ // fichier inconnu
echo "Fichier introuvable !<br>Importation stoppe";
exit();
}
// lors de l'importation faite gaffe au point virgule dans les commentaires car ca va vous décaler l'import
// importation
while (!feof($fp)){
$ligne = fgets($fp,4096);
$liste = explode(",",$ligne); // on cree un tableau des elements separe par point virgule
$id = $liste[0];
$login = $liste[1];
$pass_md5 = $liste[2];
$fonction = $liste[3];
$query = "INSERT INTO membre VALUES('$id','$login','$pass_md5','$fonction');";
$result= mysql_query($query, $db);
if (mysql_error()){
echo "Erreur dans la base de donnees soit des virgule sont presente, soit votre hebergeur vous lock <br> ou tout simplement

pour l'erreur suivante : ".mysql_error();
echo "<br>Importation stope";
fclose($fp);
exit();
}else{
echo "ok<br>";
}
}
echo "<br>Importation termine, avec succes.";
fclose($fp);
mysql_close($db);
?>




et apres execution de ce code voici ce qu'on m'indique:

ok

Notice: Undefined offset: 1 in C:\Program Files\wamp\www\PHP\raykhdm3.php on line 19

Notice: Undefined offset: 2 in C:\Program Files\wamp\www\PHP\raykhdm3.php on line 20

Notice: Undefined offset: 3 in C:\Program Files\wamp\www\PHP\raykhdm3.php on line 21
ok

Importation termine, avec succes. Réseau CommentCaMarche
CommentCaMarche.net en.kioskea.net es.kioskea.net pt.kioskea.net Droit-Finances.net Santé-Médecine.netSUPINFO, école d'ingénieurs Glossaire 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A propos - Conditions générales - Plan - Top 50 - Partenaires - Contact - Index des marques - © Tous droits réservés 2009



J'attends votre aide car j'en ai vraiment besoin
Et merci d'avance

3 réponses

Messages postés
28
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
20 avril 2010
11
Salut,
personnellement j'avais eu pas mal de problèmes aussi avec l'importation de csv lorsque j'utilisais une boucle while avec !feof comme condition avec la fonction fgets...

Après quelques recherches, je me suis plutôt tourné vers la fonction php fgetcsv( )

En général j'utilise le script suivant pour importer mes données dans ma base et jusqu'à présent pas eu de problème (tant au niveau mysql que postgre) :

//on ouvre le fichier passé en paramètre
$fic = fopen ($fichier, 'rb');

while ( ($champs = fgetcsv($fic, 1024, ",") ) !== FALSE)
{
//declaration des champs à insérer, 4 dans ton cas
$val1 = $champs[0];
$val2 = $champs[1];
$val3 = $champs[2];
$val4 = $champs[3];

//insertion dans base
$requete = "INSERT INTO membre VALUES('$val1', '$val2', '$val3','$val4') ";
....
}
//on ferme le fichier
fclose($fic);

essaie ça...
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86507 internautes nous ont dit merci ce mois-ci

Messages postés
52
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
30 juin 2009

Coucou ,
y'as-t-il quelqu'un pour m'aider?
Messages postés
52
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
30 juin 2009

Merci infiniment lefadrine,
tu sais depuis le jour où j'ai posté ce problème personne ne m'a répondu et je n'ai pas trouvé de solutions mais aprés avoir fait des modifications dans mon code selon ce que tu m'a proposé tout marche à merveille.
Maintenant, juste pour améliorer mon code,j'aimerais ajouter un bouton parcourir dans mon code pour laisser à l'utilisateur la possibilité de choisir son propre fichier .CSV mais je ne sais pas comment le faire.Donc, est-ce-que t'as une idée?
Et en tt cas merci beuacoup