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 29/04/2011, 10h21   #1
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
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 :
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 :
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 :
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 :
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 ?
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 10h30   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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 :
Citation:
chaque client pourra créer ses exercices, et chaque exercice contient un nombre de sequence.
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 10h31   #3
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
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 .
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 10h54   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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/
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/04/2011, 10h57   #5
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
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 .
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 11h13   #6
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
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
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 11h17   #7
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
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 .
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 11h32   #8
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
Merci beaucoup Nheo pour ton aide
C'est claire pour moi, j'essaye cela et je te tiens au courant de l'avancement
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 11h33   #9
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 11h39   #10
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
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é
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 11h59   #11
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
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 ?
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 12h02   #12
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
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.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 12h16   #13
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
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 ?
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 13h44   #14
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
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 :
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é.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 14h03   #15
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
Encore une petite question, il faut que je mette l'ID du client en auto incrément non ?
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 14h04   #16
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
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 ).
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 14h17   #17
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
phpMyAdmin me met qu'il y a une erreur quand j'importe le fichier sequence suivant :

Code :
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 :
#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
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 14h20   #18
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Citation:
Envoyé par danydan01 Voir le message
phpMyAdmin me met qu'il y a une erreur quand j'importe le fichier sequence suivant :

Code :
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 :
#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 .
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 14h24   #19
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
autant pour moi...
mais maintenant l'erreur est :

Code :
#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
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 14h27   #20
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Citation:
Envoyé par danydan01 Voir le message
autant pour moi...
mais maintenant l'erreur est :

Code :
#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 .
Nheo_ 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 08h47.


 
 
 
 
Partenaires

Hébergement Web