[CSV-PHP] problème de virgule
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 :cry:
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 :aie: :
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
| $link = mysql_connect("localhost", "root", "");
if (!$link)
{
die('Connexion impossible : ' . mysql_error());
}
else
{
mysql_select_db('pharmagen');
$fic = fopen($content_dir.$name_file, 'a+');
while(!feof($fic))
{
$ligne= fgets($fic,1024);
if (preg_match('#(\d{3});(\d{3,6});(\d{3,6});(0[,\.]\d{2,9});;;;#',$ligne))
{
list ($numO, $nbbd, $nbbdg, $tdgc) = explode(';', $ligne);
$taudgc=number_format($tdgc, 9, '.', '');
$sql = "INSERT INTO objectiforganisme VALUES ('4433', '$nbbd', '$nbbdg', '$taudgc','', '$numO');";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}
}
}
fclose($fic);
unlink($content_dir.$name_file);
mysql_close($link); |
J'espère que je vous ai pas trop embrouillé avec toute mes explication et que le problème posé est clair ! :oops:
Si un sujet existe déjà, je m'en excuse mais je n'ai pas réussi à le trouver :aie: