Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    mantenere i filtri di una query con la paginazione

    Chiedo un aiuto per risolvere un problema.
    Premetto che sono un autodidatta e quindi mi sono appoggiato su Dreamveaver.
    Ho realizzazzato un form (metodo POST) con alcune caselle di testo che fungono da filtri per la tabella sottostante che visualizza dati presi da un archivio access.
    codice:
    <%
    Dim rsAvvistamenti
    Dim rsAvvistamenti_cmd
    Dim rsAvvistamenti_numRows
    Set rsAvvistamenti_cmd = Server.CreateObject ("ADODB.Command") rsAvvistamenti_cmd.ActiveConnection = MM_login_STRING
    rsAvvistamenti_cmd.CommandText = "SELECT * FROM avvistamentiQuery WHERE UserName = ? AND volgare like ? and [data] Between ? And ?"
    rsAvvistamenti_cmd.Prepared = true
    rsAvvistamenti_cmd.Parameters.Append rsAvvistamenti_cmd.CreateParameter("param1", 200, 1, 20, rsAvvistamenti__MMColParam1) ' adVarChar
    rsAvvistamenti_cmd.Parameters.Append rsAvvistamenti_cmd.CreateParameter("param2", 200, 1, 255, rsAvvistamenti__MMColParam2) ' adVarChar
    rsAvvistamenti_cmd.Parameters.Append rsAvvistamenti_cmd.CreateParameter("param3", 135, 1, -1, rsAvvistamenti__MMColParam3) ' adDBTimeStamp
    rsAvvistamenti_cmd.Parameters.Append rsAvvistamenti_cmd.CreateParameter("param4", 135, 1, -1, rsAvvistamenti__MMColParam4) ' adDBTimeStamp 
    Set rsAvvistamenti = rsAvvistamenti_cmd.Execute
    rsAvvistamenti_numRows = 0
    %>
    I filtri funzionano bene ma quando dreamweaver aggiunge la paginazione i filtri non vengono mantenuti spostandosi in una qualsiasi delle pagine successive.
    Ringrazio sin da ora quanti vorranno aiutarmi.

    Inserisco anche i codici della paginazione creati da Dreamweaver

    Beppe

    codice:
    <%
    Dim Repeat1__numRows
    Dim Repeat1__index
    
    Repeat1__numRows = -1
    Repeat1__index = 0
    rsAvvistamenti_numRows = rsAvvistamenti_numRows + Repeat1__numRows
    %>
    <%
    '  *** Recordset Stats, Move To Record, and Go To Record: declare stats variables
    
    Dim rsAvvistamenti_total
    Dim rsAvvistamenti_first
    Dim rsAvvistamenti_last
    
    ' set the record count
    rsAvvistamenti_total = rsAvvistamenti.RecordCount
    
    ' set the number of rows displayed on this page
    If (rsAvvistamenti_numRows < 0) Then
      rsAvvistamenti_numRows = rsAvvistamenti_total
    Elseif (rsAvvistamenti_numRows = 0) Then
      rsAvvistamenti_numRows = 1
    End If
    
    ' set the first and last displayed record
    rsAvvistamenti_first = 1
    rsAvvistamenti_last  = rsAvvistamenti_first + rsAvvistamenti_numRows - 1
    
    ' if we have the correct record count, check the other stats
    If (rsAvvistamenti_total <> -1) Then
      If (rsAvvistamenti_first > rsAvvistamenti_total) Then
        rsAvvistamenti_first = rsAvvistamenti_total
      End If
      If (rsAvvistamenti_last > rsAvvistamenti_total) Then
        rsAvvistamenti_last = rsAvvistamenti_total
      End If
      If (rsAvvistamenti_numRows > rsAvvistamenti_total) Then
        rsAvvistamenti_numRows = rsAvvistamenti_total
      End If
    End If
    %>
    <%
    ' *** Recordset Stats: if we don't know the record count, manually count them
    
    If (rsAvvistamenti_total = -1) Then
    
      ' count the total records by iterating through the recordset
      rsAvvistamenti_total=0
      While (Not rsAvvistamenti.EOF)
        rsAvvistamenti_total = rsAvvistamenti_total + 1
        rsAvvistamenti.MoveNext
      Wend
    
      ' reset the cursor to the beginning
      If (rsAvvistamenti.CursorType > 0) Then
        rsAvvistamenti.MoveFirst
      Else
        rsAvvistamenti.Requery
      End If
    
      ' set the number of rows displayed on this page
      If (rsAvvistamenti_numRows < 0 Or rsAvvistamenti_numRows > rsAvvistamenti_total) Then
        rsAvvistamenti_numRows = rsAvvistamenti_total
      End If
    
      ' set the first and last displayed record
      rsAvvistamenti_first = 1
      rsAvvistamenti_last = rsAvvistamenti_first + rsAvvistamenti_numRows - 1
      
      If (rsAvvistamenti_first > rsAvvistamenti_total) Then
        rsAvvistamenti_first = rsAvvistamenti_total
      End If
      If (rsAvvistamenti_last > rsAvvistamenti_total) Then
        rsAvvistamenti_last = rsAvvistamenti_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    = rsAvvistamenti
    MM_rsCount   = rsAvvistamenti_total
    MM_size      = rsAvvistamenti_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
    rsAvvistamenti_first = MM_offset + 1
    rsAvvistamenti_last  = MM_offset + MM_size
    
    If (MM_rsCount <> -1) Then
      If (rsAvvistamenti_first > MM_rsCount) Then
        rsAvvistamenti_first = MM_rsCount
      End If
      If (rsAvvistamenti_last > MM_rsCount) Then
        rsAvvistamenti_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 = Server.HTMLEncode(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
    %>

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao Beppe e benvenuto abbandona DreamWeaver e cercati uno script per l'impaginazione dopo un breve studio capirai il funzionamento e risolverai il problema, dubito che qualcuno si spulci la "quintalata" di MM_ del post.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    Originariamente inviato da cavicchiandrea
    dubito che qualcuno si spulci la "quintalata" di MM_ del post.
    Beppe, oltre a quanto detto da andrea, tieni presente anche che se i filtri li passi via querystring li hai sempre li disponibili (se li metti nella variabile di estrazione/paginazione). Via post li devi sempre reinviare daccapo, quindi è naturale che "perdi il punto" (chissà se mi si sono spiAgato )

  4. #4
    grazie ad entrambi.
    sto studiando !!
    non garantisco però che vi debba chiedere un ulteriore aiuto.
    ciao

    beppe

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.