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

    dividere in pagine i risultati

    In pratica ho questo codice che mostra le informazioni di ogni singolo utente e le mostra su ogni riga:


    Codice PHP:
       for($i=0;$i<$c1;$i++)
        {
            
    //show each user
            
    $each def($users[$i], "./db/users");
        

        
            echo 
    "$each[id]-$each[email]";


    $c1 contiene l'array di tutti i risultati

    Il problema è che però tutto questo mi viene mostrato solo su una singola pagina, e potete immaginare come su 1400 risultati, un qualsiasi browser possa andare in crash.

    Come si fa a dividerle in pagine dove ogni pagina ne contiene solo 50 e cosi via?

    Del tipo view.php?pagina=2 e vedo gli altri 50 ecc.....

    Per quanto riguarda l'input cioè le caselle dei messaggi per girare pagina ce l'ho già, ma è il sistema che divide i risultati che mi manca.

    Ciao

  2. #2

  3. #3
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    ti occorre quello xche si chiama paginazione.
    su questo sito trovi nelle pillole e credo negli articoli.

    su questo sito c'è un ottimo articolo, ma non riesco a trovarlo.
    http://www.sitepoint.com/subcat/php-tutorials

  4. #4
    avevo lo stesso problema, devi giocare con il parametro LIMIT nella query sql
    codice:
    //Preleva dall'url la pagina attuale (ci dovrà sempre essere un attributo page=num)
    $currpage = (isset($_GET['page'])) ? intval($_GET['page']) : 0;
    //Limite risultati x pagina
    $limit2 = 50;
    //Con questa formula determini l'articolo di partenza, che varia a seconda di $limit2
    $limit1 = $currpage * $limit2 - $limit2;
    "SELECT * FROM table LIMIT $limit1,limit2";
    //per la paginazione
    $page_back = $currpage - 1;
    $page_forw = $currpage + 1;
    //Conti il totale di record nella tabella
    $query = "SELECT count(*) AS tot FROM eventi";
    $result1 = mysql_query($query, $db);
    $row = mysql_fetch_object($result1);
    //Determini il numero totale di pagine approssimato ad un numero intero (x evitare decimali)
    $pages = intval(($row->tot - 1)  / $limit2)+1;
    table border="0" cellspacing="0" cellpadding="0" align="right" class="videotable">
    //stampi la pagina corrente e le pagine totali
    
    
     Pagina <?php echo $currpage ?> di <?php echo $pages </p>
    //A meno che non si è alla pagina1, questo ciclo attiva un link alla pagina precedente
    if ($limit1>0)
    {echo "<a href=pagina.php?page=$page_back>&lt; Prec</a>";
    }
    //Questo stampa il link alla prima pagina (non prodotta dal ciclo successivo)
    <?php echo "<a href=pagina.php?page=1>1</a>" ?> 
    //Ciclo per stampare link alle pagine successive
    <?php
    for ($i=1; $i<$pages AND $i<5; $i++)
    { $start_page = $i + 1;
    echo "<a href=pagina.php?page=$start_page>" . ($i+1) . "</a> ";
    } 
    ?>
    //Stesso discorso per la pagina successiva, a meno che nn si è all'ultima pagina, genera un
    //Collegamento alla pagina successiva
    <?php 
    			if ($page_forw <= $pages)
    {echo "<a href=pagina.php?page=$page_forw>Succ&gt;</a>"; ?>
    buona programmazione!!!
    }
    ?>

  5. #5
    Basta utilizzare la funzione cerca del forum

    In firma ho quello che fa per te!

  6. #6
    Non ho potuto seguire tutte le istruzioni scritte cosi come erano, perchè lo script si basa su un database di testo.

    Codice PHP:
        $users listall("./db/users");
        
    $c1 count($users);
    $posts_per_page "1";

    if(!isset(
    $page)) {

        
    $page 1;

    }

    $start $page $posts_per_page $posts_per_page;



    if (
    $c1 <= $posts_per_page) {

       
    $num_pages 1;

    } else if ((
    $c1 $posts_per_page) == 0) {

       
    $num_pages = ($c1 $posts_per_page);

    } else {

       
    $num_pages = ($c1 $posts_per_page) + 1;

    }
        
     
    $num_pages = (int) $num_pages;   
        
    $p "";

    $x = +1;



    $y 0;


    for(
    $i=$start;$i<$c1;$i++)

    {

        if(
    $y >= $posts_per_page) {



            break;

        }

        
    $each def($users[$i], "./db/users"); 
            echo 
    "$each[id]-$each[email]";


    E adesso se sto su pagina.php?page=1

    Me li visualizza sempre tutti

    Se sto su page=2

    Me ne visualizza 2

    E se mi trovo su 3

    Me ne visualizza 1

    Secondo quanto ho scritto dovrebbe visualizzare un risultato ogni pagina :???:

    Ho inoltre cercato di adattarmi il più possibile con un altra gestione pagine sempre dello stesso script, che sbaglio? :crycry:

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.