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

    Problema con classe paginazione

    Ciao a tutti, sto utilizando la classe di paginazione ycpager ma ho riscontrato un problema.
    L'ho settata per visualizzare 4 numeri di pagina prima e dopo alla pagina corrente ma se, per esempio,
    le pagine totali sono 18 ed io mi trovo a pagina 17 i link visualizzati arrivano sino a pagina 21.
    Idem se mi trovo a pagina 16, vengono visualizzati link fino alla pagina 20, ma in totale le pagine sono 18.

    Non capisco dove stia il bug e come risolverlo, mi aiutate per favore ?

    Codice PHP:
    public function getPager() {
    $currentPage $this->_currentPage;        
    $prev $this->_prevLink;        
    $next $this->_nextLink;        
    $total $this->getOffset();  
                      
    echo 
    '<ul class="menuNavigazionefoto">';
    $this->getFirst();                        
    $this->getPrev(); 
                   
    if(
    $total < ($prev $next 1)) {            
    $prev 0;            
    $next 0;            
    for(
    $i $total$i 0$i--) {                
    $return[$i] = $i;            
    }        
        } 
    else {            
    if(
    $currentPage == $total) {                
    if(
    $currentPage - ($prev $next 1) >= 0) {                    
    for(
    $i $total$i > ($total - ($prev $next 1)); $i--) {                        
    $return[$i] = $i;                    
    }                
       }            
           } 
    else if(
    $currentPage $total) {                
    if(
    $currentPage $prev 0) {                    
    for(
    $i $currentPage $prev$i <    $currentPage $next 1$i++) {                        $return[$i] = $i;                    
    }                
        } 
    else if(
    $currentPage $prev <= 0) {                    
    for(
    $i 1$i <= ($prev $next 1); $i++) {                       
    $return[$i] = $i;                    
    }                
        }            
             }        
                   }
            if(!empty(
    $return)) { sort($return); }                
    for(
    $i 0$i count($return); $i++) {           
    if(
    $return[$i] != $this->_currentPage)                
    echo 
    '<li><a href="'$this->_redirectTo .'p='$return[$i] .'" title="">'$return[$i].'</a>&nbsp;&nbsp;&nbsp;&nbsp;</li>';            
    else                
    echo 
    '<li>'$return[$i] .'&nbsp;&nbsp;&nbsp;&nbsp;</li>';        
    }
          
    $this->getNext();        
          
    $this->getLast();
          echo 
    '</ul>';            


  2. #2
    Ho trovato in rete un bugfix da inserire

    if(!empty($return)) { sort($return); }
    >>>>>>>>IN QUESTA POSIZIONE<<<<<<<<

    for(
    $i = 0; $i < count($return); $i++) {
    if(
    $return[$i] != $this->_currentPage)
    echo
    '<li><a href="'. $this->_redirectTo .'p='. $return[$i] .'" title="">'. $return[$i].'</a>&nbsp;&nbsp;&nbsp;&nbsp;</li>';


    Si tratta di questo codice:
    Codice PHP:
    if(end($return) > $total){array_pop($return);array_unshift($return,reset($return)-1);} 
    Se imposto la paginazione con solo 2 link visualizzati dopo quello attuale funziona.
    Se imposto più link dopo quello attuale non funziona.
    Aiuto !!!

  3. #3
    Non capisco come modificare eventualmente il bugfix o la classe per poterla utilizzare con 3 link dopo l'attuale (se esistono ovviamente le pagine)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    se ti interessa posso postarti la mia funzione di paginazione che utilizzo per la mia bulletin board

  5. #5
    Ne prenderei visione molto volentieri, grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Il for alla fine ci sta per farti vedere il funzionamento ipotizzando che clicchi sulla pagina successiva.

    Codice PHP:
    <?php

    /**
     * Sistuisce il numero della pagina per i link della lista pagine
     */
    function buildUrlPages($url$page) {
        
    // Se deve restituire la pagina numero 1, quando
        // l'utente si trova nella pagina 2 elimina &page=1
        // dal link
        
    if ($page <= 1) {
            return 
    preg_replace(array("/&amp;page=(.*?)/is""/\?page=(.*?)/is"), ""$url);
        }
        
        
    // Se l'url è pulito da variabili get
        // aggiunge ?page=[numero pagina]
        
    if (strpos($url"?") === false) {
            return 
    "{$url}?page={$page}";
        }
        
        
    // Se l'url comprende query string
        // lo aggiunge in coda
        
    return "{$url}&amp;page={$page}";
    }

    /**
     * Genera i link per le pagine di topics, userlist etc...
     */
    function getListPages($count$perPage$page$url) {
        
    // Se i risultati della pagina sono minori del numero di oggetti
        // da visualizzare per pagina ferma lo script visto che la pagina
        // da visualizzare è solo una
        
    if ($count $perPage) {
            return;
        }
        
        
    // Calcola il numero totale di pagine
        
    $pages ceil($count $perPage);
        
        
    // Stampa il numero di pagine
        
    echo "Pagine ($pages):";
        
        
    // Ritorna la pagina precedente
        // se mi trovo alla 2°+ pagina
        
    if ($page 1) {
            echo 
    " <a href='" buildUrlPages($url, ($page 1)) . "'>&laquo; Precedente</a";
        }
        
        
    // Link per pagina, in questo caso 5
        // << Precedente 2 3 4 5  ... 10 Successiva >>
        
    $linksPerPage 5;
        
        
    // Pagine precedenti e Pagine successive
        // Per ottenere l'effetto << Precedente 1 ... 3 4 5 6 7 ... 10 Successiva >>
        
    $prevPages $page floor($linksPerPage 2);
        
    $nextPages $page floor($linksPerPage 2);
        
        
    // Se $prevPages ritorna un numero negativo
        // Assegna la pagina 1
        
    if ($prevPages <= 0) {
            
    $prevPages 1;
            
    $nextPages $prevPages $linksPerPage 1;
        }
        
        
    // Impedisce di raggiungere un numero maggiore di pagine
        // rispetto a quelle calcolato dalla funzione
        
    if ($nextPages $pages) {
            
    $nextPages $pages;
            
    $prevPages $pages $linksPerPage 1;
            if(
    $prevPages <= 0) {
                
    $prevPages 1;
            }
        }
        
        if (
    $nextPages == 0) {
            
    $nextPages $pages;
        }
        
        
    // Prima pagina
        
    if ($prevPages 1) {
            echo 
    " <a href='" buildUrlPages($url1) . "'>1</a>";
            if((
    $prevPages 1) != 1) {
                echo 
    " ...";
            }
        }
        
        
    // Pagina corrente e pagine precedenti e successive
        // nell'intervallo assegnato a $linksPerPage:
        //  2 3 4 <b>5</b> 5 6 7
        
    for ($i $prevPages$i <= $nextPages; ++$i) {
            
    $tplVar["i"] = $i;
            if(
    $page == $i) {
                echo 
    $i";
            } else {
                echo 
    " <a href='" buildUrlPages($url$i) . "'>$i</a>";
            }
        }
        
        
    // Ultima pagina
        
    if ($nextPages $pages) {
            if ((
    $nextPages 1) == $pages) {
                echo 
    " ...";
            }
            echo 
    " <a href='" buildUrlPages($url$pages) . "'>$pages</a>";
        }
        
        
    // Pagina successiva
        
    if ($page $pages) {
            echo 
    " <a href='" buildUrlPages($url, ($page 1)) . "'>Successiva &raquo;</a>";
        }
    }

    $elementiTotali 10;
    $elementiPerPagina 1;
    $url "http://localhost/prova3.php?variabile=inutile&ampseconda=inutile"// o semplicemente http://localhost/prova3.php
    for ($paginaAttuale 1$paginaAttuale <= 10$paginaAttuale++) {
        
    getListPages($elementiTotali$elementiPerPagina$paginaAttuale$url);
        echo 
    "<hr>";
    }
    ?>

  7. #7
    Grazie, proverò a capire come modificare il mio in base al tuo.

  8. #8
    Niente da fare, non ci capisco niente...... sto per arrendermi...... sigh sigh.....

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    non mi sembra così complicato:
    $elementiTotali = 10; <--- il numero di elementi che hai nel database
    $elementiPerPagina = 20;
    $url = "http://tuosit.it/tuapagina.php";


    e poi nei miei "echo "codice html" metti la formattazione html che preferisci tu, o lasci addirittura uguale

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 © 2025 vBulletin Solutions, Inc. All rights reserved.