Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di vispone
    Registrato dal
    Feb 2003
    Messaggi
    177

    Paginazione con ricerca completa di commento

    Ciao a tutti, vista la tremenda fatica (dovutà dal fatto che non sono una cima) nel fare una paginazione come io la desideravo e visto che online non ho trovato nulla di completo e chiaro, ho deciso di inserire il codice da me utilizzato (in parte recuperato e in parte realizzato per le mie esigenze) che considero completo, ma vista la mia non eccelsa bravura chiedo scusa per gli errori e i commenti un pelo banali. Chiedo (con la massima umiltà e gratitudine) ai parecchi esperti tra di voi di suggerirmi eventuali modifiche di codice o di commenti per rendere il tutto molto più chiaro ai poveracci come me che non ne capiscono molto.


    <%@LANGUAGE="VBSCRIPT"%>

    <%
    'La proprietà expires dell'oggetto Response è impostata a zero per il motivo che il browser, in genere, richiama una pagina, in precedenza caricata, dalla CACHE e non dal server, quindi si rischia di visualizzare sempre la stessa pagina, poiché la query inviata dal programma in asp non si aggiorna.
    response.expires=0
    %>

    <% response.buffer=true %>


    <%
    ' PAGINAZIONE COMPLETA
    dim ricutente
    dim rs
    dim cn

    set rs = server.CreateObject("Adodb.Recordset")
    set cn = server.CreateObject("Adodb.Connection")

    'INSERENDO NEL CAMPO DI RICERCA UN NOME LA PAGINAZIONE AGIRA' SOLO SUL RISULTATO DELLA RICERCA
    ricutente = Request("ricerca utente")

    'SETTA IL NUMERO DI RECORD PER PAGINA
    iPageSize = 20

    'CONDIZIONE RECUPERO LA POSIZIONE DELLA PAGINA SE E' NULLA MI POSIZIONA SULLA PRIMA
    If Request.QueryString("page") = "" Then
    iPageCurrent = 1
    Else
    'ALTRIMENTI CONVERTE IN INTERO E ASSEGNA LA VARIABILE RECUPERATA DAL MENU
    iPageCurrent = CInt(Request.QueryString("page"))
    End If


    ' QUESTA CONDIZIONE E' INDISPENSABILE PER VERIFICARE SE LA PAGINAZIONE DEVE LAVORARE IN MODALITA' NORMALE O COME MOTORE DI RICERCA
    if ricutente <> "" then
    'SOTTO RICERCA APRO LA CONNESSIONE ALLA TABELLA E RECUPERO SOLO LE TUPLE CHE MI SERVONO
    cn.Open conn2
    sqlstring = "SELECT * FROM Utenti WHERE cognome LIKE '%" & ricutente & "%'"
    '-PageSize- METODO DELL'OGGETTO ADODB.RecordSet (per impostare il numero di record di ogni pagina dei risultati)
    rs.PageSize = iPageSize
    'INDICA IL NUMERO DI RECORD MEMORIZZATI NELLA CACHE LOCALE.
    rs.CacheSize = iPageSize
    rs.Open sqlstring, cn, adOpenStatic, adLockReadOnly, adCmdText
    '-RecordCount- QUESTA PROPRIETA' RESTITUISCE UN VALORE "Long" CHE INDICA IL NUMERO DI RECORD IN UN OGGETTO RECORDSET.
    reccount = rs.recordcount
    '-PageCount- UTILIZZARE QUESTA PROPRIETA' PER DETERMINARE IL NUMERO DI "PAGINE" DI DATI CONTENUTE NEL RECORDSET.
    iPageCount = rs.PageCount

    'SE LE PAGINA ATTUALE E' MAGGIORE DELLE PAGINE NEL RECORDSET ASSEGNA A PAGECURRENT PAGECOUNT
    If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
    'SE LE PAGINE CORRENTI SONO MINORI DI 1 ASSEGNA A PAGECURRENT 1
    If iPageCurrent < 1 Then iPageCurrent = 1

    'SE NON TROVA RECORD AVVISA L'UTENTE
    If iPageCount = 0 Then
    Response.Write "

    <table><td><font face='verdana' size='2' color='#000000'>Non sono stati trovati utenti.</td></table></p>"
    Else
    '-AbsolutePage- PER SELEZIONARE LA PAGINA DEI RECORDSET CORRENTE SU CUI POSIZIONARSI
    rs.AbsolutePage = iPageCurrent
    iRecordsShown = 0
    end if

    'ALTRIMENTI FA LA STESSA COSA RECUPERANDO TUTTI I DATI DAL DB
    else
    cn.Open conn2
    sqlstring = "Select * From Utenti order by cognome"
    rs.PageSize = iPageSize
    rs.CacheSize = iPageSize
    rs.Open sqlstring, cn, adOpenStatic, adLockReadOnly, adCmdText

    reccount = rs.recordcount
    iPageCount = rs.PageCount

    If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
    If iPageCurrent < 1 Then iPageCurrent = 1

    If iPageCount = 0 Then
    Response.Write "

    <table><td><font face='verdana' size='2' color='#000000'>Non sono stati trovati utenti.</td></table></p>"
    Else
    rs.AbsolutePage = iPageCurrent
    iRecordsShown = 0
    end if
    end if
    %>

    <html>
    <head>
    <title>List</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="style.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    <!--
    .Stile1 {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
    }
    .Stile3 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px; }
    .Stile4 {
    color: #FFFFFF;
    font-weight: bold;
    }
    .Stile5 {font-family: Arial, Helvetica, sans-serif}
    .Stile8 {font-size: 12px}
    .Stile9 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
    body {
    background-color: #e3e9f1;
    }
    .Stile13 { font-size: 24px;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
    color: #6D879F;
    }
    -->
    </style>
    </head>

    <body>
    <table width="200" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#6D879F">


    <tr>
    <td width="207" height="0" valign="middle"><form name="form5" method="post" action="pagina.asp">
    <label>
    <input name="ricerca utente" type="text" id="ricerca utente" value="<%=ricutente%>">
    </label>
    <label>
    <input type="submit" name="ricerca" id="ricerca" value="Invia">
    </label>
    </form></td>
    </tr>

    <!-- DA QUI INSERIRE CONTENUTI RECUPERATI DAL db>




    <%If ipagecount <> 1 Then%>
    <center>
    <table>
    <tr valign="middle">
    <td width="50%" align="center" valign="middle"><font face="verdana" size="1" color="#000000">
    [

    <%if iPageCurrent-2 > 0 and iPageCurrent > 2 then%>
    [img]images/first.gif[/img]
    <%end if%>

    <%if iPageCurrent > 1 then%>
    [img]images/pre.gif[/img]
    <%end if%>

    <%
    if iPageCount > 2 then
    if iPageCurrent-2 < 1 then da_pag = 1 else da_pag = iPageCurrent-2
    if iPageCurrent+2 > iPageCount then fino_a_pag = iPageCount else fino_a_pag = iPageCurrent+2
    else
    da_pag = 1
    fino_a_pag = iPageCount
    end if
    %>

    <% for i = da_pag to fino_a_pag %>
    <%if i = iPageCurrent then%>
    <font color="red"><%=i%></font>
    <%else%>
    <%=i%>
    <%end if%>
    <%next%>


    <%if iPageCurrent > 0 and iPageCurrent < iPageCount then%>
    [img]images/next.gif[/img]
    <%end if%>
    <%if iPageCurrent+1 < iPageCount then%>
    [img]images/last.gif[/img]
    <%end if%>
    ]

    </font></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><font face="verdana" size="1" color="#000000">
    <center>

    Pagina
    <font color="#FF0000"><%=iPageCurrent%></font>
    di
    <font color="#FF0000"><%=iPageCount%></font>
    </center>
    <%end if%>

    <%
    'CHIUDO LA CONNESIONE
    cn.Close
    Set cn = Nothing
    %>
    </body>
    </html>

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ma funziona?
    Ad ogni modo Access non è accessibile in modo da dirgli di prendere in esclusiva un tot di record da un certo punto in poi...., devi arrangiarti, e questo che hai usato è il sistema tradizionale.

    Roby

  3. #3
    Utente di HTML.it L'avatar di vispone
    Registrato dal
    Feb 2003
    Messaggi
    177

    funziona funziona

    Funziona Funziona

  4. #4
    Utente di HTML.it L'avatar di vispone
    Registrato dal
    Feb 2003
    Messaggi
    177

    funziona funziona

    Ma non so cosa intendi per classica a me così funziona paginazione con visializzazione di n pagine per volta. Io non sono bravissimo sono uno smanettone e ho faticato un po ma funziona.

  5. #5
    Utente di HTML.it L'avatar di vispone
    Registrato dal
    Feb 2003
    Messaggi
    177

    funziona funziona

    Ma non so cosa intendi per classica a me così funziona paginazione con visializzazione di n pagine per volta. Io non sono bravissimo sono uno smanettone e ho faticato un po ma questo è il risultato.
    PS: per ovvie ragioni di praivasi non posso far vedere le righe con i dati degli utenti.

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.