Rechercher : dans
Par :

Probleme d'import d'un fichier .csv

Dernière réponse le 17 avr 2009 à 19:04:24 sahoumita, le 25 mar 2009 à 16:07:53 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « probleme d'import d'un fichier .csv » dans :
[Python] Lire et écrire des fichiers CSV VoirLIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce sujet, mais uniquement...
Excel - Convertir fichier(s) CSV / XLS VoirComme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification...
Exporter à coup sûr du CSV VoirExporter des données au format CSV n'est pas si trivial qu'il n'y paraît. Dès que vos données contiennent des virgules ou des guillemets, tout semble partir en vrille. Il y a une astuce. Voici comment procéder pour exporter à coup sûr vos...
Fichier CSV VoirFormat CSV Un fichier CSV est un fichier tableur, contenant des données sur chaque ligne séparés par un caractère de séparation (généralement une virgule ou un point-virgule). Comment lire un fichier CSV ? Il peut être lu avec un tableur tel que...

1

sahoumita, le 26 mar 2009 à 22:07:36

Coucou ,
y'as-t-il quelqu'un pour m'aider?

Répondre à sahoumita

2

lefadrine, le 17 avr 2009 à 10:40:59
  • +1

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...

Répondre à lefadrine

3

 sahoumita, le 17 avr 2009 à 19:04:24

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

Répondre à sahoumita