IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

menu déroulants: récupération valeur et mise à jour


Sujet :

ASP

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut menu déroulants: récupération valeur et mise à jour
    Salut,
    j'ai 2 questions. Je cherche à mettre en oeuvre un menu déroulant qui va chercher ses options dans une table access, Table_Menus, et quand le choix est fait, on affiche le contenu d'une autre table Table_Menus_Sui. Ces 2 tables sont liées par un champ commun, qui est la clé primaire de la table Table_Menus. Les données doivent donc être mises à jour à chaque changement de la valeur du menu déroulant.

    la première question devrait etre assez simple. Comment récupérer la valeur du champ, sans passer par un submit?
    Car avec mon code, le menu marche correctemnt, mais je n'arrive pas à récupérer la valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <!---#INCLUDE FILE="include/conn_open.inc" --->
     <html>
     <body>
    <form method="POST" name ="form">
     Liste des menus: <select size="1" name="liste_menus">
    				<% 
    					rst.open "SELECT * FROM Table_Menus ORDER BY NomMenu", conn
    					do while not rst.eof
    				%>
    					<option value = "<% = rst("MenuNum") %>"><% response.write rst("NomMenu") & "<br>"  %></option>
    				<% 
    					rst.movenext
    					loop
    					rst.close
    				%>
    				</select>
    				<%response.write request.form("liste_menus")%>
    </form>
    				</body>
     
    </html>
    La deuxième question conerne la mise a jour des données. Une solution possible serait de rediriger la page sur elle meme en passant en parametre la valeur renvoyée par le champ, mais ca implique de devoir passer le parametre dés le départ et ne me semble pas idéal. est-ce qu'il y a une autre solution?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    Salut,

    Si tu veux récupérer une valeur transmise via un formulaire, il te faut obligatoirement un submit. Eventuellement javascript peut s'en occuper lors de la selection de l'element de ta liste, mais c'est un peu hors sujet ici

    Dans le cas d'un formulaire :

    Il manque l'argument action à ta balise <form>, ton formulaire n'a pas de destination !
    Dans le cas ou ton formulaire s'appelle, tu devras différencier le cas ou le formulaire est posté ou non. Utilises pour cela, un <intput type="hidden"> qui te servira de marqueur, tu le testes en debut de page pour savoir dans quel cas tu te trouves.

    Il existe de nombreuses solutions, ca depend aussi de tes habitudes et du contexte

    nb :
    Request.Form("var") exigera que var soit transmise via formulaire
    Request.querystring exigera var dans l'url
    Request("var") n'exigera rien du tout et recupera la valeur de var

  3. #3
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    le problème du submit, c'est qu'il entraine la remise du champ deroulant à sa valeur par défaut. Moi je voudrais utiliser la valeur récupérée pour déterminer quelles valeurs de la 2e de mes tables je dois afficher, et éventuellement la passer en paramètre si je veux modifier une de ces valeurs. Or comme il me la remet à défaut via le submit, ca plante. Comment je peux faire dans ce cas?

    Par contre j'avais effectivement oublier la marque action, thx pour l'aide gwenn

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    Il suffit dans ce cas de l'initialiser, et lorsque tu construit ta liste tu testes si c'est bien le menu actif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If request.Form("liste_menus") = rst("MenuNum") then 
    Response.write "<option value=""" & rst("MenuNum") & """ selected=""selected"" >" & rst("NomMenu") & "</option>"
    Else
    Response.write "<option value=""" & rst("MenuNum") & """>" & rst("NomMenu") & "</option>"			
    End If

  5. #5
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    je comprend pas bien ce que tu fais, le code est accepté, mais ca ne sélectionne pas l'option.
    D'après ce que je vois, tu renvoies la ligne de code option de différente manière en fonction de l'égalité request.Form("liste_menus") = rst("MenuNum").
    C'est ca? Et on est censé obtenir quoi?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    Ca a pour but de repondre a ce que tu demandes

    Afficher une liste déroulante, et dans le cas ou l'utilisateur a choisi une option de la liste, de la retrouver apres le submit du form, pour la choisir comme element actif.

    Sur www.developpez.com , lorsque tu visualise un post du forum ASP, en bas , il y a une liste déroulante avec le forum ASP selectionné, c'est bien ca que tu veux faire ?

  7. #7
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    hehe, oui c'est ca .
    Mais j'ai réglé le problème en passant par des cookies et la condition que tu m'a donné. Quand je rentrais ton code, le script continuait de marcher, mais ce la ne selectionnais pas, d'ou les cookies, qui me permettent de garder l'etat de mon champ en cours. Je dois pas etre clair la mais bon apres 8hrs sur le pc... . Cela dit, je te remercie pour ton aide Gwenn :d

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    salut,
    j'avais eu le meme probleme et j'avais fait la même chose que Gwenn, je ne comprends pas tres bien pourquoi ca ne marcherait pas chez toi... , il y a peut etre un petit probleme dans ton code.. Je ne vois pas trop l'utilité de passer par des cookies, enfin si ca marche pour toi tant mieux
    en tout cas pour les autres gens qui auraient le meme probleme, je pense que la solution de Gwenn est plus simple et plus efficace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<%
    		do while not RS.EOF
    			if  trim(RS("login")) = login then
    				Response.Write "<option selected value=" & RS("login") & ">" & RS("login") & "</option>"
    			else
    				Response.Write "<option value=" & RS("login") & ">" & RS("login") & "</option>"
    			end if 
    			RS.MoveNext
    		loop
    		RS.Close
    	%>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Menu déroulant: impossible à changer la mise en forme
    Par Dartounet dans le forum ASP.NET
    Réponses: 0
    Dernier message: 16/10/2013, 10h26
  2. Réponses: 1
    Dernier message: 09/02/2012, 18h30
  3. Réponses: 2
    Dernier message: 10/11/2011, 12h01
  4. [AC-2007] Menu déroulant avec requete de mise a jour
    Par nabilophone11 dans le forum IHM
    Réponses: 15
    Dernier message: 05/11/2010, 17h18
  5. [AC-2007] Liste déroulante dans formulaire et mise à jour de champs
    Par Katsandrya dans le forum IHM
    Réponses: 0
    Dernier message: 22/04/2009, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo