pourquoi t'a deux boucles ... tu fais des explode sur ; mais le fgetcsv sur ,, le require_once dans la boucle, le $i qui sert a rien, les paramètres de requete même pas échappés, c'est franchement du grand nawak ...
Version imprimable
pourquoi t'a deux boucles ... tu fais des explode sur ; mais le fgetcsv sur ,, le require_once dans la boucle, le $i qui sert a rien, les paramètres de requete même pas échappés, c'est franchement du grand nawak ...
Comme tu as fait avec les séparateurs utilisés
Ou en plus élégant celle d'Ericd69, je connaissais pas avec les {}Code:
1
2
3 //$date2=explode("/",$donnee[2]); //$donnee[2]=$date2[2].'-'.$date2[1].'-'.$date2[0];
disons que tu peux mettre un seul indice directement, php est permissif, mais si tu veux en mettre plusieurs c'est une écriture possible pour ne pas écrire de multiple "." partout... ça ne marche que pour des variables avec ou sans indices pas pour des calculs...
le problème c'est qu'amandine tripatouille son code plutot que de copié/collé le code corrigé...
du coup ça induit d'autres problèmes... :calim2:
Oui j'ai vu Eric mais sa ne fonctionne pas. Sa me met tout dans la variable $nom!! Alors je cherche alors arreté de dire que je bidouille.
Oui je le comprend car c'est moi qui les fait.
Moi, je trouve pas forcement que c de la bidouille ... et puis ici c pas date que nous utilisons donc pas de maniement de format. Mais je respecte ...
Par contre $i c pour l'affichage du n° de ligne, les deux boucles c aussi en fonction du format Csv utilisé ...
Pour l'échappement, c qd même du à l'utilisation de mysql_query ... ya du progrès maintenant sur d'autre fonctions.
Pour un débutant comme moi, je trouve pas ça si pourri (en plus faut pas décourager les gens non !) :roll:
Mais mon explode ne marche pas. Cela ne me l'incère pas dans la base. Peut-tu m'aider French s'il te plait? Merci
Voir message:
Format de ton fichier Csv, les ';' entre champs les ',' entre ligne ?
Merci
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php ini_set('display_errors', 1); error_reporting(-1); require_once 'connexion.php'; $fichier = fopen('pers.csv', 'rb'); $requete = "INSERT INTO equipements.sapeurs (matriculesp, nomsp, prenomsp, daterecrutementsp, numcs) VALUES ('%s','%s','%s','%s','%s')"; while (($donnee = fgetcsv($fichier, 0, ';')) !== false) { $date = date_parse_from_format('d/m/Y', $donnee[2]); $donnee[2] = $date->format('Y-m-d'); $donnee = array_map('mysql_real_escape_string', $donnee); $sql = vsprintf($requete, $donnee); $query = mysql_query($sql); if (false === $query) { echo mysql_error(), ' : ', $sql; } } fclose($fichier);
Ah tu recu mon code French?
amandine, dans le code que tu avais refais à partir du mien tu as viré la taille de ligne à lire (paramètre n°2 de fgetcsv), que tu as oublié aussi stealth35, en mettant le paramètre 3 (le délimiteur de colonne): ";"
et mon code était juste basé sur le tien que tu avais fait presque toute seule hors quelques erreurs qu'on a corrigé ensemble...:aie:
Même en changeant ca, sa me met tout dans ma variable $nom!
Voila Eric mon fichier csv
y a rien :mouarf:
envoi en mp avec l'attachement de fichier surtout s c'est des données réelles et pas de test...:zoubi:
Donc au final, reste ton changement de format de date (puisque le reste marche d'après ton dernier code)
Fait attention à $date_finale dans l'insertCode:
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 <?php require_once('connexion.php'); // Bien que require_once le fait qu'une fois, c mieux ici $i = 1; if (($fichier = fopen("pers.csv", "r")) !== FALSE) { while (($ligne = fgetcsv($fichier,",")) !== FALSE) { $num = count($ligne); echo "<p> ligne numero $i: <br /></p>\n"; $i++; for ($j=0; $j < $num; $j++) { $donnee=explode(";",$ligne[$j]); echo $donnee[0] ."<br />"; //nom echo $donnee[1] ."<br />";//prenom echo $donnee[2] ."<br />"; //date echo $donnee[3] ."<br />"; //matricule echo $donnee[4] ."<br />"; //centre // Modif format date $date2=explode("/",$donnee[2]); $date_final=$date2[2].'-'.$date2[1].'-'.$date2[0]; $requete = "INSERT INTO EQUIPEMENTS.SAPEURS (MATRICULESP,NOMSP,PRENOMSP,DATERECRUTEMENTSP,NUMCS) VALUES ('$donnee[3]','$donnee[0]','$donnee[1]','$date_final','$donnee[4]')"; mysql_query($requete); } } fclose($fichier); } ?>
vous refaites les même erreurs ...
Bein non puisque ça marche avec tous les champs sauf la date :roll:
Je pense qu'elle a un fichier avec des champs distincts par des ";" et pour chaque ligne une ',' sinon il y aurait des erreurs :?
Donc pour la date, c peut être pas terrible mais ça devrait être Ok ()
par contre j'aurais escapé les chaines qd même c sûr (comme ton code ou avec AddSlashes) à cause du mysql_query (que j'utilise plus d'ailleurs)