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 :

Bouton suivant et précédent


Sujet :

ASP

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut Bouton suivant et précédent
    j'ai créé un formulaire de recherche avec un critère.
    Une fois que la personne valide son formulaire, elle voit apparaitre le résultat dans un tableau.
    Hélas des fois j'ai 500 enregistrements.
    Donc j'ai décidé de faire un bouton suivant et précédent.
    aisins j'affiche 20 enregristements à chaque fois.
    donc lors de la validation, j'ai bien mes 20 enregistrements et une fois que je fais suivant, il perd le critère et ne m'affiche plus.
    Quelqu'un pourrait il m'aider?
    comment construit on ces boutons?

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    As-tu résolu ton problème précédent ?

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Non mais je suis en train de decortiquer mon code pour essayer de comprendre.
    et je pense être sur la bonne voie mais justement j'aurais besoin de savoir comment garder le paramètre de ma page pour les tableaux suivants.
    Car c'est quand je clique sur le bouton suivant que je vois apparaitre cette erreur et je me suis rendue compte que mon paramètre de mon formulaire n'était plus pris en compte.

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Je vois 2 solutions soit tu affectes ton paramètre à un input hidden que tu retrouveras après validation du formulaire, soit tu utilises une variable de session.
    Pour les variables de session :
    http://florian.developpez.com/asp/page4.php

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Pourrais je te montrer mon code?
    J'ai récupéré ce code à un collègue et il marche s'il faut juste afficher les données d'une requête statique.
    comme moi ma reuqête se compose selon les valeurs du formulaire, je pense qu'il y a quelquechose que je n'ai pas vu.

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Ok montres moi le code.

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    <%
    Dim Saisie__CP
    Saisie__CP = ""
    If (request.form("le_CP") <> "") Then
    Saisie__CP = request.form("le_CP")
    End If
    %>
    <%
    If (Saisie__CP <>"") Then
    Dim TABLEAU
    Dim TABLEAU_numRows

    Set TABLEAU = Server.CreateObject("ADODB.Recordset")
    TABLEAU.ActiveConnection = Connexion
    If(Saisie__CP<>"")Then
    TABLEAU.Source = "select valeur from table where cp like '"+ saisie__CP +"%' order by cp"
    End if
    TABLEAU.CursorType = 3
    TABLEAU.CursorLocation = 2
    TABLEAU.LockType = 1
    TABLEAU.Open()

    TABLEAU_numRows = 0
    End if
    %>
    <%
    Dim Repeat1__numRows
    Dim Repeat1__index

    Repeat1__numRows = 20
    Repeat1__index = 0
    TABLEAU_numRows = TABLEAU_numRows + Repeat1__numRows
    %>
    <%
    ' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

    Dim TABLEAU_total
    Dim TABLEAU_first
    Dim TABLEAU_last

    ' set the record count
    TABLEAU_total = TABLEAU.RecordCount

    ' set the number of rows displayed on this page
    If (TABLEAU_numRows < 0) Then
    TABLEAU_numRows = TABLEAU_total
    Elseif (TABLEAU_numRows = 0) Then
    TABLEAU_numRows = 1
    End If

    ' set the first and last displayed record
    TABLEAU_first = 1
    TABLEAU_last = TABLEAU_first + TABLEAU_numRows - 1

    ' if we have the correct record count, check the other stats
    If (TABLEAU_total <> -1) Then
    If (TABLEAU_first > TABLEAU_total) Then
    TABLEAU_first = TABLEAU_total
    End If
    If (TABLEAU_last > TABLEAU_total) Then
    TABLEAU_last = TABLEAU_total
    End If
    If (TABLEAU_numRows > TABLEAU_total) Then
    TABLEAU_numRows = TABLEAU_total
    End If
    End If
    %>
    <%
    ' *** Recordset Stats: if we don't know the record count, manually count them

    If (TABLEAU_total = -1) Then

    ' count the total records by iterating through the recordset
    TABLEAU_total=0
    While (Not TABLEAU.EOF)
    TABLEAU_total = TABLEAU_total + 1
    TABLEAU.MoveNext
    Wend

    ' reset the cursor to the beginning
    If (TABLEAU.CursorType > 0) Then
    TABLEAU.MoveFirst
    Else
    TABLEAU.Requery
    End If

    ' set the number of rows displayed on this page
    If (TABLEAU_numRows < 0 Or TABLEAU_numRows > TABLEAU_total) Then
    TABLEAU_numRows = TABLEAU_total
    End If

    ' set the first and last displayed record
    TABLEAU_first = 1
    TABLEAU_last = TABLEAU_first + TABLEAU_numRows - 1

    If (TABLEAU_first > TABLEAU_total) Then
    TABLEAU_first = TABLEAU_total
    End If
    If (TABLEAU_last > TABLEAU_total) Then
    TABLEAU_last = TABLEAU_total
    End If

    End If
    %>
    <%
    Dim MM_paramName
    %>
    <%
    ' *** Move To Record and Go To Record: declare variables

    Dim MM_rs
    Dim MM_rsCount
    Dim MM_size
    Dim MM_uniqueCol
    Dim MM_offset
    Dim MM_atTotal
    Dim MM_paramIsDefined

    Dim MM_param
    Dim MM_index

    Set MM_rs = TABLEAU
    MM_rsCount = TABLEAU_total
    MM_size = TABLEAU_numRows
    MM_uniqueCol = ""
    MM_paramName = ""
    MM_offset = 0
    MM_atTotal = false
    MM_paramIsDefined = false
    If (MM_paramName <> "") Then
    MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
    End If
    %>
    <%
    ' *** Move To Record: handle 'index' or 'offset' parameter

    if (Not MM_paramIsDefined And MM_rsCount <> 0) then

    ' use index parameter if defined, otherwise use offset parameter
    MM_param = Request.QueryString("index")
    If (MM_param = "") Then
    MM_param = Request.QueryString("offset")
    End If
    If (MM_param <> "") Then
    MM_offset = Int(MM_param)
    End If

    ' if we have a record count, check if we are past the end of the recordset
    If (MM_rsCount <> -1) Then
    If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last
    If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region
    MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
    Else
    MM_offset = MM_rsCount - MM_size
    End If
    End If
    End If

    ' move the cursor to the selected record
    MM_index = 0
    While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
    MM_rs.MoveNext
    MM_index = MM_index + 1
    Wend
    If (MM_rs.EOF) Then
    MM_offset = MM_index ' set MM_offset to the last possible record
    End If

    End If
    %>
    <%
    ' *** Move To Record: if we dont know the record count, check the display range

    If (MM_rsCount = -1) Then

    ' walk to the end of the display range for this page
    MM_index = MM_offset
    While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
    MM_rs.MoveNext
    MM_index = MM_index + 1
    Wend

    ' if we walked off the end of the recordset, set MM_rsCount and MM_size
    If (MM_rs.EOF) Then
    MM_rsCount = MM_index
    If (MM_size < 0 Or MM_size > MM_rsCount) Then
    MM_size = MM_rsCount
    End If
    End If

    ' if we walked off the end, set the offset based on page size
    If (MM_rs.EOF And Not MM_paramIsDefined) Then
    If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
    If ((MM_rsCount Mod MM_size) > 0) Then
    MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
    Else
    MM_offset = MM_rsCount - MM_size
    End If
    End If
    End If

    ' reset the cursor to the beginning
    If (MM_rs.CursorType > 0) Then
    MM_rs.MoveFirst
    Else
    MM_rs.Requery
    End If

    ' move the cursor to the selected record
    MM_index = 0
    While (Not MM_rs.EOF And MM_index < MM_offset)
    MM_rs.MoveNext
    MM_index = MM_index + 1
    Wend
    End If
    %>
    <%
    ' *** Move To Record: update recordset stats

    ' set the first and last displayed record
    TABLEAU_first = MM_offset + 1
    TABLEAU_last = MM_offset + MM_size

    If (MM_rsCount <> -1) Then
    If (TABLEAU_first > MM_rsCount) Then
    TABLEAU_first = MM_rsCount
    End If
    If (TABLEAU_last > MM_rsCount) Then
    TABLEAU_last = MM_rsCount
    End If
    End If

    ' set the boolean used by hide region to check if we are on the last record
    MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
    %>
    <%
    ' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

    Dim MM_keepNone
    Dim MM_keepURL
    Dim MM_keepForm
    Dim MM_keepBoth

    Dim MM_removeList
    Dim MM_item
    Dim MM_nextItem

    ' create the list of parameters which should not be maintained
    MM_removeList = "&index="
    If (MM_paramName <> "") Then
    MM_removeList = MM_removeList & "&" & MM_paramName & "="
    End If

    MM_keepURL=""
    MM_keepForm=""
    MM_keepBoth=""
    MM_keepNone=""

    ' add the URL parameters to the MM_keepURL string
    For Each MM_item In Request.QueryString
    MM_nextItem = "&" & MM_item & "="
    If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
    End If
    Next

    ' add the Form variables to the MM_keepForm string
    For Each MM_item In Request.Form
    MM_nextItem = "&" & MM_item & "="
    If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
    End If
    Next

    ' create the Form + URL string and remove the intial '&' from each of the strings
    MM_keepBoth = MM_keepURL & MM_keepForm
    If (MM_keepBoth <> "") Then
    MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
    End If
    If (MM_keepURL <> "") Then
    MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
    End If
    If (MM_keepForm <> "") Then
    MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
    End If

    ' a utility function used for adding additional parameters to these strings
    Function MM_joinChar(firstItem)
    If (firstItem <> "") Then
    MM_joinChar = "&"
    Else
    MM_joinChar = ""
    End If
    End Function
    %>
    <%
    ' *** Move To Record: set the strings for the first, last, next, and previous links

    Dim MM_keepMove
    Dim MM_moveParam
    Dim MM_moveFirst
    Dim MM_moveLast
    Dim MM_moveNext
    Dim MM_movePrev

    Dim MM_urlStr
    Dim MM_paramList
    Dim MM_paramIndex
    Dim MM_nextParam

    MM_keepMove = MM_keepBoth
    MM_moveParam = "index"

    ' if the page has a repeated region, remove 'offset' from the maintained parameters
    If (MM_size > 1) Then
    MM_moveParam = "offset"
    If (MM_keepMove <> "") Then
    MM_paramList = Split(MM_keepMove, "&")
    MM_keepMove = ""
    For MM_paramIndex = 0 To UBound(MM_paramList)
    MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
    If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
    MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
    End If
    Next
    If (MM_keepMove <> "") Then
    MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
    End If
    End If
    End If

    ' set the strings for the move to links
    If (MM_keepMove <> "") Then
    MM_keepMove = MM_keepMove & "&"
    End If

    MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="

    MM_moveFirst = MM_urlStr & "0"
    MM_moveLast = MM_urlStr & "-1"
    MM_moveNext = MM_urlStr & CStr(MM_offset + MM_size)
    If (MM_offset - MM_size < 0) Then
    MM_movePrev = MM_urlStr & "0"
    Else
    MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
    End If
    %>

    <html>
    <head>
    <title></title>
    </head>

    <form action="<%=request.serverVariables("SCRIPT_NAME")%>" method="post">
    <p>&nbsp;</p>
    <table border="0" align="center" cellpadding="0" cellspacing="0" >
    <tr>
    <td> Code Postal :</td>
    <td><input name="le_CP" value="<%=Saisie__CP%>" size="5" maxlength="5"></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input name="valider" type="submit" value="Valider">
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <br>
    <table border="0" width="50%" align="center">
    <tr class="importantrouge">
    <td width="23%" align="center">
    <% If MM_offset <> 0 Then %>
    <a href="<%=MM_moveFirst%>"></a>
    <% End If ' end MM_offset <> 0 %> </td>
    <td width="31%" align="center">
    <% If MM_offset <> 0 Then %>
    <a href="<%=MM_movePrev%>"></a>
    <% End If ' end MM_offset <> 0 %> </td>
    <td width="23%" align="center">
    <% If Not MM_atTotal Then %>
    <a href="<%=MM_moveSuiv%>"</a>
    <% End If ' end Not MM_atTotal %> </td>
    <td width="23%" align="center">
    <% If Not MM_atTotal Then %>
    <a href="<%=MM_moveLast%>"></a>
    <% End If ' end Not MM_atTotal %> </td>
    </tr>
    </table><br>
    <p>
    <%
    if (Saisie__CP<>"") then
    if not TABLEAU.EOF then
    %>
    <table border="0" align="center" cellpadding="0" cellspacing="0" >
    <tr>
    <td width="9" bgcolor="#905FDA"></td>
    <td> <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr class="entete_tab">
    <td width='16%'>Carte</td>
    <td width='20%'>Nom & Pr&eacute;nom</td>
    <td width="16%">Date de Saisie</td>
    <td width='16%'>Code postal</td>
    </tr>
    <% While ((Repeat1__numRows <> 0) AND (NOT TABLEAU.EOF)) %>
    <tr>
    <td class="colonne1_tab" align="right"><%=(TABLEAU.Fields.Item("valeur1").Value)%></a></td>
    <td class="cellule" align="left">&nbsp;<%=(TABLEAU.Fields.Item("Valeur2").Value)%>&nbsp;</td>
    </tr>
    <%
    Repeat1__index=Repeat1__index+1
    Repeat1__numRows=Repeat1__numRows-1
    TABLEAU.MoveNext()
    Wend
    %>
    </table>
    </td>
    <td width="9" bgcolor="#905FDA"></td>
    </tr>
    </table>
    <br>
    <%
    end if
    end if
    %>
    </p>
    </div>
    </form>
    </div>
    </body>
    <%
    TABLEAU.Close()
    Set TABLEAU = Nothing
    %>
    </html>

    MERCI beaucoup

  8. #8
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    J'ai essayé d'enlever tout ce qui concerne la saisie et cela fonctionne mais dès que je rajoute cela, j'ai une erreur.

  9. #9
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    ok bon apparemment ça viendrait de mon début de code. lorsque je fais :
    'If ( Saisie__CP <>"") Then Dim TABLEAU
    Dim TABLEAU_numRows

    Set TABLEAU = Server.CreateObject("ADODB.Recordset")
    TABLEAU.ActiveConnection = MM_DM_DEV_REF_STRING
    If (Saisie__CP<> "") Then
    TABLEAU.Source = "select "
    End if
    TABLEAU.CursorType = 3
    TABLEAU.CursorLocation = 2
    TABLEAU.LockType = 1
    TABLEAU.Open()

    TABLEAU_numRows = 0
    'End if

    il n'apprécie pas ce que j'ai en gras.

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    C'est surement les restes de la fatigue du réveillon mais ça m'a filé mal au crane et ça m'a l'air compliqué. Tu as obligation d'utiliser ce code ?

    Sinon j'ai un squelette de code qui me paraît plus simple :
    lorsque tu valides le formulaire,
    tu affiches les 20 premieres lignes si recordcount>20 mais tu parcours tout ton recordset en affectant dans un tableau tout les identifiants des nuplets renvoyés. ensuite pour passer de page en page tu ne conserves en variable de session que le tableau des identifiants et l'indice de parcours du tableau.
    pour l'affichage tu parcours ton tableau par rapport à l'indice et tu affiches le résultat.

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Quelle est l'erreur ? qu'est-ce que Saisie__CP ? un objet ?

  12. #12
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    L'erreur c'est toujours objet required.
    Saisie_CP est ma variable.
    c'est celle qu'entre un utilisateur dans mon formulaire

  13. #13
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    ouais excuse j'aurais du regarder le code que tu as posté
    le_CP c'est un select ?

    Pourquoi fais-tu 2 fois le test If (Saisie__CP <>"") Then:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If (Saisie__CP <>"") Then
    Dim TABLEAU
    Dim TABLEAU_numRows
     
    Set TABLEAU = Server.CreateObject("ADODB.Recordset")
    TABLEAU.ActiveConnection = Connexion
    If(Saisie__CP<>"")Then 
    ...
    ça ne sert à rien.

  14. #14
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    en fait j'ai voulu simplifier mais sinon j'ai 3 champs de saisies possibles.
    donc si un champ n'est pas vide ça veut dire que je fais la requête correspondante.
    Enfin je vais essayer de faire la pagination d'une autre manière.
    Comme je ne connais pas ASP et que ce code fonctionnait sur une autre page je me suis dit que j'allais le prendre.
    Mais bon apparemment il y a plus simple alors essayons...lol
    merci

Discussions similaires

  1. Désactivation des boutons Suivant et Précédent du navigateur Web
    Par dtcSearch dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/04/2010, 15h47
  2. Bouton suivant et précédent
    Par xeak2008 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/12/2009, 12h13
  3. Réponses: 5
    Dernier message: 07/07/2009, 15h20
  4. bouton suivant et précédent du navigateur
    Par Watier_53 dans le forum Flex
    Réponses: 4
    Dernier message: 04/08/2008, 14h50
  5. [MySQL] Boutons suivant ou précédent
    Par zabuze dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/11/2007, 20h32

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