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

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 régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    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
    Invité
    Invité(e)
    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".


  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    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 régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    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
    Invité
    Invité(e)
    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.
    Dernière modification par Invité ; 07/02/2019 à 12h24.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    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
    Invité
    Invité(e)
    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.

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    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

+ Répondre à la discussion
Cette discussion est résolue.

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