Excel et MySQL

Petit nouveau ! | 2 Messages

19 mai 2011, 10:27

Bonjour,
ceci est mon premier message sur ce forum. J'ai recherché des réponses sur d'autres conversations mais malheureusement je n'ai pas encore trouvé mon bonheur. J'espère que vous pourrez m'aider.
Voilà mon problème :
J'ai réalisé une application php qui va permettre à des personnes d'accéder à un historique de formation effectuées par des collaborateurs.
Pour cela, j'ai créé une base de données MySQL avec 3 tables :

COLLABORATEUR (ID_COLLABORATEUR, NOM, PRENOM)
FORMATION (ID_FORMATIOIN, INTITULE, ORGANISME)
SUIVRE (#ID_COLLABORATEUR,# ID_FORMATION, DATE, DUREE)


On m'a donné un fichier excel comprenant une feuille avec plus de 3000 lignes avec comme ligne d'entête :
Nom | Prénom | Formation | Organisme | Année | Durée

Maintenant, j'aimerais savoir comment puis-je importer ce fichier excel dans les 3 tables de ma base. Je sais déjà que je peux exporter mon fichier excel en .csv, mais pour cela il faudrait créer plusieurs feuilles excel pour importer ce qui correspond à mes tables dans MySQL, et dans ce cas, je supprimerais les doublons, c'est là qu'est le problème!!!!!
Comment faire correspondre les "id" de mes différentes tables afin d'afficher des données correctes.
J'espère que vous comprendrez mon problème et que vous pourrez m'aider.
Merci d'avance.

ViPHP
xTG
ViPHP | 7331 Messages

19 mai 2011, 10:34

Faut jouer avec ce qu'il se trouve déjà dans la base quand tu tentes d'insérer une nouvelle ligne.
Quand tu traites ta ligne Excel faut faire une recherche pour voir si le collaborateur ou bien la formation existe pas déjà.
Si des données existent tu récupères leur ID.

En gros de l'insert sélectif. Car si une formation existe déjà tu vas pas l'insérer de nouveau, mais tu récupères son id pour la requête suivre.

Petit nouveau ! | 3 Messages

20 mai 2011, 15:41

Ce genre de manip, je la fais comme ça :
Après avoir importé ton fichier Excel dans une table appelée table_excel par exemple,
appliquer les requêtes suivantes:
$sql = "INSERT IGNORE INTO COLLABORATEUR (ID_COLLABORATEUR, NOM, PRENOM) SELECT ID_COLLABORATEUR, NOM, PRENOM FROM table_excel";
$sql = "INSERT IGNORE INTO FORMATION (ID_FORMATIOIN, INTITULE, ORGANISME) SELECT ID_FORMATIOIN, INTITULE, ORGANISME FROM table_excel";
$sql = "INSERT IGNORE INTO SUIVRE (#ID_COLLABORATEUR, #ID_FORMATION, DATE, DUREE) SELECT #ID_COLLABORATEUR, #ID_FORMATION, DATE, DUREE FROM table_excel";

ViPHP
ViPHP | 2291 Messages

25 mai 2011, 22:04

ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.