Se ci pensi
$counts e' il numero di righe che stampi per pagina.
$currPage e' la pagina selezionata.
quindi il numero di righe moltiplicato per la pagina da visualizzare ti da il valore di partenza.
poi calcoli il valore finale aggiungendo $counts
e aumenti il valore inziale di 1 (se nn sei sulla prima pagina) per evitare di rivisualizzare l'ultimo record della pagina precedente.
Attenzione che devi partire da 0 e non da 1.
Se parti da 1 devi fare sempre
$currPage = $_GET["page"] ? (abs($_GET["page"]) )-- : 0 ;
if( $currPage<0 )
$currPage = 0;
Cmq se fai le prove numeriche viene fuori che
con page = 0
$currPage = 0;
$counts = 20 ;
$pageFrom = ($counts*$currPage) => 20*0 = 0
$pageTo = $pageFrom+$counts => 0+20 = 20
$q = "select * from users order by nome asc limit 0,20 " ;
-------------------------------------------------------------------------
con page = 1
$currPage = 1;
$counts = 20 ;
$pageFrom = ($counts*$currPage) => 20*1 = 20
$pageTo = $pageFrom+$counts => 20+20 = 40
if( $pageFrom!=0)
$pageFrom++; => 21
$q = "select * from users order by nome asc limit 21,40 " ;
-------------------------------------------------------------------------
con page = 2
$currPage = 2;
$counts = 20 ;
$pageFrom = ($counts*$currPage) => 20*2 = 40
$pageTo = $pageFrom+$counts => 40+20 = 60
if( $pageFrom!=0)
$pageFrom++; => 41
$q = "select * from users order by nome asc limit 41,60 " ;
etc......
Pensa che puoi cosi' anche far decidere all'utente quanti risultati visualizzare per pagina con una banale select.
EDIT:
AH poi per il numero di pagine dovrei inserire una piccola query :
Codice PHP:
$q = "select count(*) from users" ;
$ris = mysql_query($q , $conn ) ;
if($ris)
{
$num =mysql_fetch_array($ris);
$totRows = $num[0] ;
$totPages = ceil( $totRows/$counts ) ;
for( $i=0 ; $i<$totPages ; $i++ )
echo "<a href=\"miapagina.php?page=$i\">$i</a> " ;
}