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 :

Relier des tables dans PhpMyAdmin


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut Relier des tables dans PhpMyAdmin
    Bonjours à tous

    J'ai actuellement 3 tables dans ma base de donnée ( Users, Exercice, Sequence ).
    En gros je voudrais réaliser ceci :
    - chaque client pourra créer ses exercices, et chaque exercice contient un nombre de sequence.

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    User 1 
         nombre_exercice:5
    		#Exercice1
    			*Sequence1
    			*Sequence2
    		#Exercice2
    			*sequence1
    			*sequence2
    		.............
    et comme cela pour chaque client. j'ai réalisé mes 3 tables :

    users :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE `users` (
      `id` bigint(20) NOT NULL,
      `username` varchar(255) NOT NULL,
      `password` varchar(255) NOT NULL,
      `email` varchar(255) NOT NULL,
      `avatar` text NOT NULL,
      `signup_date` int(10) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Exercice:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE `erxercice` (
      `exerciceId` int NOT NULL,
      `exerciceNom` varchar(255) NOT NULL,
      `nbSequence` int NOT NULL,
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Exercice:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE TABLE `sequence` (
      `.....
    Pourriez vous m'aider à réaliser les jointures entre les tables ? en sachant que chaque user ne doit avoir accès qu'a ses exercice et séquence à lui et non celui des autres...
    Dois'je rajouter des champs entre les tables pour les relier en elles ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Je te conseille de basculer sur le moteur InnoDb de mysql qui gère les clés étrangères ensuite il te faut revoir ton modèle de données pour faire apparaitre cette exigence dedans :
    chaque client pourra créer ses exercices, et chaque exercice contient un nombre de sequence.

  3. #3
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Bonjour,

    Si tu veux qu'un utilisateur puisse accéder seulement à ces exercices, je pense qu'une clé primaire sur users.id et donc une clé étrangère dans exercice (id) suffit.

    Tu pourra donc sélectionner les exercices d'UN utilisateur (en fonction de son id).

    Tu peux faire de même entre les exercices et les séquences.

    Je sais pas si cela répond à ta question .

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Citation Envoyé par Nheo_ Voir le message
    Bonjour,

    Si tu veux qu'un utilisateur puisse accéder seulement à ces exercices, je pense qu'une clé primaire sur users.id et donc une clé étrangère dans exercice (id) suffit.

    Tu pourra donc sélectionner les exercices d'UN utilisateur (en fonction de son id).

    Tu peux faire de même entre les exercices et les séquences.

    Je sais pas si cela répond à ta question .
    Tout dépend si un exercice peut appartenir à un et un seul utilisateur ou plusieurs et de même si une séquence appartient à un et un seul exercice ou plusieurs

    http://sqlpro.developpez.com/cours/modelisation/merise/

  5. #5
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par boo64 Voir le message
    Tout dépend si un exercice peut appartenir à un et un seul utilisateur ou plusieurs et de même si une séquence appartient à un et un seul exercice ou plusieurs

    http://sqlpro.developpez.com/cours/modelisation/merise/
    Oui en effet, mais c'est à danydan01 de nous dire ce qu'il souhaite .

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Oui un exercice qui contient les séquences appartient à un seul utilisateur.

    Donc il faut que je rajoute une clé primaire dans ma table user ?
    et une clé étrangère dans ma table exercice?
    et pour ma table séquence qui est relier a un id d'exercice ?

    En tout cas je vous remercie pour vos réponse

  7. #7
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par danydan01 Voir le message
    Oui un exercice qui contient les séquences appartient à un seul utilisateur.

    Donc il faut que je rajoute une clé primaire dans ma table user ?
    et une clé étrangère dans ma table exercice?
    et pour ma table séquence qui est relier a un id d'exercice ?

    En tout cas je vous remercie pour vos réponse
    Alors, essaye comme cela :

    users : Clé primaire(id_user) -> exercices Clé étrangère(#id_user)

    exercices: Clé primaire(exerciceId) -> séquences Clé étrangère(#exerciceId)

    Si ce n'est pas clair dis le moi .

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Merci beaucoup Nheo pour ton aide
    C'est claire pour moi, j'essaye cela et je te tiens au courant de l'avancement

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Citation Envoyé par danydan01 Voir le message
    Merci beaucoup Nheo pour ton aide
    C'est claire pour moi, j'essaye cela et je te tiens au courant de l'avancement
    n'oublie pas de passer en innoDB sinon impossible de mettre en place les clés étrangères

  10. #10
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par boo64 Voir le message
    n'oublie pas de passer en innoDB sinon impossible de mettre en place les clés étrangères
    Ce n'est pas activé par défaut normalement ? Personnellement je ne l'ai jamais vu désactivé

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Donc je met toutes mes tables en InnoDB, donc faut que je me renseigne savoir si mon serveur le supporte aussi non ?

    Bref sinon, je dans ma table exercice, je garde ma clé primaire l'id de l'exo et je met en clé étrangère l'id client c'est bien sa ?

    et pour la table séquence, clé primaire id séquence, clé étrangère id exercice ?

  12. #12
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par danydan01 Voir le message
    Donc je met toutes mes tables en InnoDB, donc faut que je me renseigne savoir si mon serveur le supporte aussi non ?

    Bref sinon, je dans ma table exercice, je garde ma clé primaire l'id de l'exo et je met en clé étrangère l'id client c'est bien sa ?

    et pour la table séquence, clé primaire id séquence, clé étrangère id exercice ?
    Oui c'est bien cela . pour l'InnoDB, peu de serveur ne le supporte pas (enfin je crois), mais bon, renseigne toi quand même.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Nheo ya un petit soucie, c'est que je n'y comprend strictement rien dans la partie "Gestion des relations" sous phpmyadmin.

    Pourrais tu me guider ?

  14. #14
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par danydan01 Voir le message
    Nheo ya un petit soucie, c'est que je n'y comprend strictement rien dans la partie "Gestion des relations" sous phpmyadmin.

    Pourrais tu me guider ?
    Personnellement je ne crée mes tables que par requêtes SQL, voila ce que ça donne :

    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    CREATE TABLE `users` (
      `id` bigint(20) NOT NULL,
      `username` varchar(255) NOT NULL,
      `password` varchar(255) NOT NULL,
      `email` varchar(255) NOT NULL,
      `avatar` text NOT NULL,
      `signup_date` int(10) NOT NULL,
        PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    CREATE TABLE `exercice` (
      `exerciceId` int NOT NULL,
      `exerciceNom` varchar(255) NOT NULL,
      `nbSequence` int NOT NULL,
       `id` bigint(20) NOT NULL,
        PRIMARY KEY (exerciceId),
        FOREIGN KEY (id)
                            REFERENCES users(id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Tu fais la même chose pour séquences .

    Je vais aller voir le menu "Gestion des relations".

    EDIT : Petite faute dans le script SQL, c'est corrigé.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Encore une petite question, il faut que je mette l'ID du client en auto incrément non ?

  16. #16
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par danydan01 Voir le message
    Encore une petite question, il faut que je mette l'ID du client en auto incrément non ?
    Oui en effet . (celui des exercices et séquences aussi tant qu'on y est ).

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    phpMyAdmin me met qu'il y a une erreur quand j'importe le fichier sequence suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CREATE TABLE IF NOT EXISTS `sequence` (
      `sequenceId` int(11) NOT NULL AUTO_INCREMENT,
      `exerciceId` int(11) NOT NULL,
      `sequenceRotation` varchar(1) NOT NULL,
      `sequenceNbPostion` int(11) NOT NULL,
      `sequencePosition1` varchar(5) NOT NULL,
      `sequencePosition2` varchar(5) NOT NULL,
      `sequencePosition3` varchar(5) NOT NULL,
      `sequencePosition4` varchar(5) NOT NULL,
      `tempsPosition1` int(11) NOT NULL,
      `tempsPosition2` int(11) NOT NULL,
      `tempsPosition3` int(11) NOT NULL,
      `tempsPosition4` int(11) NOT NULL,
      `sequenceTemps` int(11) NOT NULL,
      PRIMARY KEY (`sequenceId`)
      FOREIGN KEY ('exerciceId')
                  REFERENCES exercice('exerciceid')
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    voici l'erreur qui se trouve à la ligne 16 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY ('exerciceId') REFERENCES exercice('exerciceid') ) E' at line 16

  18. #18
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par danydan01 Voir le message
    phpMyAdmin me met qu'il y a une erreur quand j'importe le fichier sequence suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CREATE TABLE IF NOT EXISTS `sequence` (
      `sequenceId` int(11) NOT NULL AUTO_INCREMENT,
      `exerciceId` int(11) NOT NULL,
      `sequenceRotation` varchar(1) NOT NULL,
      `sequenceNbPostion` int(11) NOT NULL,
      `sequencePosition1` varchar(5) NOT NULL,
      `sequencePosition2` varchar(5) NOT NULL,
      `sequencePosition3` varchar(5) NOT NULL,
      `sequencePosition4` varchar(5) NOT NULL,
      `tempsPosition1` int(11) NOT NULL,
      `tempsPosition2` int(11) NOT NULL,
      `tempsPosition3` int(11) NOT NULL,
      `tempsPosition4` int(11) NOT NULL,
      `sequenceTemps` int(11) NOT NULL,
      PRIMARY KEY (`sequenceId`)
      FOREIGN KEY ('exerciceId')
                  REFERENCES exercice('exerciceid')
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    voici l'erreur qui se trouve à la ligne 16 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY ('exerciceId') REFERENCES exercice('exerciceid') ) E' at line 16
    Tu as oublié une virgule à la fin de la ligne 15 .

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    autant pour moi...
    mais maintenant l'erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''exerciceId') REFERENCES 'exercice'('exerciceid') ) ENGINE=InnoD' at line 16

  20. #20
    Membre chevronné Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Par défaut
    Citation Envoyé par danydan01 Voir le message
    autant pour moi...
    mais maintenant l'erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''exerciceId') REFERENCES 'exercice'('exerciceid') ) ENGINE=InnoD' at line 16
    Regarde bien ton erreur, il te l'indique juste avant 'exerciceId', l'erreur vient donc de ça => tu as mis des quotes, alors qu'il n'en faut pas .

Discussions similaires

  1. [MySQL] Conception des table dans phpmyadmin
    Par hous04 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/09/2011, 07h54
  2. Comment relier des tables sous PHPmyAdmin
    Par BigDavid dans le forum Débuter
    Réponses: 1
    Dernier message: 26/07/2006, 14h14
  3. Réponses: 6
    Dernier message: 16/03/2006, 18h32
  4. Réponses: 7
    Dernier message: 26/01/2006, 12h19
  5. Paramètre initial extent des tables dans la commandes IMP
    Par bobunny dans le forum Import/Export
    Réponses: 9
    Dernier message: 20/10/2004, 16h32

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