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 :

case à cocher et session


Sujet :

ASP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut case à cocher et session
    Bonjour à tous, je coince sur un truc bête :


    j'ai un formulaire en asp avec un captcha et des cases à cocher dont je voudrais garder la valeur dans une variable de session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    input name="circuit" type="checkbox"  value="valeur 1"
    input name="circuit" type="checkbox"  value="valeur 2"
    input name="circuit" type="checkbox"  value="valeur 3"
    la session("se_circuit") a pour valeur "valeur 1" ou bien "valeur1, valeur 3" etc... selon les cases cochées

    si le captcha n'est pas ok, je renvoie sur le formulaire et forcémment je veux que les cases cochée le reste, ce que je n'arrive pas

    la syntaxe doit être du style "if session("se_circuit") like "valeur 1" then... 1er input checked
    idem pour les 2 autres

    Quelqu'un aurait-il la bonne syntaxe pour un "like" de session ? ou bien une autre solution.
    Merci
    Phil

  2. #2
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    J'avais exactement le même pb que toi.
    Je l'ai résolu avec un tableau comme suit :

    Sur la page d'enregistrement, si le controle captcha n'est pas bon, je dimensionne un tableau fonction du nombre d'éléments que j'ai à récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim TabForm() : i=0
    for each obj in request.form
        i=i+1
    next
    Maitennat que je sais combien il y en a, je les récupère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    redim TabForm(i-1,1)
    i=0
    for each obj in request.form
       TabForm(i,0)=obj 'on récupère le nom de l'objet
       TabForm(i,1)=request.Form(obj) 'on récupère sa valeur
       i=i+1
    next
    session("Formulaire")=TabForm
    et hop redirect vers mon formulaire

    Sur mon formulaire, je teste l'existence ou non d'un tableau de session formulaire type et si oui, je bascule mon tableau de session dans un tableau de variables, je le parcoure et je réaffecte ses valeurs à des variables, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if IsArray(Session("Formulaire")) then
       TabData = session("Formmulaire")
       for i = 0 to Ubound(TabData)
          select case TabData(i,0)
          case "nom": nom =TabData(i,0)
          case "email" : email=TabData(i,1)	
          case "chk" : chk=TabData(i,1)
          ...
          end select
       next
       session.contents.remove("Formulaire") 'IMPORTANT DE VIDER SES SESSIONS INUTILES
    end if
    Je n'ai plus qu'à mettre les valeurs dans la propriété value de mes inputs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="nom" value="<%=nom%>">
    Dans ton cas à toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" <%if chk=1 then response.write "checked"%> name="chk" value="1">
    <input type="checkbox"<%if chk=2 then response.write "checked"%> name="chk" value="2">
    <input type="checkbox" <%if chk=3 then response.write "checked"%> name="chk" value="3">
    Le tout est joué!

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour Eclisse,
    merci pour ta réponse... j'ai passé la journée à essayer de l'appliquer, mais en vain, même en corrigeant les petites fautes de frappe de ton exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TabData = session("Formmulaire") (un 'm' en trop)
    case "nom": nom =TabData(i,1)  au lieu de (i,0)
    pour les champs, pas de pb (mais j'avais déjà la solution des sessions)

    dans mon formulaire, pour les cases à cocher, j'avais des valeurs textes (dans lesqules j'ai enlevé les espaces) et non numériques...
    mais même avec les valeurs numériques, si j'en coche au moins 2, j'obtiens l'erreur :
    Microsoft VBScript runtime erreur '800a000d'
    Type mismatch: '[string: "1, 2"]'
    (testé sur une simple page basé sur ton exemple)

    Merci
    A+
    Phil

  4. #4
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    Salut phil!
    Excuses pour les petites fautes qui parsemaient mon code!!

    Dans ton cas, il faut que tu teste sur la page d'enregistrement la valeur du checkbox checké, cad :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    redim TabForm(i-1,1)
    i=0
    for each obj in request.form
       select case request.Form(obj)
       case "on" 'c'est l'objet selectionné !!!
       TabForm(i,0)=obj 'on récupère le nom de l'objet
       TabForm(i,1)=request.Form(obj) 'on récupère sa valeur
     
       case else ' c'est pour les autres cases à chocher, donc on ne récupère rien!
       end select
       i=i+1
    next
    session("Formulaire")=TabForm
    Normalement, au retour vers ton formulaire, tu vas bien avoir la valeur de ta case à chocher checké, quelle soit en txt ou numérique...
    Teins moi au courant
    @+

  5. #5
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    Voilà! excuse pour le délai, j'étais en train d'adapter.

    Pour la partie formulaire :
    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
     
    <%TabFForm=Session("Formulaire")
    if isArray(TabFForm) then
    	for i = lbound(TabFForm) to ubound(TabFForm)
    		execute(TabFForm(i,0)&"=TabFForm("&i&",1)")
    		select case Lcase(TabFForm(i,0))
    		case "circuit" : chk=chk & TabFForm(i,1)&","
    		end select
    	next
    	session.contents.remove("Formulaire")
    end if
    TbChk=split(replace(chk," ",""),",") %>
    <form name="ff" method="post" action="test.asp?act=save">
    <input name="circuit" type="checkbox" <%for i = lbound(TbChk) to Ubound(TbChk) %><% if TbChk(i)="valeur1" then response.write "checked" : exit for  %><% next %> value="valeur1">Val 1
    <input name="circuit" type="checkbox" <%for i = lbound(TbChk) to Ubound(TbChk)  %><% if TbChk(i)="valeur2" then response.write "checked" : exit for %><% next %>  value="valeur2">Val 2
    <input name="circuit" type="checkbox" <%for i = lbound(TbChk) to Ubound(TbChk)  %><% if TbChk(i)="valeur3" then response.write "checked" : exit for  %><% next %>  value="valeur3">Val 3
    <input type=submit>
    </form>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Pour la partie enregistrement :
    Dim TabForm(0,1)
    	for each obj in request.form
    		select case lcase(obj)
    		case "circuit"
    			TabForm(i,0)=obj 'on récupère le nom de l'objet
    			TabForm(i,1)=request.Form(obj) 'on récupère sa valeur
    		case else ' c'est pour les autres objets
    		end select
    		i=i+1
    	next
    	Session("Formulaire")=TabForm
    Copie ça dans une page vierge et regarde le résultat.
    le mieux est d'éviter les espaces dans les valeurs de tes checkbox; ça évite les erreurs de traitement des chaines.
    @+

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Résolu avec modifs
    Super Génial, merci

    Je l'ai modifié, parce que dans l'état, ca fonctionne super à une condition : que le formulaire ne contienne Que les cases à cocher "circuit".
    Si tu ajoutes d'autres champs, nom, email... ca plante, ce qui est normal puisqu'on collecte tous les objets.

    Dans la partie formulaire, on ajoute les autres champs à récupérer, juste en dessous de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    case "circuit" : chk=chk & TabFForm(i,1)&","
    case "nom": nom =TabFForm(i,1)
    case "email" : email=TabFForm(i,1)
    ...
    Par contre, je ne mets pas
    session.contents.remove("Formulaire") dans cette page, car si l'internaute actualise sa page, il doit tout ressaisir, je le mets à la fin de la page d'enregistrement quand le captcha est ok.


    et dans la partie enregistrement, j'ai repris ce que tu avais fait au début, compilé à ta dernière version, pour obtenir :
    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
     
    Dim TabForm() : i=0
    for each obj in request.form 'recup des activités
       i=i+1
    next
     
    redim TabForm(i-1,1)
    i=0
        for each obj in request.form
            select case lcase(obj)
            case "circuit"
                TabForm(i,0)=obj 'on récupère le nom de l'objet
                TabForm(i,1)=request.Form(obj) 'on récupère sa valeur
            case else ' c'est pour les autres objets
            TabForm(i,0)=obj 'on récupère le nom des autres objets
                TabForm(i,1)=request.Form(obj) 'on récupère sa valeur
            end select
            i=i+1
        next
        Session("Formulaire")=TabForm
    Merci et à plus


  7. #7
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    Oui, il fallait faire évidemment un mix des 2 bouts de code que je t'ai transmis. Pour le second j'ai evidemment fait au plus vite de manière à te fournir le code spécifique à ton pb.
    @+ et check comme résolu.

Discussions similaires

  1. [MIGRATION] champ de type "case à cocher"
    Par The_Nail dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 10/05/2011, 11h07
  2. case à cocher+fichier+session
    Par sami117 dans le forum Langage
    Réponses: 3
    Dernier message: 20/05/2009, 12h43
  3. Activer cases à cocher
    Par schnito dans le forum MFC
    Réponses: 4
    Dernier message: 24/01/2004, 16h07
  4. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 17h07

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