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 16/12/2011, 17h23   #1
Membre à l'essai
 
Inscription : mars 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 140
Points : 22
Points : 22
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 :
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 :
nom, prenom, adresse, ville, cp, telephone
Hors là, mon cher patron arrive avec un fichier où j'ai les colonnes suivantes :


Code :
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
yamatoshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 18h15   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h54   #3
Membre à l'essai
 
Inscription : mars 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 140
Points : 22
Points : 22
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 !
yamatoshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 17h45   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web