Ho visto tanti 3d aperti con tantissimi post per risolvere il problema della paginazione.

Con questa classe dovreste trovare tutto molto semplice:

Cosa serve?
Solo il file che chiameremo php.sql.pager.class (nome indicativo) con questo contenuto:
Codice PHP:
class _makePager {

 var 
$limit;
 var 
$page;
 var 
$numPages;
 var 
$offset;
 var 
$sql;
 var 
$menu;

 function 
_makePager $limit ) {

  
$this->limit $limit;

 }

 function 
_getPagerData $numHits$page ) {

  
$numHits = (int) $numHits;
  
$this->limit max((int) $this->limit1);
  
$this->page = (int) $page;
  
$this->numPages ceil($numHits $this->limit);
  
$this->page max($this->page1);
  
$this->page min($this->page$this->numPages);
  
$this->offset = ($this->page 1) * $this->limit;
  
$this->sql " LIMIT ".$this->offset.", ".$this->limit;
  
$this->_makeMenu();

 }

 function 
_makeMenu () {

  if (
$this->numPages>1) {

   if (
$this->page>1$this->menu['PREVIOUS'] = ($this->page-1);

   for (
$i=1$i<=$this->numPages$i++) {
    if (
$i == $this->page$this->menu['PAGES'][] = array (
                               
'ID'     => $i,
                               
'STATUS' => false
                              
);
    else 
$this->menu['PAGES'][] = array (
                     
'ID'     => $i,
                     
'STATUS' => true
                    
);
   }

   if (
$this->page<$this->numPages$this->menu['NEXT'] = ($this->page+1);

  }

 }

 function 
_getUri $_pagevar ) {

  
$_getvars $_SERVER["QUERY_STRING"];
  
$_url $_SERVER["PHP_SELF"]."?";
  
$_getvars explode"&"$_getvars );

  for (
$i=0$i!=count($_getvars); $i++) {
   list (
$key$value) = explode"="$_getvars[$i] );
   if ((
$key)&&($value)) if ($key!=$_pagevar$_url.= "{$key}={$value}&amp;";
  }

  return 
"{$_url}{$_pagevar}=";

 }


Nel prossimo post vedremo come funziona!