Bonjour,
J'ai une page ou j affiche des coordonnées, sous forme de num de tel, de fax,.. et j'ai des utilisateurs, quelques uns peuvent avoir access a tous les num, quelques uns seulement 2 a 3 num, je veux une idee pour faire ca svp.
Merci
Version imprimable
Bonjour,
J'ai une page ou j affiche des coordonnées, sous forme de num de tel, de fax,.. et j'ai des utilisateurs, quelques uns peuvent avoir access a tous les num, quelques uns seulement 2 a 3 num, je veux une idee pour faire ca svp.
Merci
tu crees une table
user avec une colonne intitulé
AccessLevel qui aura pour valeur :
1 - veux dire que l´utilisateur pourra tout voir
2 - peut voir certains
et dans la table qui contient les numeros de faxe et autres, tu ajoutes une colonne intitulé numAccess dans laquelle tu rempliras avec 1 ou 2.
le reste tu le fais avec le select.
ce n´est qu´une approche.
j ai mis la table utilisateurs comme suite:
level: est le niveau d access des utilisateursCode:
1
2
3
4
5
6
7
8
9 CREATE TABLE IF NOT EXISTS `users` ( `id_users` int(10) unsigned NOT NULL AUTO_INCREMENT, `nom` varchar(20) COLLATE utf8_unicode_ci NOT NULL, `prenom` varchar(20) COLLATE utf8_unicode_ci NOT NULL, `username` varchar(200) COLLATE utf8_unicode_ci NOT NULL, `passwd` varchar(200) COLLATE utf8_unicode_ci NOT NULL, `level` tinyint(1) NOT NULL DEFAULT '0', ..
et la table pr les num ainsi:
access_porte_feuille: c'est la ou je dois preciser est ce que l utilisateur aura besoin aux infos de cette personne ou non, comme defaut 1, ca veut dire oui, il aura access, alors comment faire ma requete pour lier l utilisateur avec son level aux donnees du clientCode:
1
2
3
4
5
6
7
8
9
10 CREATE TABLE IF NOT EXISTS `porte_feuille` ( `id_porte_feuille` int(5) NOT NULL AUTO_INCREMENT, `nom_porte_feuille` varchar(30) COLLATE utf8_unicode_ci NOT NULL, `prenom_porte_feuille` varchar(30) COLLATE utf8_unicode_ci NOT NULL, `telfix_porte_feuille` varchar(200) COLLATE utf8_unicode_ci NOT NULL, `fax_porte_feuille` varchar(200) COLLATE utf8_unicode_ci NOT NULL, `adresse_porte_feuille` text COLLATE utf8_unicode_ci NOT NULL, `access_porte_feuille` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT '1', ..
pourquoi tu mets 'access_porte_feuille' en varchar et level en tinyint. les deux doivent avoir le meme type
tu peux le selectionner comme suit:
le nom de la personne peut venir du formulaire par $_GET ou $_POST, cela depend de comment tu fais pour savoir qui veut lister le porte_feuille.Code:
1
2 $sql = " Select nom_porte_feuille, prenom_porte_feuille, telfix_porte_feuille, .. from porte_feuille where access_porte_feuille = (select level from users where nom = '".$le_nom_de_la_personne."')";
j ai fait une modification sur la requete, et ca marche, alors le resultat est par exemple ainsi:
nom : a1
prenom : b1
tel: 9897979
nom : a2
prenom : b2
tel: 83568345
je voudrais permettre a un utilisateur de voir le a1 et le a2, mais a un autre de voir seulement le a1 et ne pa voir le a2, y a t il une methode a faire ca?
Merci
pour cela il suffirait tout simplement de mettre different level aux personnes, par example :
personne1 : level 4 => il peux voir les portes-feuilles ayant les access_porte_feuille : 0,1,2,3,4
personne2 : level 0 => il peux voir les portes-feuilles ayant les access_porte_feuille : 0
personne3 : level 1 => il peux voir les portes-feuilles ayant les access_porte_feuille : 0,1
personne4 : level 2 => il peux voir les portes-feuilles ayant les access_porte_feuille : 0,1,2
et ainsi de suite.
et pour la requete tu fais :
Code:
1
2 $sql = " Select nom_porte_feuille, prenom_porte_feuille, telfix_porte_feuille, .. from porte_feuille where access_porte_feuille <= (select level from users where nom = '".$le_nom_de_la_personne."')";
ah ok je comprend, si tu dois preciser a chacun ce qu´il doit voir, sans passer par forcement par le level ou faire une combination,
alors il te faut creer une nouvelle table, contenant l´id de la personne et l´id du porte-feuille qu´il peux voir, un truc de ce genre:
table 'droit_de_lecture' : colonnes
id
id_user
id_porte_feuille
et ta requete est alors:
un peu complexe mais cela devrait etre ca.Code:$sql = " Select nom_porte_feuille, prenom_porte_feuille, telfix_porte_feuille, .. from porte_feuille where access_porte_feuille IN (select id_porte_feuille from droit_de_lecture where id_user = (select id_users from users where nom = '".$le_nom_de_la_personne."' limit 1) )";
est ce que je peux mettre dans les champs access_porte_feuille la liste des utilisateurs qui peuvent voir ces infos ou non?
non, car tes selections deviendront des chemins de croix.
merci pour ton coup de main jeffray03 ;)