Page 1 sur 1

Besoin d'aide pour une liste déroulante

Posté : 16 sept. 2008, 14:42
par guigui69
Bonjour à tous,


J'airais besoin d'une petite aide, savoir comment partir.

J'ai une base mysql et sur mon site intranet je réalise une liste déroulante en mysql/php ça je sais faire.

Mais je voudrait savoir comment réaliser qu'en fonction de l'utilisateur qui a ouvert la session on ne voit que certain choix dans la liste déroulante.

Quelqu'un pourrait-il m'éclairer sur la démarche à entreprendre pour arriver a mon but.

Merci d'avance

guigui69

Posté : 16 sept. 2008, 16:30
par _activmik
Tu mets une condition (if) pour la construction de ta liste déroulante : si c'est un utilisateur x alors tu construit la liste x, sinon la liste y.

Si tu as beaucoup de type d'utilisateur, tu peux utiliser un switch case sur le type d'utilisateur.
Bien sûr ta base de données doit être construite en conséquence, avec dans la logique, un type d'utilisateur équivalent à des droits sur cette liste .

;)

Posté : 18 sept. 2008, 16:16
par Ekolo
ta solution est certes correcte mais il risque d'y avoir un problème de synchronisation avec la base de données. Merci.

Posté : 18 sept. 2008, 16:39
par Ziseb
Bonjour @ tous,

J'ai un peu le même problème.
J'ai une liste déroulante. En fonction du choix, de cette liste, j'affiche ou pas une autre liste déroulante en dessous de la première. Par défaut la seconde liste est cachée. C'est un choix particulier de la première qui affiche la deuxième.
Je ne sais pas si c'est vraiment clair, mais si vous avez des pistes pour que je puisse avancer mon script ;)

Merci par avance,


Seb

Posté : 18 sept. 2008, 17:36
par Ryle
@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 = $idDuUserEnSession
Et 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>