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

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Création de colonnes Mysql dynamiques


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2018
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2018
    Messages : 81
    Points : 44
    Points
    44
    Par défaut Création de colonnes Mysql dynamiques
    Bonjour tout le monde,
    Je suis entrain de réaliser une page en PHP qui consiste en la création de CV dynamiques.
    Je souhaiterais que la structure de ma table contienne des champs formations et diplômes.
    A priori, le nombre de formations et des diplômes n'est pas le même pour les différents employés.
    Est ce qu'il y a moyen avec une requête SQL, de créer des colonnes dynamiquement selon le nombre de diplômes ou de formations ?
    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 612
    Points : 31 893
    Points
    31 893
    Par défaut
    Bonjour,

    Alors il faut créer 4 tables :
    • t_formations (id_formation, contenu_formation, ...)
    • t_user_formations (table de jointure, contenant : id_user et id_formation)
    • t_diplomes (id_diplome, contenu_diplome, ...)
    • t_user_diplomes (table de jointure, contenant : id_user et id_diplome)

    et dans t_users, supprimer les colonnes "formation" et "diplome".

    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2018
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2018
    Messages : 81
    Points : 44
    Points
    44
    Par défaut
    Merci pour le tuyau.
    Je commencerai à travailler avec ça et je referai un post si j'ai des difficultés avec le requêtes.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2018
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2018
    Messages : 81
    Points : 44
    Points
    44
    Par défaut
    J'ai juste une petite question.
    J'ai dèjà une table users où l'utilisateur est identifié avec son matricule.
    Est ce que ça marcherait si j'utilise 3 tables seulement :

    • users (id_user, matricule_user,...)
    • diplomes(id_diplome, contenu, matricule)
    • formations(id_formations, contenu, matricule)

  5. #5
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 612
    Points : 31 893
    Points
    31 893
    Par défaut
    Non.

    1- Les tables de jointure (t_user_formations, t_user_diplomes) sont nécessaires.

    C'est grâce à ces tables qu'on peut associer PLUSIEURS formations/diplômes à un user.

    2- Pour les requêtes, comme un user n'a pas forcément de diplome ni de formation, on utilisera LEFT JOIN (et PAS INNER JOIN).

    Exemples :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT U.id_user, U.user_nom, U.user_prenom, 
       D.id_diplome, D.contenu_diplome,
       F.id_formation, F.contenu_formation
       FROM t_users U
     
       LEFT JOIN t_user_diplomes UD ON UD.id_user = U.id_user 
       LEFT JOIN t_diplomes D ON D.id_diplome = UF.id_diplome
     
       LEFT JOIN t_user_formations UF ON UF.id_user = U.id_user 
       LEFT JOIN t_formations F ON F.id_formation = UF.id_formation

    Pour lister TOUS les diplômes d'un user en particulier (dont on connais l'id_user) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT D.id_diplome, D.contenu_diplome
       FROM t_users U
     
       LEFT JOIN t_user_diplomes UD ON UD.id_user = U.id_user
       LEFT JOIN t_diplomes D ON D.id_diplome = UF.id_diplome
     
       WHERE U.id_user = :le_user_id

    N.B. Perso, j'ai pris l'habitude de préfixer les tables SQL avec "t_....." (ou tout autre préfixe spécifique) : ça facilite la lecture, et le débogage.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2018
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2018
    Messages : 81
    Points : 44
    Points
    44
    Par défaut
    Et pour les expériences, pour chacune il pourrait y'avoir plusieurs tâches.
    Je créerai donc, si j'ai bien compris encore 4 tables :
    t_expérience(id_experience, contenu)
    t_tache(id_tache, detail)
    t_global(id_experience, id_tache)
    t_user_experience(id_user, id_expeience)
    C'est ça?

  7. #7
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 612
    Points : 31 893
    Points
    31 893
    Par défaut
    Je ne sais pas ce que tu appelles "tache" ou "global".


    Ce qui est sûr, c'est qu'il faut bien réfléchir AVANT, pour bien concevoir les tables.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2018
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2018
    Messages : 81
    Points : 44
    Points
    44
    Par défaut
    Experience c'est l'espérience en question (" Fonction passée chez une société).
    Tache c'est les taches effectuées pendant cette expérience.
    Global ça serait la jointure entre ces 2 tables.
    user_experience ça serait la jointure entre l'expérience et les tâches

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/03/2018, 18h42
  2. [MySQL] création de colonne dynamique via une variable php
    Par xKryckx dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 09/04/2015, 18h47
  3. [TableView] création de colonne dynamique
    Par oussama.elhadri dans le forum JavaFX
    Réponses: 2
    Dernier message: 22/05/2013, 22h37
  4. [Plugin] Création d'une vue dynamiquement
    Par The Bonze dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 15/06/2004, 13h23
  5. Création de table MySQL
    Par dehbi dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/04/2004, 10h59

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