IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

decimale sql qui tronque mes données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    comme s'il y avait une erreur
    as-tu verifié si la requête en produisait une ?

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    Pas de raison que ça bloque si tu remplaces les , pour des .
    Fais un mysql_error( ) pour voir ce qu'il se passe.

  4. #4
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  5. #5
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    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...

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    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.

  7. #7
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    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(...);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-97] Fonction SQL qui retourne les données saisies en majuscules
    Par Milyshyn76 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/03/2011, 14h21
  2. script SQL qui réinsère des Données d'une BD dans une autre BD.
    Par kamaldev dans le forum Administration
    Réponses: 1
    Dernier message: 19/04/2007, 15h01
  3. Réponses: 2
    Dernier message: 18/03/2007, 19h10
  4. [MySQL] requete sql qui ne donne pas le bon array
    Par easyjava dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/11/2006, 15h41
  5. Afficher sous Word des données SQL qui contient des retours
    Par samoht dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 30/09/2005, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo