In questo »POST« dei giorni scorsi, trovi riportato del codice che avevo scritto tempo fa per un altro post ancora.

Ti riporto quel codice, ma se leggi il post magari trovi anche degli altri spunti interessanti.
Codice PHP:
// ammesso che l'URL sia del tipo 
// visualizzatore.php?pag=xx 
$pag $_GET['pag']; 
$tot $_GET['tot']; 

// piccolo controllo di sicurezza
if(!is_numeric($pag)) { $pag == 1;}
if(!
is_numeric($tot)) { $tot == 1;}

// variabile per quantificare il numero di record per pagina 
$quante 30

if (!
$pag OR $pag == 1) { 
// è la prima volta che visualizzo la pagina 
// query per contare i record presenti 
$sql "SELECT COUNT(id) AS totale FROM tabella"

$query mysql_query($sql); 
$result mysql_result($query,0,'totale'); 
// liberi risorse 
mysql_free_result($query); 

// numero pagine necessarie per visualizzare tutti i record 
$tot ceil($result); 

// definisco gli estremi del LIMIT 
    
$min 1
    
$max $quante
} else { 
// ho già tutto quello che mi serve per definire il LIMIT 
    
$min $quante
    
$max $quante $pag


$sql "SELECT * FROM tabella LIMIT $min$max"

$query mysql_query($sql); 

while (
$fetch mysql_fetch_array($query)) { 
// estrapoli i dati e stampi la tabella 

// liberi risorse 
mysql_free_result($query); 

// stampi il menu di navigazione 

if ($pag 1) { 
$prima $pag 1
echo 

<a href=\"visualizzatore.php?pag=
$prima&tot=$tot\">Indietro</a> ::: 
"



if (
$pag tot) { 
$dopo $pag 1
echo 

<a href=\"visualizzatore.php?pag=
$dopo&tot=$tot\">Avanti</a> 
"


Il barbatrucco sta nel fatto che la pagina che visualizza i risultati, trasporta nella URL alcune variabili (metodo GET) che sono quelle che ti permettono di richiamare sempre la stessa pagina ma di visualizzare risultati differenti.

Forzare una variabile che deve essere numerica affinché lo sia, è un metodo semplice ma efficace per evitare anche degli attacchi di hacking al DB.
Lo puoi fare anche con la funzione is_numeric(), che anzi reputo buona per casi come questo, mentre INT è più spesso utilizzato direttamente nella stringa SQL della query.

Ultima precisazione: GET permette il passaggio di variabili attraverso la query string della URL (w ww.sito.tld/pagina.php?variabile1=var1&variabile2=var2).
Le variabili sono in chiaro e possono raggiungere il limite massimo di 255 caratteri.
POST invece salva tutte le variabili in una allocazione di memoria del server e non ci sono limiti di spazio così stringente come il GET.