par
Ryle » 18 sept. 2008, 17:36
@guigui : il te faut ajouter une nouvelle table dans ta base qui te permet de dire quel utilisateur à le droit de voir quoi. Il s'agit d'une bête table de liaison avec 2 champs : id_user et id_option. Ainsi, si l'utilisateur 21 à le droit de voir uniquement les option 4 et 7, tu auras deux enregistrements : 21;4 et 21;7.
Tout ce qu'il te reste à faire ensuite, c'est d'ajouter une jointure à ta requête qui vient chercher la liste des options, pour qu'elle ne renvoi que celles associées à l'utilisateur dont tu dois avoir l'id en session, ex :
Code : Tout sélectionner
SELECT ...
FROM table_des_options o, table_des_users_associes_aux_options u
WHERE o.id_option = u.id_option
AND u.id_user = $idDuUserEnSessionEt hop, seules les options 4 et 7 apparaitront pour l'utilisateur 21
@
Ziseb : le plus simple, c'est de faire ça en javascript. Tu spécifies un style="display:none" sur ta seconde liste pour la masquer, et lorsque l'on sélectionne un élément dans la première (onChange=""), tu testes la valeur de l'élément sélectionné (this.options[this.selectedIndex].value) et s'il correspond à la valeur attendue, tu changes le style de la seconde liste (document.leFormulaire.laListe.style.display = 'inline';)
<select name="liste1" onChange="if (this.options[this.selectedIndex].value == 'toto') document.getElementById('liste2').style.display = 'inline';">
...
</select>
<select name="liste2" id="liste2" style="display:none;">
...
</select>
[b]@guigui[/b] : il te faut ajouter une nouvelle table dans ta base qui te permet de dire quel utilisateur à le droit de voir quoi. Il s'agit d'une bête table de liaison avec 2 champs : id_user et id_option. Ainsi, si l'utilisateur 21 à le droit de voir uniquement les option 4 et 7, tu auras deux enregistrements : 21;4 et 21;7.
Tout ce qu'il te reste à faire ensuite, c'est d'ajouter une jointure à ta requête qui vient chercher la liste des options, pour qu'elle ne renvoi que celles associées à l'utilisateur dont tu dois avoir l'id en session, ex :
[code]SELECT ...
FROM table_des_options o, table_des_users_associes_aux_options u
WHERE o.id_option = u.id_option
AND u.id_user = $idDuUserEnSession[/code]Et hop, seules les options 4 et 7 apparaitront pour l'utilisateur 21 :)
@[b]Ziseb[/b] : le plus simple, c'est de faire ça en javascript. Tu spécifies un style="display:none" sur ta seconde liste pour la masquer, et lorsque l'on sélectionne un élément dans la première (onChange=""), tu testes la valeur de l'élément sélectionné (this.options[this.selectedIndex].value) et s'il correspond à la valeur attendue, tu changes le style de la seconde liste (document.leFormulaire.laListe.style.display = 'inline';)
[php]
<select name="liste1" onChange="if (this.options[this.selectedIndex].value == 'toto') document.getElementById('liste2').style.display = 'inline';">
...
</select>
<select name="liste2" id="liste2" style="display:none;">
...
</select>[/php]