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 :

importation par PHPMYADMIN


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 72
    Points : 52
    Points
    52
    Par défaut importation par PHPMYADMIN
    Bonjour,
    Voilà des heures que je bataille pour importer dans ma base un fichier CSV.
    Je bute sur une cellule qui contient le nombre 118847 mais qui est formaté dans le fichier en monétaire et qui apparait sous la forme : 118 847,00 €.
    Le système m'affiche : Incorrect decimal value: '118 847,00 \x80' for column 'montant' at row 1

    Auriez-vous une solution ?
    Merci

  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
    qui contient le nombre 118847 mais qui est formaté dans le fichier en monétaire
    Un CSV n'a pas de format de cellule ; il contient visiblement vraiment "118 847,00 €".
    Donc soit tu corriges manuellement les valeurs dans ton CSV, soit il faut que tu écrives un script qui fasse l'import en traitant spécifiquement ce cas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Le plus simple serait peut-être de nettoyer (i.e. supprimer tous les caractères parasites) le fichier avant de l'importer. S'il y a un symbole euro dans une ligne, il y en a probablement d'autres.
    Christophe

    Pensez à mettre quand c'est le cas.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux utiliser quelque chose comme intval pour convertir la valeur avant de l'insérer.

    EDIT : euh, en fait, non. intval c'est si tu fais l'import par PHP.
    Si tu fais l'import par PhyMyAdmin, il faut nettoyer le fichier d'abord, pas d'autre solution.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 72
    Points : 52
    Points
    52
    Par défaut
    Merci pour ces réponses.
    J'insiste lourdement mais je peux agir sur le format des données même sur un fichier CSV. La cellule affiche 118 847,00 € alors que si je clique dessus, j'ai dans la barre du dessus d'EXCEL 118847.
    Mais bon, j'ai transformé mes virgules en points et dans PHPMYADMIN, j'ai utilisé l'option CSV via LOAD DATA au lieu de CSV tout court.
    Ca fonctionne (reste à solutionner des problèmes de dates).
    Merci à tous.

  6. #6
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 747
    Points
    747
    Par défaut
    Pour information, tu peux ouvrir un fichier CSV avec n'importe quel éditeur de texte

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par valaendra Voir le message
    Pour information, tu peux ouvrir un fichier CSV avec n'importe quel éditeur de texte
    Et il ne faut surtout pas enregistrer à partir d'Excel car les données risquent fort de ne plus être les mêmes.
    Christophe

    Pensez à mettre quand c'est le cas.

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Illustration :

    Je crée (à la main dans Notepad++) un fichier CSV contenant cette ligne :
    00012;12565;15411
    Je l'ouvre dans Excel, j'obtiens cet affichage :
    12	12565	15411
    J'applique le format monétaire standard à la 3e case. Mon affichage devient :
    12	12565	15 411.00 €
    J'enregistre le fichier (on notera qu'aucun moment, je n'ai modifié le contenu d'une des cellules)
    Résultat, mon fichier CSV (lu dans Notepad++) contient maintenant :
    12;12565;15 411.00 €
    CQFD

    (et on a pas parlé d'encodage, de séparateurs, et autres joyeusetés)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Format nombres Excel importés par VB.net
    Par vérokit dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/02/2008, 07h55
  2. acces base sql gérée par phpmyadmin
    Par marcel marie dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/07/2007, 16h20
  3. [MySQL] Interroger mysql sans passer par phpmyadmin
    Par cirtey dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/06/2007, 22h30
  4. [EasyPHP] Pas de fonction importer sous phpMyAdmin sous EasyPHP 1.8 ??
    Par romca dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/10/2006, 07h31
  5. Réponses: 2
    Dernier message: 06/09/2006, 22h04

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