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 :

request.form & CheckBox


Sujet :

ASP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 34
    Par défaut request.form & CheckBox
    Salut salut,

    Dans un formulaire html j'ai plusieurs checkbox qui portent le même nom (même valeur de l'attribut "name") ==> c'est un formulaire dynamique où l'utilisateur peux ajouter des champs via javascript (qui génère à la demande des "bouts" de formulaire grâce à la propriété innerHTML du DOM)

    Lorsque je récupère les données dans ma page asp je voudrais, pour chacune des checkbox donner une valeur à une variable si la case est cochée et une autre valeur si elle ne l'est pas.

    Pour récupérer la valeur de la checkbox ("on" ou rien) je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.form("NomDeLaCheckBox")(i)
    dans un boucle qui for i=0 au nombre de checkbox portant ce nom

    Mon problème est que quand la case n'est pas cochée, j'obtient une erreur :
    Un index de tableau est hors des limites.
    ce qui est normal vu que la case n'est pas cochée donc pas prise en compte.

    J'ai essayer en faisant le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if Request.Form("NomDeLaCheckBox")(i)="" then
     maVar="a"
    else maVar="b"
    end if
    mais j'obtient la même erreur
    J'ai aussi essayé en testant l'existence de Request.Form("NomDeLaCheckBox")(i) avec la fonction isNull mais ça ne donne rien non plus....

    Quelqu'un aurait-il une idée !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Une solution parmi d'autres:
    Je suppose que ce qui différencie un checkbox d'un autre, c'est son "value"?
    1. Tu crées un champs hidden avec les "values" possibles.
    2. Dans ton code, tu fais quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    arr1 = split(request.form("NomDeLaCheckBox"),",")
    arr2 = split(request.form("hiddenDesValues"),",")
    Et tu comparres les 2 tableaux.
    Ceux qui ne sont pas dans arr1 ne sont pas cochés.

    Je lance ça comme ça, ce n'est pas testé.

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 34
    Par défaut
    Merci pour vos réponse !

    thor22, je ne peux malheureusement pas utilisé ta solution car mes checkbox n'ont pas de champ value et si j'en rajoute 1 ils auront tous la même valeur car les checkbox sont ajoutés dynamiquement en javascript avec le même code.

    D'autre part la boucle for sur i (celle de request.form("NomDeLaCheckBox")(i)) est indispensable car il y a d'autres codes exécutés dans cette boucle et je ne peux exclure certaines valeurs de i. Je suis donc obligé d'avoir ce request.form("NomDeLaCheckBox")(i) qui me pose justement problème.

    En fait le formulaire "dynamique" permet de créer plusieurs fieldset (sorte de "sous-formulaire" ... au niveau de la présentation du moins). J'aurais aimé faire un boucle sur chaque fieldset mais comme ce n'est pas possible, je suis obligé de bouclé directement sur les différents champs.

    Ca rejoint d'ailleurs certainement la question du sujet auquel Gwenn faire référence quand psyco2604 pose la question :
    est il possible de récupérer l'ensemble des cases à cocher se trouvant un fieldset ???
    Je ne peux pas non plus utiliser la solution proposé sur ce post pour la même raison (je boucle sur i de 1 au nbre total de fiedset = nombre réél de checkbox -cochées ou pas- et non sur chaque champ du formulaire comme proposé dans le post avec le "For Each strChamp in Request.Form")

    Il me reste la solution de mettre une liste déroulant oui/non au lieu du checkBox ou bien gardé le checkbox et modifier par javascript un champs hidden qui contiendrai avec pour vcalue "0" ou "1" selon que la case est cochée ou non...

    A moins que qq arrive à déchiffrer mon charabia (je sais c pas simple mon afaire) et trouve une autre solution, genre tester l'existence de request.form("NomDeLaCheckBox")(i) et contourner le message d'erreur lorsque ce dernier n'existe pas...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je te lance l'idée comme ça (c'est pas vraiment de la bonne programmation, mais ça pourrait peut-être faire ton affaire):

    Tu pourrais utiliser un "on error resume next" et ensuite, quand tu regarde la valeur de "request.form("NomDeLaCheckBox")(i)", vérifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Err.Number <> 0 Then
    Pour savoir s'il y a eu une erreur et ainsi savoir que le checkbox n'est pas coché.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 34
    Par défaut
    Merci thor22 !

    Mais j'ai fais un select oui/non à la place ... et ce sur pleins de champs, c'est pas super ergonomique mais je ne peux pas me permettre de passer plus de temps sur çà...

    L'idée d'utiliser l'objet error, c'est pas bête du tout en effet même si comme tu le dis c pas super propre... ce qui compte c'est que ça marche

    En fait ta solution répond à la question que j'ai posé à savoir comment faire un test sur le "cochage" d'un checkbox dans un script asp (où non cochée <=> inexistance) et ce, même lorsque plusieurs checkbox ont le même nom obligeant a utiliser les indiçage de liste request.form("NomDeLaCheckBox")(i)
    Or je me rend compte qu'en fait mon problème est plus en amont : comme asp ignore les cases non cochées alors ma liste n'aura jamais la taille voulue, ce qui impliquerait même avec ta méthode des décalages d'indice.
    Chuis ptet pas super clair... :
    en gros au lieu d'avoir pluisieurs listes de même taille pour mes request.form :
    pour les input : ("Valinput1", "Valinput2", "Valinput3")
    pour les checkBox : ("valCheckBox1", "valCheckBox2", "valCheckBox3")
    et pouvoir ainsi traiter mon formulaire partie par partie grâce à une boucle sur i=1 à 3 (dans ce cas).
    Pour i=1 je traite Valinput1 et valCheckBox1 (1 fielset de mon form)
    etc.
    Bref là j'ai :
    pour les input : ("Valinput1", "Valinput2", "Valinput3")
    pour les checkBox : ("valCheckBox1", "valCheckBox3")
    des listes à taille différentes à cause de ces p*** de checkBox, ce qui fausse le traitement par partie de mon formulaire ==> il y aura des décallage même si je fais un on resume Next...
    Bref mon problème est donc plus général :
    comment traiter proprement un formulaire partie par partie, je n'ai jamais trouvé de solution à ce problème d'où mes boucles for i... et c'est vraiment dommage que la technologie asp ne permette pas de gérer les formulaire par partie, chose qui est prévue avec les fieldset mais qui ne sont actuellement qu'un aspect de présentation ...

    Je vais mettre ce sujet en résolu et en ouvrir un autre sur ce problème où je l'expliquerai un peu mieux...

    merci encore pour ton aide thor22 !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pas de trouble!

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

Discussions similaires

  1. form et checkbox
    Par marion782 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/02/2006, 23h54
  2. Réponses: 7
    Dernier message: 24/01/2006, 11h03
  3. Input File, Request.form Firefox, Chemin non spécifié
    Par Phenolphtaleine dans le forum ASP
    Réponses: 6
    Dernier message: 13/01/2005, 09h30
  4. URGENT : Request.Form ne marche pas sous IE6
    Par Laurent Outan dans le forum ASP
    Réponses: 9
    Dernier message: 16/07/2004, 15h25
  5. Réponses: 15
    Dernier message: 21/06/2004, 16h52

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