Paginazione dei risultati di query molto lunghe in ASP | |
![]() |
|
|
ASP Center
Articoli
Referenze
Script
FAQ
Downloads
Siti utili
Menu Javascript
Ricette
Cocktail
Corsi online
Registrazione domini
Area Aziende
|
Paginazione dei risultati di query molto lunghe in ASP
Concesso in esclusiva a Mr.Webmaster. Vietata la riproduzione.
In ogni applicazione Web, o in ogni sito o portale, capita di avere delle sezioni in cui è necessario stampare a video una serie di record in cascata, ad esempio i nomi degli iscritti ad un nostro servizio interno. Ovviamente non conosciamo a priori il numero di iscritti, quindi il numero di record è variabile e, auspicabilmente, in continua crescita. Supponiamo di avere una media di 10 iscrizioni al giorno: vuol dire avere pressappoco 300 iscritti al mense, quindi più di 300 iscritti all'anno.
Credete sia possibile mostrare a video 3000 record contemporaneamente? C'è chi potrebbe dire di si ed in fin dei conti non è impossibile, ma la risposta ve la do io: NO! per tre buoni motivi:
Ci serviremo del database database.mdb composto dalla tabella utenti composta a sua volta dal solo campo nome in cui inseriremo almeno una ventina di nomi di nostri amici, al fine di ottenere un esempio valido visivamente e funzionalmente ottimale. Create la cartella test sul vostro server Web personale ed assegnatele tutti i diritti almeno in lettura; al suo interno inserite sia il database che il file test.asp di cui segue la prima parte di codice opportunamente commentata:
<%@LANGUAGE = VBScript%>
<%
' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
Dim sc, cn, rs, quanti, pag, contatore
' DEFINISCO LA STRINGA DI CONNESSIONE
sc = ""
sc = sc & "driver={Microsoft Access Driver (*.mdb)};dbq="
sc = sc & Server.MapPath("database.mdb")
' IMPOSTO LA CONNESSIONE EDIL RECORDSET
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
' APRO LA CONNESSIONE COL DATABASE
cn.Open sc
' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
quanti = 5
' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1
' IMPOSTO UN CONTATORE
contatore = 0
%>
<html>
<head>
<title>Paginazione dei risultati di query molto lunghe in ASP</title>
<style>a { color: blue; }</style>
</head>
<body>
<table align="center" width="300" border="1">
<%
' APRO IL RECORDSET
rs.Open "SELECT nome FROM utenti ORDER BY nome ASC", cn, 1
' EFFETTUO MATERIALMENTE LA PAGINAZIONE
rs.PageSize = quanti
rs.AbsolutePage = pag
' ESEGUO IL CICLO
While rs.EOF = False And contatore < quanti
%>
<tr><td><%=rs("nome")%></td></tr>
<%
rs.MoveNext
' INCREMENTO IL VALORE DEL CONTATORE
contatore = contatore + 1
Wend
%>
</table>
</body>
</html>
<%
' UN PO DI PULIZIA...
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
A questo punto otteniamo una semplice tabella HTML che mostra solo i primi 5 record (numero stabilito stesso nel codice dell'esempio) della query, ma siamo impossibilitati ad andare avanti perchè manca una sorta di menu di navigazione.Il menu di navigazione che andiamo adesso a costruire è semplice e professionale al tempo stesso: mostra i numeri delle pagine disponibili, ognuna delle quali ospiterà i 5 record successivi stabiliti nel codice di esempio; mostrerà anche dei link di tipo Avanti e Indietro, tranne se ci si trova alla pagina iniziale e quindi è inutile andare indietro, e tranne se ci si trova all'ultima pagina, caso in cui è inutile andare avanti. Di seguito un'immagine che mostra la tabella HTML ed il menu in funzione del fatto che ci si trovi alla prima pagina
Di seguito il codice del menu di navigazione da inserire dopo la chiusura della tabella e prima della chiusura del boy della pagina
<p align="center">
<%If pag > 1 Then%>
<a href="test.asp?pag=<%=pag-1%>">Indietro</a>
<%End If%>
<%
Dim x
x = 1
For x = 1 To rs.PageCount
If CInt(pag) <> x Then
%>
[<a href="test.asp?pag=<%=x%>"><%=x%></a>]
<%
Else
%>
[<a href="test.asp?pag=<%=x%>"><b><%=x%></b></a>]
<%
End If
Next
%>
<%If rs.EOF = False Then%>
<a href="test.asp?pag=<%=pag+1%>">Avanti</a>
<%End If%>
</p>
Unite quindi i due codici e lanciate il file all'indirizzo
http://localhost/test/test.aspe buona navigata tra i vostri record! |
Newsletter
Stringhe di Conn.
|
||
| © 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Utenti online: 10 - Disclaimer | Pubblicità | Supportaci | Staff | Contatti | ||||
| Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | AlVerde.net | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones | ||||