Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/02/2007, 09h49   #1
Invité de passage
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 3
Points : 3
Par défaut checkbox dans un tableau dynamique

g un tableau dont les lignes et les colonnes sont construites suite au choix de l'utilisateur dans une page precedente. le user dois cocher des cases dans ce tableau selon son choix ma question c comment recuperer les données au meme temps laisser le tableau tel qu'il est c a d avec les cases cochées déjà
pour mieux me compredre voilà mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<form name="form1" method="post" action="ajout_x_maj.asp">
<table >
 
    <tr>
	<td ></td>
	        <%for i=0 to ubound (produits)-1%>
      <td >
 
	  <%response.Write(produits(i,1)&"<br>")%>
 
      </td>
 
      <%next%>
    </tr>
 
	<%for j=0 to ubound (thact)-1%>
<tr>
	  <td >
	    <%response.write(thact(j,2)&"<br>")%>
               </td>
 
<%for i=0 to ubound (produits)-1%>	 
 
 
 
     <td >  <a href="ajout_produit_maj.asp?id_thact=<%=thact(j,0)%>&produits=<%=produits(i,0)%>&id_th=<%=thact(j,1)%>">
 
       <input name="checkbox" type="checkbox" class="btnOK" value="<%=thact(j,0)&"<br>"&produits(i,0)&"<br>"&thact(j,1)%>" >
 
      </a></td> 
 
 
 
 
<%next%>
 
 
 
</tr>
 
 
 <%next%>
 
  </table>
 
        <input name="Submit" type="submit" class="tableauVertGrand1" value="valider">
</form>
j'ai pas pu recuperer les querystring donc g utilisé le checkbox mais la page ajout_x_maj.asp me donne le resultat suivant
1198
2
651, 1198
4
651, 1199
3
651 ces sont trois choix pour chaque choix il y a trois valeurs comment recuperer ces derniers (les 3 valeurs exp: 1198 et 2 et 651) chacune à part?
memoza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 10h02   #2
Inactif
 
Inscription : mars 2002
Messages : 1 295
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2002
Messages : 1 295
Points : 1 345
Points : 1 345
Chaque checkbox doit avoir un nom différent pour que tu puisse récupérer son état.
Si les noms sont indicés tu peut facilement les récupérer avec:
Citation:
request.form("checkbox" & i)
par exemple, i étant l'indice.

De plus, sans vouloir t'offenser, je pense que tu n'as pas compris comment utiliser les formulaires en Asp. Je suggère la lecture de tutoriels.
Florian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 10h17   #3
Invité de passage
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 3
Points : 3
j'ai bien lu les tuto
mais je sais que je m'xprime mal en fait je sais explique du tout
je reformule donc dans un formulaire html j'ai plusieurs checkbox qui portent le même nom ==>c un formulaire contenant un tableau dynamique où l'utilisateur selon la page precedente peut ajouter plusieurs champs
pour mieux me comprendre voilà un autre exp d'une autre personne qui n'a pas trouvé de solution
http://www.developpez.net/forums/arc...p/t-20779.html
memoza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 10h39   #4
Inactif
 
Inscription : mars 2002
Messages : 1 295
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2002
Messages : 1 295
Points : 1 345
Points : 1 345
Si les checkbox ont le même nom, alors il sera impossible de différencier les valeurs.
Je en vois pas ce qui t'impose de leur mettre le même nom.
J'ai fait des tas de pages en asp et en php avec des checkbox en quantité industrielle, en utilisant un "nommage indicé" je n'ai jamais eu de soucis.
Florian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 11h15   #5
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Salut,

Citation:
Envoyé par Florian
Chaque checkbox doit avoir un nom différent pour que tu puisse récupérer son état.
Pas forcement, si tu as un formulaire comme celui-ci
Code :
1
2
3
4
5
6
<form name="frm" action="result.asp" method="post">
	<input type="checkbox" name="toto" value="A-1">A-1<br>
	<input type="checkbox" name="toto" value="A-2">A-2<br>
	<input type="checkbox" name="toto" value="A-3">A-3<br>
	<input type="submit" name="Action" value="Envoyer">
</form>
Suivant les cases cochées, le formulaire envoie
Code :
toto=A-1&toto=A-2&toto=A-3&Action=Envoyer
Pour récupérer la valeur des checkbox tu fais simplement un split. Ou bien une boucle du genre
Code :
1
2
3
FOR each name in request.form
	response.Write(name & " : " & request.Form(name) & "<br>")
NEXT
Du coup, tu valorises tes valeurs en mettant par exemple un ID concaténé avec une quantité...

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 11h23   #6
Inactif
 
Inscription : mars 2002
Messages : 1 295
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2002
Messages : 1 295
Points : 1 345
Points : 1 345
C'est une solution intéressante, à laquelle je n'avais jamais pensée.
Néanmoins est-ce bien raisonnable, on risquerait de prendre des habitudes gênantes pour passer en Asp .net
Florian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 12h15   #7
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Crois-tu qu'ASP.NET ne peut pas gérer les checkbox comme ça?
Je serais étonné. Imagine un site de commandes de pizzas. Si j'ai un formulaire avec le choix des pizzas, j'imagine mal devoir taper dans le code la gestion individuelle des checkbox.

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 14h16   #8
Inactif
 
Inscription : mars 2002
Messages : 1 295
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2002
Messages : 1 295
Points : 1 345
Points : 1 345
Des "objets asp checkbox" avec le même id ne sont pas acceptées, j'ai testé avec web developer express. Utiliser des éléments de formulaires non-.Net c'est quand même pas le but

Je me disais juste que cette méthode, qui doit surement présenter un intérêt par moment, ne me semble pas transposable en .Net. Ceci je n'ai pas a science infuse

Je mettrais ton nom dans la prochaine mouture de mon tuto asp quand je rajouterais cette façon de gérer les checkbox qui m'avait totalement échappée
Florian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 15h43   #9
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Citation:
Envoyé par Florian
Des "objets asp checkbox" avec le même id ne sont pas acceptées
Par ID effectivement c'est impossible, par contre par nom c'est pas dit (pas testé).
Citation:
Envoyé par Florian
Je mettrais ton nom dans la prochaine mouture de mon tuto asp
Merci
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 09h29   #10
Invité de passage
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 3
Points : 3
oui on peut recuperer les valeurs d'un checkbox portant le meme nom par exp, on a le form suivant etant donné que actions(i,RS.Fields.Count-1) est un tableau utilisé afin de stocker dedans les champs d'une table de la BD
Code :
1
2
3
<form name="form1" method="post" action="x.asp">
<input name="checkbox" type="checkbox" value="<%=actions(i,0)%>"  >
</form>
pour recuperer dans une autre page exp x_maj.asp
Code :
1
2
3
4
5
6
 
redim t_IdAction(1)
for j=1 to request.form("checkbox").count
t_IdAction(j-1)=request.form("checkbox").item(j)
redim preserve t_IdAction(j)
next
et voilà on recupere ce qu'on veut dans un nouveau tableau
memoza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 10h31   #11
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Résolu?
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 12h40   #12
Invité de passage
 
Inscription : février 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 11
Points : 3
Points : 3
je pense que je vais changer de methode je vais pas utiliser les checkbox donc résolu autrement
memoza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 10h57   #13
Invité de passage
 
Développeur informatique
Inscription : août 2006
Messages : 27
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2006
Messages : 27
Points : 4
Points : 4
Citation:
Envoyé par Immobilis
Salut,


Pas forcement, si tu as un formulaire comme celui-ci
Code :
1
2
3
4
5
6
<form name="frm" action="result.asp" method="post">
	<input type="checkbox" name="toto" value="A-1">A-1<br>
	<input type="checkbox" name="toto" value="A-2">A-2<br>
	<input type="checkbox" name="toto" value="A-3">A-3<br>
	<input type="submit" name="Action" value="Envoyer">
</form>
Suivant les cases cochées, le formulaire envoie
Code :
toto=A-1&toto=A-2&toto=A-3&Action=Envoyer
Pour récupérer la valeur des checkbox tu fais simplement un split. Ou bien une boucle du genre
Code :
1
2
3
FOR each name in request.form
	response.Write(name & " : " & request.Form(name) & "<br>")
NEXT
Du coup, tu valorises tes valeurs en mettant par exemple un ID concaténé avec une quantité...

A+


Je reviens sur cette solution que je trouve très élégante mais qui me pose problème justement au niveau des checkboxs

En prenant comme exemple le formulaire suivant

Code :
1
2
3
4
5
6
<form name="frm" action="result.asp" method="post">
	<input type="hidden" name="cle" value="cle-1"><input type="checkbox" name="toto" value="A-1">A-1<br>
	<input type="hidden" name="cle" value="cle-2"><input type="checkbox" name="toto" value="A-2">A-2<br>
	<input type="hidden" name="cle" value="cle-3"><input type="checkbox" name="toto" value="A-3">A-3<br>
	<input type="submit" name="Action" value="Envoyer">
</form>
Et le code suivant

Code :
1
2
3
4
5
 
 
For i = 1 To Request("cle").Count	
 Response.Write Request("cle")(i) & " " & Request("toto")(i) & "<br />"	
Next
Ce code va générer une erreur d'indice si le checkbox est décoché parce qu'il y aura moins de toto de retourné que de cle.

Comment contourner le problème ?
tatayecorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 15h35   #14
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Tu mets "cle" dans la valeur de la checkbox.
A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 17h41   #15
Invité de passage
 
Développeur informatique
Inscription : août 2006
Messages : 27
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2006
Messages : 27
Points : 4
Points : 4
Effectivement,

Il faut mettre cle dans la valeur de la checkbox et faire deux boucles :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
For i = 1 To Request("cle").Count
 
 'Traitement...
 
 For j = 1 to Request("toto").Count
  If Request("toto").Item(j) = Request("cle")(i) Then
 
   'C'est coché
   'Traitement...
   Exit For
 
  End If
 Next
 
Next
tatayecorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 20h22   #16
Membre habitué
 
Inscription : mars 2003
Messages : 268
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : mars 2003
Messages : 268
Points : 144
Points : 144
Citation:
Envoyé par tatayecorp
Effectivement,

Il faut mettre cle dans la valeur de la checkbox et faire deux boucles :
Dans ce cas qu'elle est la nouvelle syntaxe du formulaire ci-dessous ?
Code :
1
2
3
4
5
6
7
 
<form name="frm" action="result.asp" method="post">
	<input type="hidden" name="cle" value="cle-1"><input type="checkbox" name="toto" value="A-1">A-1<br>
	<input type="hidden" name="cle" value="cle-2"><input type="checkbox" name="toto" value="A-2">A-2<br>
	<input type="hidden" name="cle" value="cle-3"><input type="checkbox" name="toto" value="A-3">A-3<br>
	<input type="submit" name="Action" value="Envoyer">
</form>
C'est bien : ?

Code :
1
2
3
4
5
6
7
<form name="frm" action="result.asp" method="post">
	<input type="hidden" name="cle" value="cle-1"><input type="checkbox" name="toto" value="cle">A-1<br>
	<input type="hidden" name="cle" value="cle-2"><input type="checkbox" name="toto" value="cle">A-2<br>
	<input type="hidden" name="cle" value="cle-3"><input type="checkbox" name="toto" value="cle">A-3<br>
	<input type="submit" name="Action" value="Envoyer">
</form>
Peux t'on m'expliquer l'intérêt du hidden collé à la checkbox ?

Merci
RamDevTeam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 00h05   #17
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Euh, je crois qu'on s'est mal compris. Si tu veux passer plus de valeurs, il faut toutes les mettre dans la checkbox. Je dirai donc:
Code :
1
2
3
4
5
6
<form name="frm" action="result.asp" method="post">
	<input type="checkbox" name="toto" value="cle-1;A-1">A-1<br>
	<input type="checkbox" name="toto" value="cle-2;A-2">A-2<br>
	<input type="checkbox" name="toto" value="cle-3;A-3">A-3<br>
	<input type="submit" name="Action" value="Envoyer">
</form>
Et on oublie les "hidden".

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h31.


 
 
 
 
Partenaires

Hébergement Web