Probleme d'import d'un fichier .csv

Résolu/Fermé
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009 - 25 mars 2009 à 16:07
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009 - 17 avril 2009 à 19:04
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
A voir également:

3 réponses

lefadrine Messages postés 28 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 20 avril 2010 11
17 avril 2009 à 10:40
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
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
26 mars 2009 à 22:07
Coucou ,
y'as-t-il quelqu'un pour m'aider?
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
17 avril 2009 à 19:04
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
0