Come accennato in precedenza, nel corso di questa lezione, andremo a vedere come si costruisce l'elenco delle pagine per poter raggiungere in seguito i messaggi nelle pagine successive.
Il codice della paginazione, come abbiamo già visto nel corso delle lezioni precedenti, è diverso da quello usato con database di tipo Microsoft Access. Si ricorda infatti l'utilizzo del LIMIT.
La prima operazione da compiere per capire quante pagine dobbiamo mostrare è capire quanti messaggi privati sono indirizzati al nostro utente:
125: strSql = " SELECT COUNT(*) as numeroMessaggi FROM messaggi WHERE
id_desti='"&intUser&"'"
126:
127: set rs = Conn.Execute(strSql)
128: dim intTotali
129: intTotali = rs("numeroMessaggi")
130: rs.close
131:
132: conn.close
133:
134: set rs = nothing
135: set comm = nothing
136: set conn = nothing
Il conteggio del numero dei messaggi si realizza tramite la stringa S.q.l. posta alla riga centoventicinque in cui si da indicazione di contare gli elementi della tabella messaggi ove il destinatario è uguale a codice identificativo dell'utente. Come potete osservare il COUNT non è "solo":
COUNT(*) as numeroMessaggi
Cosa significa? La risposta è molto semplice. Restituisce all'interno di numeroMessaggi il numero dei messaggi che soddisfano la nostra richiesta. Una volta creati ed inizializzati gli oggetti per poter accedere al database (in questo caso specifico dobbiamo solo ricreare il recordset) possiamo ricavare la quantità dei messaggi dell'utente:
127: set rs = Conn.Execute(strSql)
128: dim intTotali
129: intTotali = rs("numeroMessaggi")
130: rs.close
Dopo aver ricavato il dato necessario, possiamo calcolare il numero delle pagine necessarie:
138: 'Variabili per la paginazione
139: dim intMax
140: intMax = intTotali intMessaggi
141:
142: if (intTotali mod intMessaggi <> 0) then
143: intMax = intMax + 1
144: end if
Alla riga centoquaranta calcoliamo tramite divisione intera (cioè senza il resto) il numero delle pagine "piene". Per pagine piene intendo le pagine in cui vi sono presenti intMessaggi. Alla riga centoquarantadue verifichiamo se la divisione appena effettuata ha resto oppure no. Se ha resto significa che vi sono altri messaggi ma non a sufficienza per creare una pagina "piena". E' per questo motivo che alla riga centoquarantatre incrementiamo di un'unità il numero delle pagine necessarie. Ora realizzare l'elenco è un'operazione molto semplice.
146: if intMax > 0 then
147: response.write "<tr><td> </td><td
colspan=""3"">"
148: response.write "<font size=""2"" face=""Verdana,
Arial, Helvetica, sans-serif"">[ "
149:
150: For ctInd=1 to intMax
151: if cInt(ctInd) <> cInt(intPagina) then
152: response.write "<a href=""messaggi.asp?pagina="&ctInd&""">"&ctInd&"</a> "
153: else
154: response.write "<b>"&ctInd&"</b> "
155: end if
156: Next
157:
158: response.write "]</font>"
159:
160: response.write "</td><td> </td></tr>"
161: end if
Come prima operazione dobbiamo verificare se vi siano pagine oppure no (riga centoquarantasei). Nel caso vi siano, incominciamo a preparare la riga di una tabella nella quale andremo ad inserire (tramite un ciclo for conosciuto come ciclo a contatore) tutti i numeri delle pagine ed il link alla pagina indicata. Durante la generazione dell'elenco a video viene effettuato un controllo sulla pagina corrente rispetto alla pagina che "stiamo scrivendo"
151: if cInt(ctInd) <> cInt(intPagina) then
152: response.write "<a href=""messaggi.asp?pagina="&ctInd&""">"&ctInd&"</a> "
153: else
154: response.write "<b>"&ctInd&"</b> "
155: end if
Come si intuisce leggendo il codice, la pagina attuale non viene considerata una possibile destinazione e quindi viene scritta a video senza la presenza di link.
Il risultato finale della paginazione sarà il seguente: