Paginazione con MySQL
Data di pubblicazione: 19/04/2006
Voto della community: 4,06
(Votanti: 12)
Un tipico problema che si affronta quando si utilizza come base di dati MySQL piuttosto che MS Access è legato al fatto che i driver
ODBC attualmente disponibili per tale base di dati non supportano i metodi tipicamente utilizzati con MS Access per paginare i risultati
di una interrogazione su una base di dati. Se infatti i driver del database di casa Microsoft consentono di utilizzare proprietà e metodi
dell'oggetto ADODB.RecordSet come PageSize (per impostare il numero di record di ogni pagina dei risultati) o
AbsolutePage per selezionare la pagina del recordset corrente su cui posizionarsi, i driver forniti con
MySQL implementano un oggetto RecordSet non dotato di tali funzionalità. Tuttavia, è possibile ovviare a questa limitazione, sfruttando
la parola chiave LIMIT (dal linguaggio SQL standard) integrandola alle interrogazioni SQL di cui intendiamo paginare
i risultati.
La clausola LIMIT consente di limitare il numero di risultati restituiti da una interrogazione e può essere utilizzata con uno o due parametri. La stringa SQL seguente ad esempio:
SELECT * FROM <tabella> LIMIT 10
restituisce i primi 10 record della tabella specificata.
L'utilizzo di due parametri consente di specificare la posizione di partenza da cui iniziare a restituire record; la query seguente:
SELECT * FROM <tabella> LIMIT 7, 10
restituisce 10 record della tabella specificata a partire dal settimo record.
Sfruttando dunque questa funzionalità SQL estrarremo dal risultato i soli record che corrispondono alla pagina che intendiamo visualizzare. Nella seguente sezione di codice vedremo come implementare il tutto in una pagina ASP che chiameremo default.asp:
<%
Il codice è ampiamente commentato, un'attenta analisi dello stesso dovrebbe chiarirne i passaggi principali. Da notare che la query deve
essere eseguita due volte: una prima volta per conteggiare il numero totale di record allo scopo di valutare il numero di pagine
e quindi di link da visualizzare, una seconda per estrarre i record effettivi che corrispondono alla pagina che deve
essere visualizzata. La porzione di codice in grassetto corrisponde alla query di paginazione. Ovviamente nella stringa di connessione
è necessario sostituire i parametri del proprio database MySQL.
|
||||||||||||||||||||||||