Bonjour,
Difficile d'expliquer mon problème simplement avec le titre.
Mon objectif à atteindre est le suivant :
- Récupérer les données d'un fichier .CSV (généré par Excel)
- Les mettre dans un tableau
- Parcourir ce tableau pour remplir une table de ma base de données avec plusieurs champs.
Je bloque sur ce troisième point. Lorsque j'insère mes données, il m'arrive un truc chelou. Après avoir inséré correctement les éléments de la 1ère colonne, je me retrouve à remplir la 2ème colonne avec une quantité d'éléments vides au départ qui correspondent en fait aux éléments que j'ai remplis dans la 1ère.
En gros voilà ce que j'obtiens :
1 vide
2 vide
3 vide
4 vide
5 vide
a
b
c
Alors que je voudrais :
1 a
2 b
etc...
Et voici le code :
Je suis pas très doué et j'ai du mal à comprendre pourquoi il me fait ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 $mycsvfile = "CAP_quadri_3_2008_VFIN.csv"; // j'ouvre le fichier $fh = fopen ($mycsvfile, 'r'); // Je charge tout le fichier dans une variable $contents $contents = fread($fh, filesize($mycsvfile)); // Je ferme le handle de fichier fclose ($fh); // J'utilise une fonction pour tout exploser $alldata = explodedata(trim($contents)); // Pour chacune des lignes de $aldata for ($x=0;$x<count($alldata);$x++) { for ($y=0;$y<count($alldata[0]);$y++) { $evenement = $alldata[$x][$y]; echo " $evenement "; if ($x==1) { $resultat = mysql_query("INSERT INTO edt (date) VALUES ('".$evenement."')") or die ('Erreur dans la requête : '.mysql_error()); } else if ($x==2) { $resultat = mysql_query("INSERT INTO edt (jour) VALUES ('".$evenement."')") or die ('Erreur dans la requête : '.mysql_error()); } } } //Fonction EXPLODEDATA function explodedata($contents) { //Initialisation des tableaux $mydata = array(); $mycontents = array(); //Je découpe toutes les lignes $mydata = split("\n|\r\n", $contents); //Pour chacun des lignes for ($x=0;$x<count($mydata);$x++) { //Je splitte la ligne via les points-virgules $mycontents[$x] = split (";", $mydata[$x]); } return ($mycontents); }
Merci !
Partager