Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    paginazione senza limit-i! creato st'oggetto!

    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:
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  2. #2

    Bè? non piace a nessuno?


    funziona alla perfezione...è facile da inserire nelle pagine e prossimamente lo implementerò con i numeri di pagina....
    Xfavore, dite qualkosa!
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  3. #3
    metti + commenti così posso capire il codice...
    io ho un problema nella paginazione e sto cercando di risolverlo.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.