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 :

Mise en archive avec checkbox


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut Mise en archive avec checkbox
    Hello, voila, j'ai un autre soucis que je n'arrive pas a résoudre.. ca fait 3 jours que je cherche comment faire.

    j ai une page(basearchive.asp) qui liste ma base de donnée. elle ecrit les nom des projets et l'id (en type hidden).
    et j ai un checkbox a coté (pour archiver) et si je coche un ou plusieur ca doit modifier les champs de ma base de donnée et mettre 1 ds le champ Archive.
    J'arrive à récupérer les id coché mais pour modifier mes champs j'ai une erreur.
    mon checkbox se trouve dans une boucle Do while donc recoit tjs meme nom... je pense que c'est a cause de ca.

    J'ai fait ma connexion a la base en haute de la page et je la ferme en bas (la connexion fonctionne bien)

    Voila le code pour la modification :

    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
     
    id = request.form("IDMesure")
    ordre = request.form("check")
     
    'on récupère tout les id, on les passe ds une variable, et on les sépare
    listeOrdre = Split(ordre, ", ")
    listeId = Split(id, ", ") 
     
    for i = 0 to UBound(listeOrdre)
    	response.write(listeId(i) & " - " & listeOrdre(i)) & "<br>"
    Next
     
    If listeOrdre(i) = 1 Then
    RS.Open "UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & listeId(i), Connect
    End if
     
    'Response.redirect("baseArchive.asp")
     
    Connect.Close
    Set Connect = Nothing
    je ne pense pas non plus que ca se fait avec Split....[/code]

  2. #2
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Salut,
    pourquoi dans ta page appelée basearchive.asp, tu ne nommes pas tes check avec l'id
    un petit exemple qui va peut-être t'aider (la page testC.asp s'auto appele)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%
    if request.form = "" then
    response.write "<form NAME=toto action=testC.asp method=POST>"
    for i =0 to 5 
    response.write "<input type =checkbox name = t"&i&">"
    next
    response.write "<input type = submit>" &_
    "</form>"
    else
    for each item in request.form 
    response.write request.form() & "<BR>"
    next 
    end if
    %>

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    je suis désolée mais j'ai pas tout compris au code. je devrais avoir qu'une seule page alors et non 1 page pour le formulaire et une autre qui modifie ma base?
    basearchive.asp contient 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
     
    		<form action="archivmodif.asp" method="post">
              <table width="490" align="center">
                <%
    	Do while not rst.EOF
    %>
                <input type="hidden" name="IDMesure" value="<%=rst("IDMesure") %>">
                <tr> 
                  <td width="144"><%=rst("Nom_Wafer")%></td>
                  <td width="316"><%=rst("Date")%></td>
                  <td width="31"><div align="right">
                     <input type="checkbox" name="check" value="1">
                    </div></td>
            </tr>
    <% rst.MoveNext%>
       <%Loop%>
              </table>
            <br>
            <table width="90" align="center">
              <tr>
                <td><div align="center">
                    <input name="archiver" type="submit" value="Archiver">
                  </div></td>
              </tr>
            </table>
    		</form>
    et dans la page archivModif.asp ben c'est le code de mon autre message..

    donc je devrais remplacer mon formulaire par ton code et supprimer archivmodif.asp?

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Et si tu faisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for i = 0 to UBound(listeOrdre) 
       response.write(listeId(i) & " - " & listeOrdre(i)) & "<br>" 
       If listeOrdre(i) = 1 Then 
          RS.Open "UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & listeId(i), Connect 
       End if 
    Next
    NB: Si tu mets "set archive = '1'" c'est que le champ est du texte.
    NB2: plutôt que "rs.open" fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connexion.execute("UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & listeId(i))
    .

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    voila alors, j'ai changer le code comme tu as dit,
    ca archive bien, mais ca n'archive pas les bons.
    Si j'archive le 15ème (par exemple), il archive le 1er... et c est tjs lui qui est archivé...
    c est bizard,,

  6. #6
    Membre émérite
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Par défaut
    le rst qui crée ton formulaire il contient tous les projets ou seulement certains ?

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    il contient tt les projets. en fait il liste tte la base de donnée.

  8. #8
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    C'est évident 1 ne dit pas qu'il est checké

  9. #9
    Membre émérite
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Par défaut
    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
    'traitement
    Rs_projet.Open "Projet",Connect
    While not Rs_projet.EOF
          If Request.Form("check_"&Rs_projet("IDMesure"))=1 Then
             RS.Open "UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & Rs_projet("IDMesure"), Connect 
             RS.Close
         End If
         Rs_project.MoveNext
    Wend 
     
    ' formulaire
      <form action="archivmodif.asp" method="post">
              <table width="490" align="center">
                <%
       Do while not rst.EOF
    %>            
                <tr>
                  <td width="144"><%=rst("Nom_Wafer")%></td>
                  <td width="316"><%=rst("Date")%></td>
                  <td width="31"><div align="right">
                     <input type="checkbox" name="check_"<%=rst("IDMesure")%> value="1">
                    </div></td>
            </tr>
    <% rst.MoveNext%>
       <%Loop%>
              </table>
            <br>
            <table width="90" align="center">
              <tr>
                <td><div align="center">
                    <input name="archiver" type="submit" value="Archiver">
                  </div></td>
              </tr>
            </table>
          </form>
    en gros l'idée est là

  10. #10
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    si c'est coché, il doit modifier l'enregistrement par rapport à l'ID qu il recoit et mettre 1 dans le champs Archive.

    et apres si il y a des projets ou il y a 1 ds Archive, il note a coté "Projet Archivé"..

  11. #11
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <form action="archivmodif.asp" method="post"> 
              <table width="490" align="center"> 
                <%
     
       Do while not rst.EOF 
    %> 
                  <tr> 
                  <td width="144"><%=rst("Nom_Wafer")%></td> 
                  <td width="316"><%=rst("Date")%></td> 
                  <td width="31"><div align="right"> 
                     <input type="checkbox" name="check" value=<%=rst("IDMesure") %>> 
    &">
    dans ta page archivmodif.asp
    teste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for each item in request.form 
    response.write request.form() & "<BR>" 
    next 
    end if
    Splite le request.form pour récupérer l'id et fais ton update

  12. #12
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    ca me fait pas d'erreur.. c'est deja pas mal...
    mais ca ne fait rien du tout..

    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
     
    <%
    Option Explicit
     
    Dim IDMesure
    Dim strConn
    Dim Connect
    Dim RS
    Dim id
    Dim ordre
    Dim listeOrdre
    Dim listeId
    Dim i
    Dim item
     
    strConn = Server.MapPath("/intranet/DB/intranet.mdb")
    Set Connect = Server.CreateObject("ADODB.Connection")
    Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & strConn
     
    set RS = Server.CreateObject("ADODB.Recordset")
     
    id = request.form("IDMesure")
    ordre = request.form("check")
     
    for each item in request.form 
    response.write request.form() & "<BR>" 
    next 
     
    listeOrdre = Split(ordre, ", ")
    listeId = Split(id, ", ") 
     
    for i = 0 to UBound(listeOrdre) 
       response.write(listeId(i) & " - " & listeOrdre(i)) & "<br>" 
       If listeOrdre(i) = 1 Then 
        Connect.execute("UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & id)
      End if 
    Next
     
    Response.redirect("baseArchive.asp")
     
    Connect.Close
    Set Connect = Nothing
    désolée si j'ai pas tout compris..
    et merci d'avance pour votre patience...

  13. #13
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    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
    <form action="archivmodif.asp" method="post"> 
              <table width="490" align="center"> 
                <% 
       Do while not rst.EOF 
    %> 
                  <tr> 
                  <td width="144"><%=rst("Nom_Wafer")%></td> 
                  <td width="316"><%=rst("Date")%></td> 
                  <td width="31"><div align="right"> 
                     <input type="checkbox" name="check" value="<%=rst("IDMesure") %>"> 
                    </div></td> 
            </tr> 
    <% rst.MoveNext%> 
       <%Loop%> 
              </table> 
            <br> 
            <table width="90" align="center"> 
              <tr> 
                <td><div align="center"> 
                    <input name="archiver" type="submit" value="Archiver"> 
                  </div></td> 
              </tr> 
            </table> 
          </form>
    Page archivmodif.asp
    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
     
    Option Explicit 
     
    Dim IDMesure 
    Dim strConn 
    Dim Connect 
    Dim RS 
    Dim id 
    Dim ordre 
    Dim listeOrdre 
    Dim listeId 
    Dim i 
    Dim item 
     
    strConn = Server.MapPath("/intranet/DB/intranet.mdb") 
    Set Connect = Server.CreateObject("ADODB.Connection") 
    Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & strConn 
     
    set RS = Server.CreateObject("ADODB.Recordset") 
    for each item in request.form 
        Connect.execute("UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & item 
      End if 
    Next 
     
    Response.redirect("baseArchive.asp") 
     
    Connect.Close 
    Set Connect = Nothing

  14. #14
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    ton code écrit 1 dans tt les enregistrements de la base automatiquement...
    il fait pas de test si c'est coché ou pas...
    donc en résumé.. tt mes projets sont archivé...

  15. #15
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    excuses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input type="checkbox" name=<%=rst("IDMesure") %>>

  16. #16
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    oki.. j ai tjs pas d erreur, mais ca ne fait rien si je coche..
    pourtant l'update est bien la...

  17. #17
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    c surment pke il n y a pas de if..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for each item in request.form
        Connect.execute("UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & item)
    Next
    alors j'ai mit comme ca mais ca change rien..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for each item in request.form
    	If Request("check_"&id)=1 Then 
        Connect.execute("UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & item)
    	end if
    Next

  18. #18
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    très bizarre,
    fais response.write de item

    for each item in request.form
    response.write item
    'Connect.execute("UPDATE TableMesure SET Archive = '1' WHERE IDMesure=" & item)
    Next

    on est bien d'accord
    <input type="checkbox" name=<%=rst("IDMesure") %>>
    rst("IDMesure") est numérique

  19. #19
    Membre émérite
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Par défaut
    je suis pas vexé du tout mais il me semble avoir mis le test dans mon exemple.... mais t'as pas voulu y porter ton attention

    je veux pas jouer les boudeur mais avec on code tu aurais fini depuis longtemp

  20. #20
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Il faut noter que qd un case n'est pas cochée sa valeur n'est pas postée.
    Exemple:
    ID 1 | case 1 cochée
    ID 2 | case 2 PAS cochée
    ID 3 | case 3 cochée

    Le formulaire envoi ID1,ID2,ID3 et cochée, cochée
    Du coup c'est décalé et il n'y a pas de valeur pour ID3.

    Solution: la valeur de la case à cocher doit etre la valeur de l'ID et non pas '1'.
    Qd tu postes les valeurs que tu reçois sont celles des enregistrement à classer 'Archivé'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE matable set monchamp = 1 where ID IN (" & request.form("check") & ")"
    En plus, tu n'as plus besoin de faire de SPLIT().
    Et puis attention: il ne faut pas mettre name mais value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" value=<%=rst("IDMesure") %> name='check'>
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. AJAX mise à jour bd avec checkbox
    Par wakan dans le forum CodeIgniter
    Réponses: 1
    Dernier message: 04/03/2011, 23h21
  2. [MySQL] Mise à jour mysql avec une checkbox non checké
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/08/2006, 16h45
  3. [Javascript]Mise en valeur d'un tr avec checkbox
    Par Arnard dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/06/2006, 09h14
  4. [C#] TreeView avec CheckBox "indeterminate"
    Par padumeur dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/01/2005, 20h53
  5. Mise en forme avec Netscape et Mozilla
    Par seb30 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/10/2004, 10h18

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