Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Classe per la paginazione (senza limit)

    Ho creato questa classe che gestisce in modo COMPLETO la paginazione, con record successivo, precedente ultimo primo e numeri di pagina. inoltre recupera le variabili GET della vostra pagina, dovete solo coopiarla in qualsiasi punto della pagina o include e
    per utilizzarla dovete mettere in prossimità del vostro ciclo WHILE IL SEGUENTE CODICE (in grassetto):

    $pageObj=new makePage;
    $pageObj->setVars(mysql_num_rows($query),10);
    while ($rigo=mysql_fetch_array($query)){
    if ($pageObj->init < $pageObj->limit && $pageObj->recCount >= $pageObj->init){
    // QUI SCRIVETE LA VOSTRA PAGINA
    $pageObj->init++;
    }
    $pageObj->recCount++;

    }
    // menù navigazione
    $pageObj->showNavigator();
    mysql_free_result($query);

    Codice PHP:
    class makePage{

            
    // setta le variabili necessarie a gestire la 
            // paginazione, come argomenti vuole il numero
            // di record totali e i record per pagina (arbitrario)
            
    function setVars($num,$perPage){
                
    // ultimo record da visualizzare
                
    $limit=$perPage
                
    // pagine totali
                
    $totPages=ceil($num/$perPage); 
                
    // pagina corrente effettiva
                
    $currentPage=1
                
    // pagina richiesta
                
    $page=1
                
    // detrmina da che punto in poi del ciclo
                //  devono essere visulizzati i record
                
    $init 0;  
                if(isset(
    $_GET['page']) && $_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);
                
    // setto le proprietà della pagina
                
    $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;
            }
            
            
            function 
    getOthers(){    
                
    // funzione che preleva le altre variabili http
                // con i rispettivi valori per aggiungerli al link 
                // della barra di navigazione in luogo di $params
                
    $params "";
                foreach (
    $_GET as $value) {
                    if ((
    key($_GET))!="page"){ // prelevo le altre variabili http ECCETTO page
                        
    $params.=(key($_GET))."=".$value."&";
                        
    next($_GET);
                    }
                }
                
    $this->params $params;

            }
            
    // mostra la barra di navigazione tra i record
            
    function showNavigator(){
                    
    // mi assicuro che i record trovati siano != 0 e la 
                    // pagina non sia 1
                    
    if ($this->lastPage!=&& $this->lastPage!=1){ 
                    
    $this->getOthers(); 
                    
    // costruisco la barra di navigazione
                        
    echo "
                        


                        <table width='100%' cellspacing='5'>
                            <tr>
                            <td align='center' width='20%'>"
    ;
                            if (
    $this->page!=1){
                                echo 
    "[url='?".$this->params."page=".$this->firstPage."']&lt;&lt;[/url]";
                            }
                            echo 
    "</td><td align='center' width='20%'>";
                            if (
    $this->page!=1){
                                echo 
    "[url='?".$this->params."page=".$this->previousPage."']&lt;[/url]";
                            }
                            echo 
    "</td><td align='center' width='20%'>";
                            
    // gestione numeri di pagina
                                
    $pageInterval=10// corrisponde all'intervallo di pagine visualizzato
                                
                                
    $from = ((ceil($this->currentPage/10)-1)*10)+1
                                
    $to $from $pageInterval;
                                for (
    $numPage=$from;$numPage<=$to;$numPage++){
                                    if (
    $numPage<=$this->lastPage){
                                        echo 
    "
                                        <a href='?"
    .$this->params."page=".$numPage."'>";
                                        if (
    $this->currentPage==$numPage){ 
                                        
    // se la pagina corrente è uguale a $numPage la visualizzo in grassetto
                                            
    echo "[b]$numPage[/b]</a>";
                                        }
                                        else {
                                            echo 
    "$numPage</a>";
                                        }
                                    }
                                }
                            
    // fine gestione numeri di pagina
                            
    echo "</td><td align='center' width='20%'>";
                            if (
    $this->lastPage!=$this->currentPage){
                                echo 
    "[url='?".$this->params."page=".$this->nextPage."']&gt;[/url]";
                            }
                            echo 
    "</td><td align='center' width='20%'>";
                            if (
    $this->lastPage!=$this->currentPage){
                                echo 
    "[url='?".$this->params."page=".$this->lastPage."']&gt;&gt;[/url]";
                            }
                            
                            echo 
    "</td>
                            </tr>
                            <tr>
                                <td align='center' colspan='5'>"
    ;
                            echo 
    "Pagina [b]".$this->currentPage."[/b] di [b]".$this->lastPage."[/b]
                                </td>
                            </tr>
                        </table>
                        </p>
                        "
    ;
                    }    
            }


    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  2. #2

    Provatela...

    e sappiatemi dire!
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  3. #3
    non interessa a nessuno?
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  4. #4
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    Scusa per il ritardo...

    Funziona... :mavieni:

  5. #5
    bravo max bello script. Lo sto utilizzando da stamattina ed è stato semplicissimo da configurare.
    L'unica modifica che si potrebbe apportare è quella di rendere dinamico il range di pagine che vengono visualizzate, cioè se la paginazione è composta da 20 pagine visualizzo solo l'attuale più le due precedenti e le due successive.

    Intanto io ci provo ma non credo di essere all'altezza

    ciao ciao


  6. #6
    puoi spiegarti meglio? in che senso "più le due precedenti e le due successive".
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  7. #7

    Complimenti

    Ho usato la tua classe e funziona in maniera egregia. Complimenti
    Maurizio

  8. #8

    scusa per il ritardo...

    Scusa...adesso provo e ti so dire!!!!

    ciao :quote:
    http://www.bluflash.net

  9. #9

    Complimenti!!!

    Ho utilizzato la tua calsse per la paginazione
    e risulta veramente veloce e intuitivo.

    Complimenti!!!
    :tongue:

    ciao
    Ema.x
    http://www.bluflash.net

  10. #10

    Complimenti!!!

    Ho utilizzato la tua calsse per la paginazione
    e risulta veramente veloce e intuitivo.

    Complimenti!!!
    :tongue:

    ciao
    Ema.x
    http://www.bluflash.net

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.