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 :

Mysql php et import CSV II


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut Mysql php et import CSV II
    Bonjour,

    Je suis en train de réaliser un import de fichier client csv dans une base mysql. Jusqu'ici rien de compliqué dans la mesure où j'ai une table mysql client avec les champs suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom, prenom, adresse, ville, cp, telephone
    Et mon fichier est également formaté de la même manière. C'est à dire que les colonnes de mon fichier correspondent respectivement aux champs de la table c'est à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom, prenom, adresse, ville, cp, telephone
    Hors là, mon cher patron arrive avec un fichier où j'ai les colonnes suivantes :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    telephone , prenom, nom, adresse,id_client, ville, cp...etc
    Il me demande de faire en sorte que le formulaire d'importation dans la base puisse insérer les données dans les champs qu'il faut. Je lui ai dit qu'il suffisait qu'on format le fichier d'origine, qu'on supprime les colonnes dont on a pas besoin... Bien entendu, il ne veux pas se donner cette peine. Il veut sélectionner le fichier et que tout se fasse automatiquement

    Ceci étant je cherche une solution mais je cale au niveau fonctionnelle. Je n'arrive pas à définir une méthode qui me permettrait de le faire. Au début j'ai pensé à insérer les données dans une table provisoire puis identifier les colonnes mais c'est un véritable casse tête, je ne sais pas comment m'y prendre pour ensuite renommer les champs.

    Si quelqu'un peut m'orienter vers une meilleure solution ?

    Merci pour toutes réponses

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    1) Tu importes le fichier dans une table temporaire.
    2) Tu transfères les données dans les bonnes colonnes de la vraie table à l'aide d'une requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO client (nom, prenom, adresse, ville, cp, telephone)
    SELECT nom, prenom, adresse, ville, cp, telephone
    FROM import
    Ceci dit, je ne sais pas quel usage sera fait de la table des clients ensuite mais il faudrait songer à modéliser correctement les données, notamment en externalisant la ville dans une table des villes afin d'éviter les orthographes différentes pour une même ville et économiser de la place en remplaçant le nom de ville multiplié avec seulement son identifiant entier.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Oui, j'y avais pensé. Mais le problème est que, comment puis je faire pour identifier les colonnes nom, prenom, adresse, ville, cp, telephone de mon fichier import une fois dans la base.

    Puisque à l'origine, le fichier csv ne contient pas de noms de colonnes. Puis lorsque j'ai demandé à mon patron de formater au préalable le fichier en rajoutant dans la première ligne à la main les nom des colonnes, il m'a répondu non qu'il souhaitait que tout soit automatique !

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Tu veux dire que tu récupères des données sans les entêtes de colonnes et que ton boss espère un système suffisamment intelligent qui va savoir que dans telle colonne Paris est la ville et dans telle autre le nom d'une personne ?

    Il se fout le doigt dans l'oeil jusqu'à l'omoplate !

    Il faudra un minimum d'intervention humaine pour dire au programme que telle colonne contient telle donnée.

    Tu peux faire une interface qui affiche en tableau les X premières lignes du fichier récupéré et en tête de ce tableau des listes déroulantes avec les colonnes à alimenter dans la BDD.

    L'utilsiateur qui importe les données choisit dans chaque liste déroulante la bonne colonne correspondant aux données situées juste en dessous et ensuite tout peut être automatique.

    Bon courage !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/02/2014, 12h27
  2. Pb import CSV en PHP ou MySQL
    Par Korben-Dallas dans le forum Administration
    Réponses: 18
    Dernier message: 13/03/2012, 18h25
  3. [MySQL] import csv dans mysql
    Par caro_tpl dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/10/2007, 14h37
  4. Import CSV dans Mysql
    Par wylls dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/01/2007, 13h47
  5. Importer CSV dans MySQL
    Par The_freeman dans le forum Administration
    Réponses: 6
    Dernier message: 14/02/2006, 22h18

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