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 :

Requêtage checkbox cochées


Sujet :

ASP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut Requêtage checkbox cochées
    Bonjour,

    je continue mes problèmes :


    j'ai un formulaire avec des lignes d'une bd qui s'affiche selon un premier paramètre choisie.
    En face de chacune de mes lignes, j'ai une checkbox.
    Des qu'au moins une checkbox est coché alors j'ai un bouton supprimer qu'y apparait.
    Je veux que , lorsque je clique sur le bouton "supprimer", les lignes qui correspondent aux checkboxs cochées soient supprimer.

    VOici mon 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
    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
    48
    49
    50
    51
    52
    53
    54
    55
     
    <form name="affichage" method="post" action="">
    	<table width="100%" border="1" cellspacing="0">
    		<tr> 
    			<td height="10"><div align="center" style="font-weight: bold">Date</div></td>
    			<td height="10"><div align="center" style="font-weight: bold">Km</div></td>
    			<td height="10"><div align="center" style="font-weight: bold">Evenement</div></td>
    			<td height="10"><div align="center" style="font-weight: bold">Prestataire</div></td> 
    			<td height="10"><div align="center" style="font-weight: bold">Cout €</div></td>
    			<td height="10"><div align="center" style="font-weight: bold">Nombre de minutes</div></td>
    			<td height="10"><div align="center" style="font-weight: bold">Commentaire</div></td>
    			<td height="10"><div align="center" style="font-weight: bold">Supp</div></td>
    		</tr>
     
     <%
    	if  not IsEmpty(num_materiel) then							
    	requete = "select *  from parc_gestion_vehicule "
    	requete = requete & " inner join parc_prestataire on prestataire = idprestataire "
    	requete = requete & " inner join parc_evenement on evenement = idevenement and num_materiel = "&num_materiel&"  "
    	requete = requete & " order by date desc "
     
    Set rs3 = Db_sql.Execute(requete)
    	while not rs3.eof
     
    	Response.write("<tr>")
    	Response.write("<td><div align="center">"&rs3("date")&"</div></td>")
    	Response.write("<td><div align="center">"&rs3("km")&"</div></td>")
    	Response.write("<td><div align="center">"&rs3("Libelle")&"</div></td>")
    	Response.write("<td><div align="center">"&rs3("libellé")&"</div></td>")
    	Response.write("<td><div align="center">"&rs3("montant")&"</div></td>")
    	Response.write("<td><div align="center">"&rs3("nb_heure")&"</div></td>")
    	Response.write("<td><div align="center">"&rs3("commentaire")&"</div></td>")
    			%>
    	<td align="center" >
    	<input id="supp<% =i %>" type="checkbox" name="supp<% =i %>" onclick="test_chckbx();">
    	<input type="hidden" name="num_materiel<% = i %>" value="num_materiel<% = i %>" />
    	<input type="hidden" name="dat<% = i %>" value="dat<% = i %>" />
    	<input type="hidden" name="km<% = i %>" value="km<% = i %>" />
    	<input type="hidden" name="evenement<% = i %>" value="evenement<% = i %>" />										
    	</td>
    					<%
    								i=i+1							
    	Response.write("</tr>")
    	rs3.movenext 	
    	wend
    	end if
    					%>
    			<tr>		
    				  <td></td><td></td><td></td><td></td><td></td><td></td><td></td>
    				  <td align="center">
    					<input id="validation" name="validation" type="submit" value="Valider" style="visibility:hidden;">
    				  </td>
    			</tr>
    	 </table>
    	  </form>

    j'ai mis des champs cachés pour récupéré les valeurs de ma clef primaire qui seront cochés...

    Maintenant Voici la requete de suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'For each del.checkbox, si elle est cochée alors ...
    		'if affichage.checked then
    		del = "delete from parc_gestion_vehicule when num_materiel = num_materiel<% =i %> "
    	 	del = del & " and dat = dat <% =i %> "
    		del = del & " and km = km  <% =i %> "
    		del = del & " and evenement = evenement <% =i %>"
    		db.execute(del) 
    		i=i+1
    		'end if
    Et c'est la ou j'ai le probleme ...
    Merci de me lancer sur une piste.

  2. #2
    vva
    vva est déconnecté
    Membre averti Avatar de vva
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 463
    Points : 447
    Points
    447
    Par défaut
    ce n'est pas when dans la condition mais where qu'il faut mettre

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut
    OUi c'est vrai.

    Mais j'ai déjà un souci au dela de ca ...
    ma requete ASP est entre <% et%> et j'ai un compteur i qui me permet de voir les différentes lignes (cf mon form) ...
    Du coup ma requete n'est syntaxiquement pas bonne car

    '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <%
    del = "delete from parc_gestion_vehicule where num_materiel = num_materiel<%=i %>"
    ma requête se ferme à ce niveau la ..
    As tu une autre formulation ?

  4. #4
    vva
    vva est déconnecté
    Membre averti Avatar de vva
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 463
    Points : 447
    Points
    447

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut
    Ok pour la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%
    i=0
    'For each del.checkbox, si elle est cochée alors ...
    'if affichage.checked then
    del = "delete from parc_gestion_vehicule where num_materiel = num_materiel = " & i 
    del = del & " and dat = dat = " & i 
    del = del & " and km = km = " & i 
    del = del & " and evenement = evenement = " & i 
    'db.execute(del) 
    i=i+1
    'end if
    %>
    Est ce que tu peux me formuler en asp et a l'aide du form :
    "Pour chaque chexbox qui est coché alors
    Si elle est coché alors ....
    ------MA REQUETE -----
    Fin si
    Fin

  6. #6
    Membre expérimenté
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Points : 1 350
    Points
    1 350
    Par défaut
    Citation Envoyé par ririch Voir le message
    Ok pour la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%
    i=0
    'For each del.checkbox, si elle est cochée alors ...
    'if affichage.checked then
    del = "delete from parc_gestion_vehicule where num_materiel = num_materiel = " & i 
    del = del & " and dat = dat = " & i 
    del = del & " and km = km = " & i 
    del = del & " and evenement = evenement = " & i 
    'db.execute(del) 
    i=i+1
    'end if
    %>
    Est ce que tu peux me formuler en asp et a l'aide du form :
    "Pour chaque chexbox qui est coché alors
    Si elle est coché alors ....
    ------MA REQUETE -----
    Fin si
    Fin
    Salut,

    Chaque table d'une base est censée avoir une clé primaire donc identifiant unique. De ce fait pourquoi tu ne mets pas l'id en tant que valeur des checkbox.... ? Cela t'éviterais de faire des "AND" dans ton delete et te faciliterais amplement les choses.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut
    Simplement parce que ma clef primaire c'est l' ensemble des 4 valeurs...
    un numéro de véhicule + une date + un km + un evenement..
    C'est ça ma clef primaire

  8. #8
    vva
    vva est déconnecté
    Membre averti Avatar de vva
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 463
    Points : 447
    Points
    447
    Par défaut
    ce serait plus simple si tu avais créé une table avec un id unique comme cela pas la peine de te palucher une clef primaire à 4 critères et dans ton select la valeur de l'option = l'ID de l'enregistrement il te reste ensuit eà fair un delete where id = valeur du select et le tour est joué. modifie ta table s'il est encore temps ce sera plus simple que de jongler avec du code

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut
    Ca me contraint de modifier plusieurs pages ... car bon nombre de mes pages font appel à cette table de ma BD ...
    J'aurais du mettre un champ unique, qui s'incrémente automatiquement...
    J'aurais du ... mais je ne peux plus.

    Le fait est que maintenant, je sais ce que je veux.. Je n'arrive juste pas a traduire mon algo en language ASP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%
    i=0 //j'initialise mon compteur a 0
    'Pour chaque checkbox
    ' si elle est cochée alors 
    //Je lance ma requete
    del = "delete from parc_gestion_vehicule where num_materiel = num_materiel = " & i 
    del = del & " and dat = dat = " & i 
    del = del & " and km = km = " & i 
    del = del & " and evenement = evenement = " & i 
    'db.execute(del) 
    'end if //sinon elle est pas coché
    i=i+1 // je test la checkbox suivante
    %>

  10. #10
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Une solution un peu empirique : donner à chaque checkbox une valeur correspondant correspondant à tes enregistrements à supprimer, et un name unique.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input id="supp<% =i %>" type="checkbox" name="supp" onclick="test_chckbx();" value = "<%= rs3("num_materiel") %>_<%=rs3("date") %>_<%= rs3("km") %>_<%= rs3("evenement")%>">
    ce qui va te donner, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type=checkbox value="123 AA 06_05/05/2009_12123_evenement1" name="suppr"...>
    <input type=checkbox value="123 AA 06_05/05/2009_12142_evenement2" name="suppr"...>
    Il faut ensuite récupérer chacune des valeurs (c'est plus chaud !):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    clefs=split(request("suppr"), ",")
    qui va te donner un tableau contenant les valeurs :

    123 AA 06_05/05/2009_12123_evenement1
    123 AA 06_05/05/2009_12142_evenement2
    etc ...

    splitter ensuite chaque valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    v=split(clefs(i), "_")
    num_materiel=v(0)
    date=v(1)
    km=v(2)
    evt=v(3)
    Rien de plus simple, ensuite, que de construire tes requêtes à partir des valeurs obtenues, puis de les balancer à la BD.

    C'est un peu (très !) lourd, mais il n'y a pas trente-six manières de retrouver ses petits dans une BdD autrement que par la clef, donc il faut bien qu'elle soit transmise d'une manière ou d'une autre. Ici, ton compteur i ne sert pas à grand chose

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par roro06 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    clefs=split(request("suppr"), ",")
    qui va te donner un tableau contenant les valeurs :

    123 AA 06_05/05/2009_12123_evenement1
    123 AA 06_05/05/2009_12142_evenement2
    etc ...

    splitter ensuite chaque valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    v=split(clefs(i), "_")
    num_materiel=v(0)
    date=v(1)
    km=v(2)
    evt=v(3)
    Rien de plus simple, ensuite, que de construire tes requêtes à partir des valeurs obtenues, puis de les balancer à la BD.

    C'est un peu (très !) lourd, mais il n'y a pas trente-six manières de retrouver ses petits dans une BdD autrement que par la clef, donc il faut bien qu'elle soit transmise d'une manière ou d'une autre. Ici, ton compteur i ne sert pas à grand chose
    Je ne sais pas ou je mets les codes que tu m'a ecrit la .. à la suite ?
    De plus, a quoi va ressembler ma requete maintenant que je n'utilise plus mon incrémentation ... je dois encore verifier que "pour chaque checkbox ...." nan ?

  12. #12
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Salut

    Ton incrémentation ne te sert à rien car elle ne te permet pas de retrouver tes infos dans la base de données. Le but ici est de transmettre les données depuis ta page (sur le client) vers le serveur de manière à supprimer les bonnes lignes. Or tes lignes sont connues de menière unique par quatre valeurs : materiel, date, km, evt.

    Donc dans un premier temps tu construis ton formulaire de manière à identifier clairement les enregistrements concernés (qui seront remontés ensuite vers le serveur), donc avec les quatre champs, puis ensuite, à la soumission du formulaire, de retrouver les mêmes enregistrements et de les supprimer.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut
    Ton code ne marche pas encore parfaitement...
    Quand je choisie un materiel qui n'a encore rien d'associer (pas de km, pas de date et pas d'evenement) alors pas de souci ...
    des que je selectionne un materiel avec des lignes associer j'ai l'erreur suivante :
    Type d'erreur :
    Erreur d'exécution Microsoft VBScript (0x800A0009)
    Indice en dehors de la plage: '0'
    /Parc/SaisieEvenementR.asp, line 415
    qui correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clefs=split(request("suppr"), ",")
    v=split(clefs(i), "_")    <---CETTE LIGNE
    num_materiel=v(0)
    dat=v(1)
    km=v(2)
    evenement=v(3)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 192
    Points : 47
    Points
    47
    Par défaut
    Mon formulaire est correcte.
    La preuve avec le navigateur :
    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
    <tr>
    <td align="center" >
    <input type="checkbox" name="supp" onclick="test_chckbx();" 
    value = "485_26/02/2009_204556_6">										
    </td>
    </tr>
     
    <tr>
    <td align="center" >
    <input type="checkbox" name="supp" onclick="test_chckbx();" 
    value = "485_25/02/2009_204511_59">										
    </td>
    </tr>
     
    <tr>
    <td align="center" >
    <input type="checkbox" name="supp" onclick="test_chckbx();" 
    value = "485_10/02/2009_203400_52">										
    </td>
    ps : j'ai mis en commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    					'clefs=split(request("suppr"), ",")
    					'v=split(clefs(i), "_")
    					'num_materiel=v(0)
    					'dat=v(1)
    					'km=v(2)
    				        'evenement=v(3)
    sinon le navigateur m'affiche une erreur

  15. #15
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    clefs étant un tableau, il faut le parcourir, je pensais que c'était entendu. Il faut bien-sûr rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for i=0 to ubound(clefs)  ' ( ou ubound(clefs) - 1, je sais plus !
     
           v=split(clefs(i), "_")
           num_materiel=v(0)
           date=v(1)
           km=v(2)
           evt=v(3)
    next
    de plus, j'ai fais une petite faute de frappe, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clefs=split(request("supp"), ",")
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clefs=split(request("suppr"), ",")
    Sorry

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

Discussions similaires

  1. fonction pour compter le nombre de checkbox coché ?
    Par Death83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/09/2005, 12h28
  2. nombre de checkbox cochés
    Par manaboko dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/05/2005, 16h39
  3. [débutant] obtenir le nombre de checkbox cochées
    Par macke_d dans le forum Composants
    Réponses: 3
    Dernier message: 30/03/2005, 03h17
  4. Réponses: 9
    Dernier message: 12/01/2005, 18h00
  5. [XML][XSL]afficher une checkbox cochée
    Par kirk80 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/09/2004, 18h49

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