|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 4 ![]() |
Bonjour,
Dans le cadre de mon projet de stage, je dois lire un fichier CSV puis le traiter. Plus précisément le traitement consiste à : 1 - lire le fichier, 2 - utiliser des expressions régulières pour reconnaitre les lignes, 3 - inséré le tous en base de données. Rien de bien difficile au final, mais c'est à la troisième étape que sa coince ! En faite j'ai une ligne du type suivant : 871;257322;171957;0,6666;;;; L'expression la reconnait sans problème mais le souci, c'est quand le tout est inséré dans la base, le chiffre a virgule ne passe pas ! Je précise qu'aucune erreur est généré et que le résultat enregistré est 0.0000 Dans ma base, le champ pour cette donnée est de type float(10,9) J'ai déjà essayé beaucoup de chose pour remédier a se problème et je n'arrive toujours pas à remplacer la , par un . avant la requête d'insertion. Voici mon bout de code avec la dernière chose que j'ai testé pour changer la virgule, il se peut qu'il y est des erreurs : Code :
Si un sujet existe déjà, je m'en excuse mais je n'ai pas réussi à le trouver
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 991 ![]() |
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 4 ![]() |
Merci de ta réponse,
je vais essayé avec les fgetcsv et fputcsv mais j'ai quand même besoin de mes expressions régulières car j'ai 4 lignes "types" dans le fichier CSV que j'exploite. J'ai donc besoin de les reconnaitre pour faire le bon traitement, c'est à dire les envoyer au bonne endroit dans la base de données. quand j'aurais fais mes test je ferais un édit ----------------------------- EDIT ----------------------------- Pour lire les lignes, le fgtcsv me sort énormément d'erreur |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Yoann RousseauIngénieur Etudes et Développement Inscription : janvier 2008 Messages : 46 ![]() |
Bonjour,
En ce qui concerne la gestion du fichier CSV, je suis en accord avec Benjamin Delespierre : utiliser fgetcsv. D'après ton expression régulière, tu traites les 4 premiers éléments de ta ligne CSV. fgetcsv te renverra un tableau représentant chacun des éléments de ta ligne. Rien ne t'empêche alors de ne traiter que les 4 premières valeurs. En ce qui concerne ton problème d'insert BDD, tu utilises number_format pour transformer ta virgule en point. Attention, cette fonction attend en paramètre un float. Le séparateur décimal d'un float est le point et non la virgule, elle ne fera donc pas le travail demandé au vu de la valeur que tu lui passes (0,6666) [d'ailleurs tu devrais avoir un joli Notice qui traine quelque part...] Dans ton cas, un simple str_replace devrait faire l'affaire : |
|
10
|
|
|
#5 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 4 ![]() |
J'avais déjà essayé cette ligne, mais il se peut que je l'avais mal utilisé
Il y a un problème qui se pose maintenant, c'est quand utilisant le fgetcsv j'ai une erreur (plein en fait En gros, l'expression qui est une chaîne est comparé à tableau et sa me plante tous Je cherche comment corrigé sa, j'ai ma petite idée |
|
|
00
|
|
|
#6 | ||||||
|
Nouveau Membre du Club
![]() Yoann RousseauIngénieur Etudes et Développement Inscription : janvier 2008 Messages : 46 ![]() |
La question est : pourquoi tu continues à utiliser des expressions régulières ?
Un exemple simple pris sur php.net : Code :
Code :
Code :
Ou ai-je raté quelque chose ?? |
||||||
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 4 ![]() |
Je vais voir si je peux exploiter ces codes.
En fait, si je m'entête à utiliser les expressions régulières c'est parce que j'ai un fichier de se type : Citation:
Et la deuxième raison est que mon maître de stage me l'impose -------------------- Edit -------------------- J'ai finis par trouver la solution Car comme je m'en doutais, je l'avais mal utilisé la première fois. Après, concernant le fgetcsv, il est peut être très utile, mais je n'ai pas réussi à adapter tout mon code pour qu'il fonctionne. En tout cas, merci au personne qui on bien voulu m'aider !
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com