Bonjour,
Tout d'abord meilleurs vœux et surtout bonne santé.
Depuis quelques semaines que je galère à faire fonctionner le code ci dessous pour mettre à jour base Mysql depuis mon fichier CSV.
Les colonnes de ma table sont: ID,col0,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,office
Les colonnes de mon fichier CSV sont: col0,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11
Voilà les erreur que j'ai eu:
Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 3 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 4 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 5 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 6 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 7 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 8 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 9 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 10 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
Notice: Undefined offset: 11 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 33
'(\'\',\'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',\'\')'
Notice: Undefined variable: req in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\export_1.php on line 52
voici la structure d'une ligne de fichier CSV:
Code php : 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56 <?php $cn=mysql_connect("localhost","root","")or die ("probleme de connection"); mysql_select_db("bdmou",$cn)or die("probleme de selection de base de donnée"); //Faire une requete sql pour selectionner uniquement les ID d'ordre de mvt puis mettre le resultat dans un tableau $sql_num = "SELECT ID FROM user "; $query_num = mysql_query($sql_num) or die ('Erreur SQL_num : '.mysql_error()); $data_num = mysql_fetch_assoc($query_num); $tot_num = mysql_num_rows($query_num); $tab_num = array(); $i = 0; while($data_num = mysql_fetch_assoc($query_num)) { $tab_num[$i] = $data_num['ID']; $i++; } //Préparation des variables $DOSSIER, $FICHIER et $TABLE $nom_fichier = 'report.csv'; //"nom_du_fichier_csv"; $nom_table = 'user'; //"nom_de_la_table_sql"; // Lancement de la lecture du fichier csv et insertion des données dans la table Mysql nom_de_ma_table_sql $fichier = fopen($nom_fichier, "r"); //Ouverture du fichier en lecture while (!feof($fichier)){//tant qu'on est pas a la fin du fichier : // On recupere toute la ligne $uneLigne = fgets($fichier, 4096); //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ',') $tableauValeurs = explode(",", $uneLigne); // Recensement des données, ici il y a 20 champs donc de [0] a [19]. (Etape facultative) $valeurs = "('', '".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."', '".$tableauValeurs[8]."', '".$tableauValeurs[9]."', '".$tableauValeurs[10]."', '".$tableauValeurs[11]."', '')"; var_export($valeurs); //Vérification de la presence de la ligne dans la table if(isset($tableauValeurs[3])){ if(($tableauValeurs[3] != "ID") && ($tableauValeurs[3] != 0) && !in_array($tableauValeurs[3], $tab_num)){ // On crée la requete pour inserer les donneés $sql = "INSERT INTO ".$nom_table." VALUES ".$valeurs; echo $sql; $req = mysql_query($sql)or die('<br> Erreur SQL ! '.$req.'<br />'.mysql_error()); } else{ // Affiche le numero de la ligne qui n'a pas ete inserée echo '<font style="color:red;">'.$tableauValeurs[3]."</font><br>"; } } // la ligne est finie donc on passe a la ligne suivante de la boucle While } //vérification et envoi d'une réponse à l'utilisateur if($req){ echo"Ajout dans la base de données effectué avec succès"; } ?>
col0,"col1","col2","col3","col4","col5","col6","col7","col8","col9","col10","col11"
La fonction var_export($valeurs) affichait bien les résultats.
Mon idée est de mettre à jour que les données modifiées et de rajouter celles n 'y sont .
J'espère avoir une aide si vous voyez quelques chose d'anormal.
Merci d'avance.
Partager