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

    Paginazione dati a scaglione

    Salve,
    ho un problema (più che altro di logica matematica, forse mi sfugge qualcosa) di paginazione dati.
    Ho un tot numero di record e ne visualizzo tot per pagina. Ho un range di numeri di pagina da visualizzare. Per esempio 5. Precedente 1 2 3 4 5 Successivo.
    Ma vorrei che superato la quinta pagina mi vengano mostrati i numeri da 6 a 10. E così via.

    Ho impostato un ciclo for che mi permetta di stampare massimo cinque risultati:

    Codice PHP:
    for ($i=0;$i<$totale_pagine AND $i<5;$i++) {
    echo (
    $i+1) . " ";

    Ma non riesco a trovare un metodo che gli faccia capire di visualizzare cinque risultati seguenti superato il numero n di pagina.

    Mi basterebbe una dritta, non voglio necessariamente il codice bello e fatto.

    Grazie.

  2. #2
    Io faccio cosi:

    Codice PHP:
    # indico quante pagine visualizzo nella paginazione prima e dopo la pagina attuale
        
    $numPag 5;

        if(
    $totRecord == 0) {
            
    $paginazione '';
        } else {
            
    $paginazione '[b] Pagine totali: '.$totPage.'[/b] - ';

            if (
    $currentPage > ($numPag+2)) {
                
    $paginazione .= "<a class=\"blink\" href=\"?" $querystring "page=1\" title=\"Vai alla pagina 1\">1</a> ... ";
            } elseif (
    $currentPage == $numPag+2) {
                
    $paginazione .= "<a class=\"blink\" href=\"?" $querystring "page=1\" title=\"Vai alla pagina 1\">1</a> ";
            }

            for(
    $n 1$n <= $totPage$n++) {
                
    # caso in cui sono nella pagina corrente
                
    if ($n == $currentPage) {
                    
    $paginazione .= '[b]'.$n.'[/b] ';
                
    # visualizzo le $numPag pagine precendeti e successive
                
    } elseif ($currentPage $n <= $numPag && $n $currentPage <= $numPag) {
                    
    $paginazione .= "<a class=\"blink\" href=\"?" $querystring "page=$n\" title=\"Vai alla pagina $n\">$n</a> ";
                } 
    // end if
            
    // end for

            
    if ($currentPage $totPage-($numPag+1)) {
                
    $paginazione .= " ... <a class=\"blink\" href=\"?" $querystring "page=$totPage\" title=\"Vai alla pagina $totPage\">$totPage</a> ";
            } elseif (
    $currentPage == $totPage-($numPag+1)) {
                
    $paginazione .= " <a class=\"blink\" href=\"?" $querystring "page=$totPage\" title=\"Vai alla pagina $totPage\">$totPage</a> ";
            }

            
    $paginazione .= '
    '
    ;
        } 
    Lo puoi vedere in azione qui: www.modelliemodelle.it/iscritti.php

    Praticamente ne mostro un tot prima ed un tot dopo lòa pagina attuale...
    Ciao!

  3. #3
    Totrecord sta per?

  4. #4
    il numero totale dei record.

    ecco come va usato:

    Codice PHP:
    # inizializzo la query per contare il numero totale dei record
        
    $query "SELECT COUNT(id) AS n FROM tabella WHERE ...";

        
    $res mysql_query($query);
        
    $n mysql_fetch_assoc($res);
        
    # totale record
        
    $totRecord $n['n'];

        
    $totPage ceil($totRecord/10);
        
    $currentPage = (!isset($_GET['page'])) ? $_GET['page'];
        
    $currentPage = ($currentPage <= $totPage) ? $currentPage 1;
        
    $currentPage = (is_numeric($currentPage)) ? $currentPage 1;
        
    $primo = ($currentPage 1) * 10;


        
    $query "SELECT * FROM tabella WHERE ... LIMIT $primo, 10"
    Ciao!

  5. #5
    E' che gran parte dello script l'ho scritta io, quindi non mi va di implementarne uno nuovo. Vorrei una dritta in base al codice postato da me.

  6. #6
    Aspetta, ho provato sul tuo sito lo script che mi hai proposto, ma non è come vorrei. Sul tuo sito le pagine aumentano, mentre il primo "gruppo" non viene eliminato. A me deve funzionare così:

    Numero di pagina da visualizzare 5.

    1 2 3 4 5 >>

    Se sli clicca su >> compare:

    << 6 7 8 9 10 >>

    Se si clicca su >> compare:

    << 11 12 13 14 15 >>

    e così via.

    Qualcuno può aiutarmi?

    Grazie ancora.

  7. #7
    Ho risolto con qualche forzatura ed un po' di logica. Grazie lo stesso.

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.