Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2010, 19h57   #1
Membre du Club
 
Thibaut LEFEBVRE
Finance
Inscription : octobre 2009
Messages : 123
Détails du profil
Informations personnelles :
Nom : Thibaut LEFEBVRE
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Finance
Secteur : Finance

Informations forums :
Inscription : octobre 2009
Messages : 123
Points : 45
Points : 45
Par défaut decimale sql qui tronque mes données

Bonsoir à tous,

Encore un problème avec mysql et php.... le voici:

j'ai une table avec un champs de type decimal(10,2).

J'importe un CSV dont les données qui doivent être ressemble par exemple:

-1520414,90
-1524,49
824000,94
-79314789,19
-576703,23
889,35

les données apparaissent telles qu'elles dans le csv. Avec la virgule et les décimales...
quand j'importe mes données elles sont tronquées et cela donne :

-1520414,00
-1524,00
824000,00
-79314789,00
-57670332,00
889,00

et du coup j'ai des erreurs d'arrondis... et sur mes 350 lignes, ça fait un sacré écart....

J'ai essayé de remplacer la , par le . mais du coup mes données ne sont plus importées... comme s'il y avait une erreur...

quelqu'un aurait-il une solution ?

D'avance merci pour votre aide,

Thibaut
Souri84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h01   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
comme s'il y avait une erreur
as-tu verifié si la requête en produisait une ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h05   #3
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Pas de raison que ça bloque si tu remplaces les , pour des .
Fais un mysql_error( ) pour voir ce qu'il se passe.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h16   #4
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
Ah oui, j'ai déjà eu la joie de rencontrer ce problème. Si tu fais comme moi, tu dois construire ta requête à partir d'une chaîne de caractère du genre:

Code :
$sql = "INSERT INTO table VALUES (121.23, 152.21, 1632.23)";
Je n'ai jamais exactement compris pourquoi le point faisait planter ma requête, mais j'ai réglé mon problème en encadrant mes valeurs par des apostrophes (ou des guillemets si tu préfères).

Code :
$sql = "INSERT INTO table VALUES ('121.23', '152.21', '1632.23')";
Du moment que j'ai fait ça, mes requêtes se sont mises à passer sans problème. En espérant que ça puisse t'aider.

Bonne chance .

Osu
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h46   #5
Membre du Club
 
Thibaut LEFEBVRE
Finance
Inscription : octobre 2009
Messages : 123
Détails du profil
Informations personnelles :
Nom : Thibaut LEFEBVRE
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Finance
Secteur : Finance

Informations forums :
Inscription : octobre 2009
Messages : 123
Points : 45
Points : 45
arf, désolé, ça marche avec le point... l'erreur provenait d'autre part...

mais alors j'ai un souci. Les utilisateurs finaux seront mes collègues. Ils savent à peine convertir un xls en csv mais bon à la rigueur, ça pouvait passer. Mais comment prendre la virgule comme référence de la décimale et non le point ? car sinon, je vais faire de la maintenance pendant le reste de ma vie professionnelle dans mon entreprise...

parce que même outils / options internationales / séparateur de décimales, ils ne savent pas faire... ce n'est pas méchant ce que je dis, mais je n'ai pas envie d'aller voir 70 personnes pour leur expliquer comment utiliser leur ordinateur...
Souri84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h48   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Citation:
Mais comment prendre la virgule comme référence de la décimale et non le point ?
On ne peut pas.
A toi de traiter les données pour les convertir en un format acceptable par MySQL.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h49   #7
Membre du Club
 
Thibaut LEFEBVRE
Finance
Inscription : octobre 2009
Messages : 123
Détails du profil
Informations personnelles :
Nom : Thibaut LEFEBVRE
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Finance
Secteur : Finance

Informations forums :
Inscription : octobre 2009
Messages : 123
Points : 45
Points : 45
bon ok,

je vais m'y mettre alors...

merci à toi pour ta disponibilité et ta rapidité...

edit : bon c'était facile, j'ai utilisé la fonction str_replace(...);
Souri84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h30.


 
 
 
 
Partenaires

Hébergement Web