L'ho scritta al volo senza provarla, ma prova ad usare una cosa così:
Codice PHP:
$lim = 5; //Le pagine da mostrare prima e dopo
$paginazione = "Pagine totali : " . $tot_pages . "[ ";
$prima = ($current_page-$lim <= 1) ? 1 : $current_page-$lim;
$ultima = ($current_page+$lim > $tot_pages) ? $tot_pages : $current_page+$lim;
if($prima > 1)
$paginazione .= "<a href=\"{$_SERVER['REQUEST_URI']}&page={$prima-1}\" title=\"Vai alla pagina {$prima-1}\"><<</a> ";
else
$paginazione .= "<< ";
if($ultima < $tot_pages)
$paginazione .= " <a href=\"{$_SERVER['REQUEST_URI']}&page={$ultima+1}\" title=\"Vai alla pagina {$ultima+1}\">>></a>";
else
$paginazione .= " >>";
$paginazione .= ($prima > 1) "<< " :
for($i=$prima;$i<=$ultima;$i++) {
if($i == $current_page)
$paginazione .= $i . " ";
else
$paginazione .= "<a href=\"{$_SERVER['REQUEST_URI']}&page=$i\" title=\"Vai alla pagina $i\">$i</a> ";
}
$paginazione .= " ]";