In una applicazione web capita spesso di dover mostrare all'utente un elenco di dati provenienti dal database. A volte questi dati sono numerosi pertanto, per ragioni estetiche e di usabilità, è necessario suddividerli in diverse pagine web. L'accesso alle singole pagine avviene tramite dei link posti comunemente al disopra e al disotto dell'elenco parziale di dati. Questa tecnica di rappresentazione dei dati viene comunemente detta paginazione e gli esempi sul web sono numerosi, si pensi ad esempio ai risultati di un motore di ricerca o all'elenco dei messaggi di un forum o di un blog.
In alcuni casi la navigazione tra le pagine è garantita solo da due link che puntano alla pagina precedente e successiva, altre volte invece i link sono più numerosi e permettono di raggiungere direttamente una pagina in particolare, identificata dal suo numero.
Anche se la sorgente dei dati da paginare non influisce sull'estetica del sistema di navigazione (la presentation), l'impatto sul codice necessario alla realizzazione dello script è invece considerevole. Pertanto in questo articolo focalizzeremo la nostra attenzione sui dati provenienti da database, situazione di gran lunga più comune.
Come avremo modo di verificare nel corso di questo articolo, la realizzazione di un sistema di paginazione dei dati provenienti da database non è sempre un compito banale. Diversi fattori sono da tenere in considerazione (es.: usabilità, prestazioni) che richiedono soluzioni spesso in contrasto tra loro e tra le quali è necessario mediare.