Il tuo indirizzo IP

Eccolo: 38.107.179.216
Home Tutorials Active Server Page Impaginare il risultato di una query
Impaginare il risultato di una query E-mail
Valutazione attuale: / 0
ScarsoOttimo 
Venerdì 16 Novembre 2001 09:23
Portale Data Download file
www.mmkit.com 16 Novembre 2001 ---

Sicuramente tutti quelli che utilizzano Macromedia Dreamweaver Ultradev (di seguito lo chiamerò MDU) si saranno accorti che non è possibile realizzare l'impaginazione dei dati, risultanti da una interrogazione su DataBase, eguale a quella utilizzata dai motori di ricerca:

Pagina: | 1 | 2 | 3 | 4 | 5 | ...

se non scrivendosi il proprio codice a mano.
Lo scopo di questo tutorial è proprio quello di realizzare lo script necessario per ottenere questo risultato. Il codice proposto si basa sull'utilizzo di un fantomatico database che verrà richiamato utilizzando una connessione DSN denominata db_paging.

Le parti del codice visualizzate tra parenteri graffe {...} si riferiscono a parti che dovranno essere modificate dal programmatore in modo da poter adattare lo script alle proprie esigenze (ovviamente togliendo le partentesi graffe!).

Iniziamo il tutorial definendo "esplicite" tutte le variabili: in questo modo non potremo incappare in banalissimi errori di sintassi che potrebbero comportare un inutile spreco di tempo alla ricerca di un banalissimo problema.

<% Option Explicit %>

Quindi inizializziamo tutte le variabili che verranno utilizzate:

<%
' Inizializzazione variabili
Dim Conn ' Variabile per metodo Connection
Dim Rs ' Variabile per metodo Recordset
Dim SQL ' Variabile per query SQL
Dim intCount ' Variabile per cicli FOR ... NEXT

Le variabili Conn, Rs ed SQL verranno impiegate rispettivamente per: utilizzare la classe Connection, la classe Recordset dell'oggetto ADODB e definire la query SQL per ottenere i dati. La variabile intCount verrà utilizzata per i cicli FOR ... NEXT.

Dim RecordsPerPagina' Numero di record per pagina da mostrare
Dim IndiciPerPagina ' Numero di pagine nella barra di navigazione
Dim PaginaAttiva ' Numero della pagina da visualizzare
Dim RecordPrecedente' Numero per la gestione del link Precedente
Dim RecordSuccessivo' Numero per la gestione del link Successivo

Lo scopo delle variabili appena dichiarate può essere compreso analizzando il funzionamento della paginazione che vogliamo ottenere tenendo in considerazione anche alcuni aspetti esteriori molto importanti:

Ogni pagina dovrà mostrare un numero limitato di record e, per questo scopo, la variabile RecordsPerPagina verrà valorizzata proprio con tale numero. Supponendo di avere 15.000 record e di visualizzarne solo 25 per pagina, la barra di navigazione dovrà iniziare con l'indice 1 (uno) sino a 600 (seicento). Il risultato che si otterrebbe, visivamente parlando, non sarebbe dei migliori quindi ho previsto anche la gestione del numero massimo di "indici pagina" per pagina: la variabile IndiciPerPagina e il relativo scrolling precedente-successivo (RecordPrecedente e RecordSuccessivo). Vediamo in dettaglio come verranno utilizzate queste variabili:

Innanzitutto dobbiamo impostare il valore fisso del numero di record da visualizzare per pagina e il numero di indici della barra di navigazione:

' Imposta il numero di records da visualizzare per pagina
RecordsPerPagina = {40}
IndiciPerPagina = {30}

Quindi recuperare dalla barra degli indirizzi (URL) il numero della pagina da visualizzare, impostandola al valore predefinito 1 (uno) nel caso non sia presente alcun valore (primo caricamento della pagina)

' Recupera il numero della pagina da visualizzare
PaginaAttiva = Trim(Request.QueryString("pagnum"))
' Verifica se e' un valore numerico
If PaginaAttiva = "" then PaginaAttiva = 1

Allo stesso modo dobbiamo recuperare anche il parametro prec necessario per realizzare la funzione di scrolling degli indici. Volendo realizzare uno script molto semplice, non verrà inserito il testo precedente e/o successivo nella barra di navigazione bensì saranno proprio il primo indice e l'ultimo che effettueranno questo scrolling. I motivi che mi hanno portato a questa soluzione sono 2:

1. Complessità dello script
Realizzare la funzione precedente e successiva implicherebbe un codice molto più complesso e prosaico di quello presentato in queste pagine.

2. Problemi di gestione
Per comprende questa motivazione dobbiamo analizzare un banalissimo esempio: supponiamo di avere, in totale, 50 pagine. Avendo impostato il numero di indici per pagine a 40, nella barra di navigazione dovrebbe comparire la scritta 'successivo' dopo l'indice 40. Supponiamo anche di visualizzare in quel momento la pagina 1 (uno). Premendo il tasto 'successivo' questi dovrebbe ricaricare la pagina e mostrare nella barra di navigazione gli indici da 41 a 50 e, prima di questi il tasto precedente. Il problema è: quale pagina dovrà essere visualizzata? la 1(uno) o la 40? e se la pagina da cui siamo partiti fosse la 14?



Commenti
Nuovo
Commenta
Nome:
Email:
 
Titolo:
<<  

3.25 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."