Intanto se ne vuoi uno funzionante di giro il mio:
"paginazione.inc.php"
Codice PHP:
<?php
function pagination_3($total_pages,$page,$webpage){ //imposto la mia $webpage come parametro formale
$pagination = "";
if($total_pages!=1){
if($page>'1')
{
$pagination.="[url=".$webpage."][size="1"]Prima[/size][/url]
[url=".$webpage."]Precedente[/url]";
}
//Impostiamo il massimo numero di links di partenza da visualizzare nella pagina.
$maximum_links = 10;
//Se sono necessarie meno pagine rispetto al numero massimo
if($total_pages<=$maximum_links)
{
//Il numero massimo di links che occorreranno saranno pari al numero totale di pagine + 1
$maximum_links = $total_pages+1;
}
//Se ne sono necessarie di piu, allora:
else{
//$maximum_links +1
$maximum_links=$maximum_links+1;
if($page>=$maximum_links){
$maximum_links=$page+1;
}
}
for ($i=1;$i<$maximum_links;$i++)
{
if($i==$page){
$pagination.="<a>".$i."</a>";
}
else{
$pagination.= "[url=".$webpage."]".$i."[/url]";
}
}
//next e ultima pagina;
if(($page >="1")&&($page!=$total_pages)){
$pagination.= "[url=".$webpage."]Successiva[/url]
[url=".$webpage."][size="1"]Ultima[/size][/url]";
}
}
else{
$pagination.="";
}
return($pagination);
}
//il risultato di questa paginazione è il seguente :
//prima PREV 1 2 3 4 5 6 7 8 9 10 Next ultima
?>
Poi nella pagina dove voglio che compaia la paginazione metto queste cose:
Codice PHP:
<?php
require "include/paginazione.inc.php";
$webpage = basename($_SERVER['PHP_SELF']);
$page = (!isset($_GET['page']))? 1 : $_GET['page'];
$queryprima=oci_parse($con,"select count(*) from cons_esami_assegnare where sede='$sede_utente'");
oci_execute($queryprima);
while (($ris=oci_fetch_array($queryprima, OCI_ASSOC))){
foreach ($ris as $pippo){
}
}
$max_results = 10;//numero di elementi da visualizzare per pagina.
$total_results = $pippo;
$total_pages = ceil($total_results / $max_results);
$from = (($page * $max_results) - $max_results);
$a= ($max_results * $page);
$query_tab1=oci_parse($con, "select r, c1, c2, c3, c4, c5, c6, c7 from (select rownum r, ..... from cons_esami_assegnare where sede='$sede_utente' and rownum <= $a)
where r > $from");
oci_execute($query_tab1);
while (($riga=oci_fetch_array($query_tab1, OCI_NUM + OCI_RETURN_NULLS))){
echo ("<tr><td align='center'>".$riga[1]."</td><td align='center'>".$riga[2]."</td><td align='center'>".$riga[3]."</td><td align='center'>".$riga[4]."</td><td align='center'>".$riga[5]."</td><td align='center'>".$riga[6]."</td><td align='center'>".$riga[7]."</td></tr>\n");
}
echo("</tbody>");
echo("<tfoot><tr><td colspan='7'></td></tr>");
echo ("<tr><td align='center' colspan='7'>".pagination_3($total_pages, $page, $webpage)."</td></tr>");
?>
Il mio db è oracle...ma puoi adattarlo tranquillamente a mysql (se usi qst).
Cmq le grosse differenze tra i due sono nel conto dei record che restituisce la query. Io ho dovuto fare una query con la count mentre tu potresti usare tranquillamente mysql_num_row. Altro cosa diversa è che io ho dovuto usare rownum nella query ma tu puoi usare tranquillmamente limit 
Spero di esserti stata utile...
Se non ti funge, non lo capisci o semplicemente vuoi sistemare il tuo posta il codice 
Ciao ciao