PHP: lecture dans un fichier et stockage dans une base de données [Résolu]

- - Dernière réponse :  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()); 
   } 
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
14444
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 mai 2019
158
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
14444
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 mai 2019
158
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
54
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 août 2012
0
Merci
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 !!!
Commenter la réponse de cs_hassane86
0
Merci
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 ???
Commenter la réponse de parfait18
Messages postés
54
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 août 2012
0
Merci
cette erreur signifie que le nombre de champs que tu veux enregistrer est différent du nombre des champs de ta table.
Commenter la réponse de cs_hassane86
0
Merci
ç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???
Commenter la réponse de parfait18
Messages postés
54
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 août 2012
0
Merci
essaye de remplacé split par la fonction explode
Commenter la réponse de cs_hassane86
0
Merci
pareil !!! j'ai le même message d'erreur

une autre idée?
Commenter la réponse de parfait18
0
Merci
en admettant que ce soit un problème de séparateur décimal, comment régler le problème???
Commenter la réponse de parfait18
Messages postés
54
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 août 2012
0
Merci
panneau de configuration -> option regional et linguistique -> Personnaliser
et dans symbole décimale tu met "." au lieu de ","
Commenter la réponse de cs_hassane86
0
Merci
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 !!!
Commenter la réponse de parfait18
Messages postés
54
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
2 août 2012
0
Merci
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
Commenter la réponse de cs_hassane86
0
Merci
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???
Commenter la réponse de parfait18
Messages postés
14444
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 mai 2019
158
0
Merci
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
Commenter la réponse de NHenry
0
Merci
cool!
encore merci.

Cordialement.
Commenter la réponse de parfait18

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.