Bonjour
Je veux créer un bouton qui permet de sélectionner un fichier d'extension .csv et importer l'importation des informations qui les contient pour remplir une base de donnée.
avez vous une idée qui peut me servir?
Bonjour
Je veux créer un bouton qui permet de sélectionner un fichier d'extension .csv et importer l'importation des informations qui les contient pour remplir une base de donnée.
avez vous une idée qui peut me servir?
Bonjour,
Quels elements te bloquent pour réaliser tout cela ?
Les 3 étapes sont basiques :
- upload d'un fichier
- lecture d'un csv
- insertion dans une bdd
Concernant l'upload j'ai utiliser les instruction suivantes:
<form action="ajouter.php" method="post" enctype="multipart/form-data" name="form1">
<p><input type="file" name="file" /></p>
<input type="submit" name="Submit" value="Submit">
</form>
qui me permet de selectionner mon csv pour le traiter dans une autre page
mais maintenant je suis bloqué dans la lecture du d'un csv et l'insertion dans une base base donnée.
pouvez vous m'aider?
Quels elements te bloquent ?
Il a moult sujet concernant les csv sur le forum et egalement des exemples dans la documentation PHP.
je veux savoir comment récupérer les données d'un fichier csv et les insérer dans une base de donnée Mysql et je ne sais pas comment.
j'ai pas trouvé les instructions qui peuvent me donner la résultat voulu
pouvez vous m'aider?
Montre nous ce que tu as fais, et nous pourrons t'aider a le corriger.
Merci pour votre intérêt de mon problème
voila le code que j'ai fait pour le moment:
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 <?php require("config.php"); // 1. Connexion au SGBD MySQL mysql_connect(localhost, $username, $password); mysql_select_db("dev_facturation"); if (isset($_FILES['file'])) { $file = $_FILES['file']['tmp_name']; $handle = fopen($file,'r'); $row = 1; $handle = fopen("$file", "r"); while (($data = fgetcsv($handle, 4096, ",",'"')) !== FALSE) { //recuperer les données et les stoker dans la base de donnée fclose($handle); ?>
Quel probleme rencontres-tu sur cette partie ?
comment je peut faire la distinction entre les différents champs ,les récupérer et les stoker dans la base de donnée?
Pour la lecture des champs csv, tu as un exemple dans la documentation de PHP.
bonjour
Voila mon nouveau code:
mais les information ne sont pas insérer dans le tableau le tableau reste vide
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 <?php // 1. Connexion au SGBD MySQL require("config.php"); // 1. Connexion au SGBD MySQL mysql_connect($dbhost, $dbuser, $dbpasswd); mysql_select_db($db_clients); if (isset($_FILES['file'])) { $file = $_FILES['file']['tmp_name']; $handle = fopen($file,'r'); $row = 1; $req1=mysql_query("DELETE FROM `clients`"); while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) { $num = count($data); $donnee="'".$data[0]."'"; for ($c=1; $c < $num; $c++) { if($c==3 || $c==6 || $c==15 || $c==25) { $donnee=$donnee.",".$data[$c]; } else{ $donnee=$donnee.",'".$data[$c]."'"; } } $req = mysql_query("INSERT INTO `clients` VALUES(".$donnee.")" ); } //$handle = fopen("$file", "r"); fclose($handle); mysql_close(); } else{ echo "erreur au niveau de l'importation du fichier"; } ?>
pouvez vous m'aider?
je veux savoir s'il y a des type entier dans la table ça me gène dans le remplisage?
Voici le code que j'ai adapté après pas mal de déboires et ceci grace à ce forum:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 <?php ////include ("inc/prive.inc.php"); include("haut.inc.php"); include ("inc/fonctions.inc.php"); ////include ("config/constantes.inc.php"); Normalisation(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>Gestion de l'importation des données de Sconet</title> <a href="index.php">****Accueil Général de la Gestion ****</a> <script language="javascript" type="text/javascript" src="inc/fonctions.js"> </script> </head> <body> <?php // autorisations pour la page ////autoriser ("admin"); // menu //require ("inc/menu.inc.php"); ?> <div id="texte"> <h2>Importation du fichier CSV de Sconet, cette importation est longue, veuillez patienter</h2> <?php $mode = isset($_POST['mode']) ? $_POST['mode'] : Null; switch ($mode) { case 'Confirmer': // ouvrir la BD include ("variables.inc.php"); $lienDB = mysql_connect($bddserver, $bddlogin, $bddpassword); mysql_select_db ($bdd); //Vide la table 'nom_de_la_table' $query = "DELETE FROM elevescomplete"; $result = mysql_query($query); echo $query; $handle = fopen("./eleves.csv", "r"); $ligne = 1; while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) { $num = count($data); if ($ligne == 1) { // sur la première ligne, on trouve les intitulés des colonnes $debutsql = "INSERT INTO elevescomplete ("; for ($i=0; $i < $num; $i++) { $debutsql .= "`$data[$i]"; if ($i < $num-1) $debutsql .= "`,"; } $debutsql .= "`) VALUES ("; } else { // sur les lignes suivantes, on trouve les infos à introduire dans la BD $sql = $debutsql; for ($i=0; $i < $num; $i++) { $sql .= "'".mysql_real_escape_string($data[$i])."'"; if ($i < $num-1) $sql .= ","; else $sql .= ");"; } mysql_query($sql); if (mysql_error()) { echo mysql_error() ."<br>\n"; $erreur = true; } } $ligne++; //echo "$sql <br />"; //mysql_query($sql); } echo "L'importation des données semble s'être bien passée."; fclose($handle); mysql_close ($lienDB); if ($erreur == false) { $texte = "L'importation des données semble s'être bien passée."; //redir ("index.php","",$texte, 5000); } else { $texte = "Il s'est produit une erreur durant l'importation."; //redir ("index.php","",$texte, 10000); } break; case 'Envoyer': // recopie du fichier sous un nom définitif $nomTemporaire = $_FILES['fichierCSV']['tmp_name']; if( !move_uploaded_file($nomTemporaire, "./eleves.csv") ) exit("Impossible de copier le fichier."); echo "<div style=\"text-align: center\">\n"; echo "<form name=\"form1\" method=\"post\" action=\"{$_SERVER['PHP_SELF']}\">\n"; echo "<p>Le fichier CSV a été copié sur le serveur.</p>\n"; echo "<p>Veuillez confirmer l'exportation des données.</p>\n"; echo "<p>\n<input type=\"reset\" name=\"submit\" value=\"Annuler\""; echo "onclick=\"javascript:history.go(-1)\">\n"; echo "<input type=\"submit\" value=\"Confirmer\" name=\"mode\"></p>\n"; echo "</form>\n"; echo "</div>\n"; // tableau de prévisualisation echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\n"; $handle = fopen("./eleves.csv", "r"); //while (($data = fgetcsv($handle, 5000, ",","\"")) !== FALSE) while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) { $num = count($data); echo "<tr>\n"; for ($i=0; $i < $num; $i++) echo "<td>".$data[$i] . "</td>\n"; echo "</tr>\n"; } fclose($handle); echo "</table>\n"; break; default: echo "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\" "; echo "name=\"form1\" enctype=\"multipart/form-data\">\n"; echo "<input name=\"fichierCSV\" type=\"file\">\n"; echo "<input name=\"mode\" value=\"Envoyer\" type=\"submit\">\n"; echo "</form>\n"; break; } ?> </div> </body> </html>
Merci pasbonte pour votre aide mais j'ai le même souci même avec ton code!!
est ce que les type des champs intervient dans la requête puis ce que j'ai des champs de type int?
parceque j'ai obtenue le message suivant:Column count doesn't match value count at row 1
sachant que mon code est:
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 <? require("config.php"); $db=mysql_connect($dbhost, $dbuser, $dbpasswd); if (!$db) { echo "Probleme de connexion avec MySQL !</body></html>"; exit; } mysql_select_db($db_clients,$db); if (isset($_FILES['file'])) { $file = $_FILES['file']['tmp_name']; $handle = fopen($file,'r'); //$row = 1; $handle = fopen("$file", "r"); $req1=mysql_query("TRUNCATE TABLE clients"); while (($data = fgetcsv($handle, 0,",")) !== FALSE) { $num = count($data); $champs="'".$data[0]."'"; for ($c=1; $c < $num; $c++) { $champs=$champs.",'".$data[$c]."'"; } $req=mysql_query("INSERT INTO clients VALUES(".$champs.")") OR die(mysql_error()); } } else {echo "error lors de l'importation du fichier"; } ?>
Bonjour,
Le message d'erreur signifie que le nombre de valeur que tu essaies d'insérer ne correspond pas au nombre de colonnes de la table.
merci pour votre aide
j'ai modifier la struture de ma table pour qui soit compatble avec les données du fichier csv et c'est bon ça marche
merci pour votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager