ciao a tutti, ho creato un oggetto che permette di fare la paginazione dei dati senza limit e con 1 sola query, spiego brevemente:

Oggetto(da includere nel file utilities.php o qualcosa del genere):

Codice PHP:
class makePage{
        
// setta le variabili necessarie a gestire
        // la paginazione, come argomenti vuole il 
        // nomemodulo o file in questione, 
        // il numero di record totali e i record per pagina
        
        
function setVars($param1,$num,$perPage){
                
// $perPage=10;
                
$limit=$perPage// ultimo record da visualizzare
                
$totPages=ceil($num/$perPage); // pagine totali
                
$currentPage=1// pagina corrente, variabile d'ambiente
                
$page=1// pagina corrente, variabile parametrica
                
$init 0;  // detrmina la visualizzazione dei record
                
if(isset($_GET['page'])){
                        
$page $_GET['page'];
                        }
                
$recCount 0;
                
$currentPage=$page;
                
$nextPage=$page+1;
                
$previousPage=$page-1;
                
$firstPage=1;
                
$lastPage=$totPages;
                
// se è stata scelta una pagina
                // particolare il limite corrisponde
                // alla pagina moltiplicata per i record per pagina
                
$limit=$page*$perPage;
                
// l'inizio invece corrisponde al
                // limite meno i record per pagina
                
$init= ($limit-$perPage);
                
// parametro opzionale, in questo caso lo utilizzo
                // per richiamare il giusto file del modulo
                
$this->param1=$param1;
                
// setto le proprietà dell'oggetto
                
$this->page=$page;
                
$this->recCount 0;
                
$this->currentPage=$page;
                
$this->nextPage=$page+1;
                
$this->previousPage=$page-1;
                
$this->firstPage=1;
                
$this->lastPage=$totPages;
                
$this->limit=$limit;
                
$this->init=$init;
        }
        
        
// mostra la barra di navigazione tra i record
        
function showNavigator(){ // NB: file potrebbe essere cambiato con qualsiasi altro parametro (ad esempio IDQualcosa), corrisponde a param1 passato tramite il metodo setVars
                    
echo "<table width='100%'>
                    <tr>
                        <td align='center'>"
;
                        if (
$this->page!=1){
                        echo 
"[url='?file=".$this->param1."&page=".$this->firstPage."']&lt;&lt;[/url]";
                        }
                        echo 
"</td><td align='center'>";
                        if (
$this->page!=1){
                        echo 
"[url='?file=".$this->param1."&page=".$this->previousPage."']&lt;[/url]</td>";
                        }
                        echo 
"</td><td align='center'>";
                        
                        if (
$this->lastPage!=$this->currentPage){
                        echo 
"[url='?file=".$this->param1."&page=".$this->nextPage."']&gt;[/url]</td>";
                        }
                        echo 
"</td><td align='center'>";
                        if (
$this->lastPage!=$this->currentPage){
                        echo 
"[url='?file=".$this->param1."&page=".$this->lastPage."']&gt;&gt;[/url]</td>";
                        }
                        echo 
"</td>";                                    
            echo 
"    <tr>
                </table>
                "
;
        }


nella pagina il ciclo sui record deve essere necessariamente fatto in questo modo (i cambiamenti sono minimi)
Codice PHP:
// istanzio l'oggetto per la paginazione

                        
$pageObj=new makePage;
                        
$pageObj->setVars("param1",mysql_num_rows($query),10);
                            
                            while (
$rigo=mysql_fetch_array($query)){

                                if (
$pageObj->init $pageObj->limit  && $pageObj->recCount >= $pageObj->init){ // PAGINAZIONE
                                
                                // VOSTRO OUTPUT DEI DATI


                                
$pageObj->init++;    // PAGINAZIONE
                                
}
                            
$pageObj->recCount++;    // PAGINAZIONE
                            
}

                            
// richiamare il metodo showNavigator per
                            // per visualizzare menù navigazione

                        
$pageObj->showNavigator(); 
opinioni, suggerimenti, commenti, domande? :gren: