Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1483 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  appartenir à plusieurs groupe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

appartenir à plusieurs groupe

n°1408696
jenny50
Posté le 18-07-2006 à 16:31:33  profilanswer
 

Bonjour à tous,  
 
Je développe un site Intranet. Je dois donner des autorisations sur certaines pages car des documents sont confidentiels. Ma bdd de données est constituée de cette manière :  
TABLE utilisateurs CHAMPS uti_cle, uti_nom, uti_grp, uti_pass
TABLE groupe CHAMPS grp_cle, grp_lib, grp_admin, grp_vis, grp_dir... où grp_admin est égal à 1 si le groupe a le droit ou 0 si il n'a pas le droit
 
Donc chaque utilisateurs appartient à un groupe. Par exemple moi webmaster :  
TABLE utilisateurs : 1, DUPONT, 1, login
TABLE groupe : 1, administrateur, 1, 1, 0 car je n'ai pas le droit de voir des documents qui appartiennent à la direction.
 
J'aimerai savoir s'il est possible qu'un utilisateur appartiennent à 2 groupes???

mood
Publicité
Posté le 18-07-2006 à 16:31:33  profilanswer
 

n°1408699
soulmanto
Chat Noir replica
Posté le 18-07-2006 à 16:37:07  profilanswer
 

T'as pas fait de MCD? [:pingouino] La structure de ta base doit être directement liée à tes règles de gestion et à la cardinalité des différents liens entre les tables.
En l'occurence, tu prends ici le problème à l'envers : tu crées la table en te demandant ensuite si telle règle est possible... :o


Message édité par soulmanto le 18-07-2006 à 16:38:06
n°1408700
omega2
Posté le 18-07-2006 à 16:37:43  profilanswer
 

vu la structure actuelle des tables : non
si tu veux qu'un utilisateur appartienne à plusieurs groupe, il va faloir une troisiéme table.

n°1408702
jenny50
Posté le 18-07-2006 à 16:39:19  profilanswer
 

non car ma bdd est créée depuis longtemps... Je me pose cette question car plusieurs personnes me posent problème. C'est ensuite pour donner l'autorisation sur mes pages que je galère pas mal. Alors je me disais que si une personne pouvait appartenir à 2 groupes se serait bien!!!

n°1408703
jenny50
Posté le 18-07-2006 à 16:39:44  profilanswer
 

c'est quoi cette 3ème tables?

n°1408709
masklinn
í dag viðrar vel til loftárása
Posté le 18-07-2006 à 16:42:20  profilanswer
 

C'est une association many to many (un utilisateur/groupe peut avoir plusieurs types de droits associés, et un type de droit est associé à plusieurs utilisateurs/groupes) donc il faut une table users/groups, une table de droits, et une 3e table (une table de liaison) créant le mapping entre les droits et les users/groups
 
Rebelotte si tu as une relation many to many entre les users et les groupes.
 
Et accessoirement, je vois pas trop l'intérêt de tes préfixes hein, quand tu as "uti_cle" ton préfixe ne sert à rien, c'est un champ de la table utilisateurs donc on se doute bien que ça référence un utilisateur et pas une pomme verte [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1408710
omega2
Posté le 18-07-2006 à 16:43:16  profilanswer
 

simplement une table contenant chaque couple utilisateur/groupe ceci permettant de relier plusieurs utilisateurs au même groupe et un utilisateur à plusieurs groupes.
Mais bon, c'est une table qui n'existe pas (encore?) dans ton systéme.

n°1408712
jenny50
Posté le 18-07-2006 à 16:45:54  profilanswer
 

non cette table de liaison n'existe pas. Mais je ne comprends pas trop son utilisation... Elle serait de quelle forme et pouvez vous me donner un exemple avec mon premier message? C'est pas que je suis fénaiante mais je débute et là c'est un peu du charabia!!

n°1408714
soulmanto
Chat Noir replica
Posté le 18-07-2006 à 16:49:10  profilanswer
 

table LIEN :
------------
uti_cle
grp_cle
 
Pas plus compliqué que ça, en partant du principe que les deux champs sont des clés dans leurs tables respectives. Dans la table de lien, ils seront tous deux des clés étrangères.

n°1408717
jenny50
Posté le 18-07-2006 à 16:54:57  profilanswer
 

effectivement ce sont bien tous les deux des clés primaires dans leurs tables respectives.  
 
Par contre je ne comprends pas ce que je vais mettre dans cette table LIEN? 1, 1 alors moi utilisateur 1 j'appartient au groupe 1 administrateur. Si je veux appartenir au groupe 2 : direction, je fais quoi? 1,2?  
Et que devient mon champs uti_grp dans ma table UTILISATEURS?

mood
Publicité
Posté le 18-07-2006 à 16:54:57  profilanswer
 

n°1408719
soulmanto
Chat Noir replica
Posté le 18-07-2006 à 17:00:10  profilanswer
 

Le champ deviendra obsolète... Il n'a pas lieu d'être, les clés étrangères étant déportées dans une table de lien quand on a une relation many to many. Tu peux le garder si par exemple tu veux utiliser des règles comportant des groupes primaires ou secondaires, ou alors le virer, à toi de voir. Pour remplir la table de lien, voici un exemple.
 
toi : utilisateur n°1
direction : groupe n°13
administrateurs : groupe n°2
 
Si tu appartiens au deux groupes, il te faudra insérer les valeurs
 
(1,1),
(1,2)
 
dans la table de liens C'est tout bête! ;)

n°1408724
jenny50
Posté le 18-07-2006 à 17:06:04  profilanswer
 

yes j'ai pigé... je peux donc associer un utilisateur à des groupes à l'infini...
 
C'est quoi cette relation "many to many" c'est quelque chose qu'il faut que je mette dans une requete. Par exemple pour savoir quels utilisateurs appartiennent au groupe 13 (direction) je dois faire comment?

n°1408726
esox_ch
Posté le 18-07-2006 à 17:11:44  profilanswer
 

Regarde un tuto d'uml (sur developpez.com , &co) ca va t'expliquer tout ça :)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1408727
soulmanto
Chat Noir replica
Posté le 18-07-2006 à 17:11:53  profilanswer
 

La relation many to many, c'est un type de cardinalité qui spécifie que un utilisateur peut appartenir à plusieurs groupes, et que plusieurs utilisateurs peuvent faire partie d'un même groupe. C'est juste un concept, ça n'a rien à voir avec la requête en elle-même.
 
Pour ta sélection:
SELECT l.uti_cl,u.uti_nom
FROM liens l LEFT JOIN utilisateurs u ON u.uti_cle=l.uti_cle
WHERE l.grp_cle=13;

n°1408733
jenny50
Posté le 18-07-2006 à 17:20:28  profilanswer
 

ok je te remercie pour ton aide. Tes explications sont clairs ... Je vais essayer tout ça... Je te remercie car là tu m'as enlevé une bonne épine du pied!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  appartenir à plusieurs groupe

 

Sujets relatifs
Appartenance à un groupe AD vbs[C] Boucle avec strcat pour créer plusieurs fichiers
[Résolu] Fusionner plusieurs feuilles en une seuleLire plusieurs lignes d'un fichier txt avec de l'AJAX
[php/mysql] Conserver les parametres de tri sur plusieurs pages[résolu] plusieurs variables dans la condition if ?
Ajouter plusieurs case à swicth[resolu] nombre de noeuds correspondants à plusieurs critères
Gestion Plusieurs DataGridView[Résolut]Plusieurs questions à propos du Xhtml
Plus de sujets relatifs à : appartenir à plusieurs groupe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR