Te ne scrivo io una ok?

<?php
$query="SELECT COUNT(ID) as num_elem FROM tabella;";
if ($query) {
$tot_records = $num_elem;
} else {
$tot_records=0;
}

if ($tot_records!=0) {
$per_page = 10;
$tot_pages = ceil($tot_records / $per_page);
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
$primo = ($current_page - 1) * $per_page;
} else {
$primo = $per_page = 0;
}
?>

Questa ti calcola il totale delle righe presenti nella tabella che ti interessa. Ovviamente if ($query) indica se la query è stata eseguita correttamente, quindi metti la funzione che userai, tipo mysql_query ecc. ok?

Dopodichè nella tua query di selezione dei risultati aggiungi nella SELECT, LIMIT $primo, $per_page.

Così ti seleziona solo le righe in base alla pagina in cui ti trovi.
Poi sotto la tabella, ci metti questo codice che ti crea lo spaginamento.


if ($tot_records!=0 && $tot_pages!=1) {
if($current_page == 1) {
$precedente = "";
} else {
$previous_page = ($current_page - 1);
$precedente = "<a href=\"?page=$previous_page\" title=\"Vai alla pagina precedente\"><< precedente</a>";
}

if(($current_page == $tot_pages) || ($tot_pages==0)) {
$successiva = "";
} else {
$next_page = ($current_page + 1);
$successiva = "<a href=\"?page=$next_page\" title=\"Vai alla pagina successiva\">successiva >></a>";
}

Tu qui inserirai la tabellina che ti piace avere per la paginazione, che conterrà in un TD $precendete e in un altro $successiva.

Sono stato chiaro??