PHP: lecture dans un fichier et stockage dans une base de données

Résolu
parfait18 - 2 août 2012 à 11:47
 parfait18 - 2 août 2012 à 16:47
Bonjour,
après exécution du code ci après, les valeurs que j'ai dans la BD sont pas exactement celles lues dans le fchier. par exemple, dans le fichier je lis -1.5789 mais dans la BD je retouve -1.
comment faire pour stocker exactement les valeurs lues dans le fichier???
Merci à tous
PS. les champs rl1 et d1 sont de tyepes "float"
//la connexion à la BD est déja établie!! 
$fp =  fopen($fichier,"r+"); //$fichier=test.txt 
while($ligne=fgets($fp,255)) 
  {      
 list ($data1, $data2) = split (";", $ligne); 
 $query="INSERT INTO mesure1 (rl1,d1) VALUES ($data1,$data2)"; 
 $result = mysql_query($query)  or die (mysql_error()); 
   } 

15 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 août 2012 à 15:43
Bonjour,

Serait-ce un problème de séparateur décimal ? (entre . et , )

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 août 2012 à 16:20
Bonjour,

Il faut juste faire un remplacement de "," vers "." .
Genre avec un ... str_replace ou un truc du genre.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
3
cs_hassane86 Messages postés 54 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 13:44
bonjour,

si tu as mi les champs de type FLOAT, je ne vois pas pourquoi ton code ne marcherai pas, sauf si tu récupère une mauvaise valeur quelque part !!!
0
les champs sont bien de type FLOAT. voici un message d'erreur que j'obtiens:
"Column count doesn't match value count at row 1".
que faire ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_hassane86 Messages postés 54 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 14:57
cette erreur signifie que le nombre de champs que tu veux enregistrer est différent du nombre des champs de ta table.
0
ça coince car ma table contient exactement deux champs rl1 et d1 (dans cet ordre) et j'essaye d'enrégistrer deux valeurs.
ce pendant, quand je fait la manoeuvre:
$data1=(float)$data1;
$data2=(float)$data2;


juste avant l'insertion dans la table, je n'ai plus d'erreur mais les données ne correspondent pas!!!

que faire alors???
0
cs_hassane86 Messages postés 54 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 15:08
essaye de remplacé split par la fonction explode
0
pareil !!! j'ai le même message d'erreur

une autre idée?
0
en admettant que ce soit un problème de séparateur décimal, comment régler le problème???
0
cs_hassane86 Messages postés 54 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 15:57
panneau de configuration -> option regional et linguistique -> Personnaliser
et dans symbole décimale tu met "." au lieu de ","
0
le pb c'est que les données de mon fichier se présentent avec "," et non "." donc en effectuant le changement j'aurais encore un pb!

que faire???

en passant je ne retrouve pas "panneau de configuration" dans phpmyadmin !!!
0
cs_hassane86 Messages postés 54 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 2 août 2012
2 août 2012 à 16:39
panneau de configuration sur ton pc pas sur phpmyadmin :)

si c'est des virgule que tu a dans ton fichier, il faut utiliser str_replace comme il te la dit NHenry, et la je suis sur que sa va marcher
0
Super! str_replace cartonne et je suis aux anges!!

Merci à vous d'avoir aider un jeune camerounais en détresse!

euh, comment marquer ceci comme résolu sur ce forum???
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 août 2012 à 16:44
Bonjour,

Tu l'as fait en mettant "Réponse acceptée" :)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
cool!
encore merci.

Cordialement.
0
Rejoignez-nous