Visualizzazione dei risultati da 1 a 10 su 10

Discussione: paginazione dinamica

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60

    paginazione dinamica

    allora ragazzi... ho un piccolo problema....

    io voglio stampare a video con php tutte le righe della mia tabella, ma siccome sono troppe vorrei divederle in pagine in modo ke in ogni pagina ce ne stiano 10...

    km faccio?

  2. #2

    Paginazione

    Prima di eseguire la tua query copia ed incolla questo codice, modifica la query per come ti serve, attenzione però alle variabili da passare e gli eventuali controlli.

    <?
    if (!isset($start) or $start <0)
    $start = 0;
    $step = 10;

    $query = "SELECT * FROM tua_tabella limit $start,$step";
    mysql_db_query("$database", "$query");
    $result = mysql_query($query, $db);
    $num = mysql_num_rows($result);
    if ($num == 0 )
    {
    ############ Tabelle i per record non trovati ####
    echo "Non ci sono Record !";
    }
    else
    { // visualizza la tua tabella con i risultati
    ?>
    <p align="left">Elenco di N. <? echo $num; ?> Risultati </p>
    <table border="0" cellpadding="0" cellspacing="0" width="800" height="22">
    <tr>
    <p align="center">Intestazione Tabella</td>
    </tr>
    </table>
    <?
    echo "<table cellpadding='0' cellspacing='0' width='800'><tr>";

    while ($rigo = mysql_fetch_array($result))
    {
    $id = $rigo["id_tua_tabella"];
    $data = $rigo["data_itua_tabella"];
    $cognome = $rigo["cognome_tua_tabella"]; // personalizza i risultati


    echo <<<EOD
    <td height="22" ><p align="center">$id</td>
    <td height="22" ><p align="center">$data</td>
    <td height="22" ><p align="center">$cognome</td>
    </tr>
    EOD;
    ############### FINE codice per visualizzare la tabella dei risultati ##############
    } // chiude l'IF del fetch-Array
    } // chiude l'IF se ci sono risultati
    echo "</table>"; // chiude la tabella dei risultati della ricerca
    ?>
    <p align="center">
    <table width ="90%" border="0"><tr>
    <td width="20%" align="left">
    </CENTER>
    <?
    if ($start>0)
    {
    $start_back = $start - $step;
    echo "<a href=\"?start=$start_back\">[ Precedenti ]</a>";
    }
    ?>
    </td>
    <?
    $query_x = "SELECT count(*) AS tot FROM tua_tabella "; //qui non mettere il limit
    $result_x = mysql_query($query_x, $db);
    $row = mysql_fetch_array($result_x);
    $pages = intval(($row[tot]-1) / $step)+1;


    ?>
    <td width="60%" align="center">
    <?
    for ($i=0; $i<$pages AND $i<10; $i++)
    {
    $start_page = $i * $step;
    echo "<a href=\"?start=$start_page\">"." ".($i+1)."</a>";
    }
    ?>
    </td>
    <td width 20% align=right>
    <?
    if($start + $step <$row[tot])
    {
    $start_next = $start + $step;
    echo "<a href=\"?istart=$start_next\">[ Successivi ]</a>';
    echo "</td></table>";
    } // if sopra

    ! NOTE io uso questo metodo è semplice ed intuitivo, attenzione però nei LINK non ho inserito $PHP_SELF che dovrebbe essere usato quando lo script invia a se stesso le variabili .

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    $risultato=mysql_query("select campo from tabella");
    $ris=mysql_num_rows($risultato);
    $count=count($ris);
    while($riga=mysql_fetch_object($risultato))
    {
    $campo=$riga->campo;


    }
    for($i=0;$i<$count; $i++)/*scorro le righe*
    {
    for($i=0;$i<10;$i++)/*scorre ogni 10*/
    {
    -----qui crei un file ogni 10----
    }


    }


    questo è un inizio ci devo lavorare un po su

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    vivio io basta ke prendo quello ke hai scritto tu, lo copio e lo incollo nel mio file vuoto e va? ovviamente cambiando la query...

    scusa ma nn ho capito se devo cambiare altro

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    io ho scritto cosi:

    Codice PHP:
    <html>

    <head>
    <title>Paginazione</title>
    </head>

    <body>

    <?php

    $dbhost
    ="localhost";
    $dbuser="root";
    $dbpass="";
    $database="a";

    $conn=mysql_connect($dbhost,$dbuser,$dbpass) or die ("errore connessione");
    @
    mysql_select_db($database) or die( "Unable to select database");

    if (!isset(
    $start) or $start <0)
    $start 0;
    $step 10;

    $query "SELECT * FROM tab limit $start,$step";
    mysql_db_query("$database""$query");
    $result mysql_query($query$database);
    $num mysql_num_rows($result);
    if (
    $num == )
      {
    #### Tabelle i per record non trovati ####
       
    echo "Non ci sono Record !";
       }
     else
      { 
    // visualizza la tua tabella con i risultati
    ?>

    <p align="left">Elenco di N. <? echo $num?> Risultati </p>
    <table border="0" cellpadding="0" cellspacing="0" width="800" height="22">
    <tr>
    <p align="center">Intestazione Tabella</td>
    </tr>
    </table>

    <?php
    echo "<table cellpadding='0' cellspacing='0' width='800'><tr>";

    while (
    $rigo mysql_fetch_array($result))
    {
    $id $rigo["numero"];
    $nome $rigo["nome"];
    $data $rigo["data"];


    echo <<<EOD
    <td height="22" ><p align="center">$id</td>
    <td height="22" ><p align="center">
    $nome</td>
    <td height="22" ><p align="center">
    $data</td>
    </tr>
    EOD;
    ############### FINE codice per visualizzare la tabella dei risultati ##############
    // chiude l'IF del fetch-Array
    // chiude l'IF se ci sono risultati
    echo "</table>"// chiude la tabella dei risultati della ricerca
    ?>

    <p align="center">
    <table width ="90%" border="0"><tr>
    <td width="20%" align="left">
    </CENTER>

    <?php
    if ($start>0)
    {
    $start_back $start $step;
    echo 
    "<a href=\"?start=$start_back\">[ Precedenti ]</a>";
    }
    ?>

    </td>

    <?php
    $query_x 
    "SELECT count(*) AS tot FROM tab "//qui non mettere il limit
    $result_x mysql_query($query_x$database);
    $row mysql_fetch_array($result_x);
    $pages intval(($row[tot]-1) / $step)+1;


    ?>

    <td width="60%" align="center">

    <?php
    for ($i=0$i<$pages AND $i<10$i++)
    {
    $start_page $i $step;
    echo 
    "<a href=\"?start=$start_page\">"." ".($i+1)."</a>";
    }
    ?>

    </td>
    <td width 20% align=right>

    <?php
    if($start $step <$row[tot])
    {
    $start_next $start $step;
    echo 
    "<a href=\"?istart=$start_next\">[ Successivi ]</a>";
    echo 
    "</td></table>";
    // if sopra
    ?>

    </body>
    </html>

    solo ke mi da questi errori:


    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 25

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 26
    Non ci sono Record !


    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 81

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\a\paginazione.php on line 82

    Notice: Use of undefined constant tot - assumed 'tot' in c:\programmi\easyphp1-8\www\a\paginazione.php on line 83

    Notice: Use of undefined constant tot - assumed 'tot' in c:\programmi\easyphp1-8\www\a\paginazione.php on line 102

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    ho pure provato con il codice ke mi da la guioda di html.it

    ma mi da questi errori:


    Notice: Undefined index: page in c:\programmi\easyphp1-8\www\a\prov.php on line 23

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\a\prov.php on line 32




    il codice è questo

    Codice PHP:
    <?php

    // connessione al database
    mysql_connect("localhost""root""") or die("Connessione fallita !");

    // selezione del DB
    mysql_select_db("a") or die("Selezione del DB fallita !");

    // esecuzione prima query
    $count mysql_query("SELECT * FROM tab");
    $res_count mysql_fetch_row($count);

    // numero totale di records
    $tot_records $res_count[0];

    // risultati per pagina(secondo parametro di LIMIT)
    $per_page 10;

    // numero totale di pagine
    $tot_pages ceil($tot_records $per_page);

    // pagina corrente
    $current_page = (!$_GET['page']) ? : (int)$_GET['page'];

    // primo parametro di LIMIT
    $primo = ($current_page 1) * $per_page;

    echo 
    "<div align=\"center\">\n<table>\n";

    // esecuzione seconda query con LIMIT
    $query_limit mysql_query("SELECT id, nome FROM nome_tabella LIMIT $primo$per_page");
    while(
    $results mysql_fetch_array($query_limit)) {
    echo 
    " <tr>\n <td>";
    echo 
    "<a href=\"page.php?id=" $results['id'] . "\">" $results['nome'] . "</a>
    "
    ;
    echo 
    "</td>\n </tr>\n";
    }

    // includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
    include("pag1.php");

    // in questa cella inseriamo la paginazione
    echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";

    echo 
    " </tr>\n</table>\n</div>";

    mysql_close();

    ?>

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    ok risolto tutto a posto grazie

  8. #8

    Risoluzione

    Aspetta un po...... visto che il problema è di interesse per molti, dicci come hai risolto ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    ok allora.... io ho fatto queste 2 pagine in php:

    prima di tutto quella principale:

    Codice PHP:
    <html>

    <head>
    <title>paginazione</title>
    </head>

    <body>

    <center>

    <?php

    $res_count
    =0;
    $tot_records=0;
    $tot_pages=0;


    // connessione al database
    mysql_connect("localhost""root""") or die("Connessione fallita !");

    // selezione del DB
    mysql_select_db("a") or die("Selezione del DB fallita !");

    // esecuzione prima query
    $count mysql_query("SELECT * FROM tab");
    $res_count mysql_affected_rows();

    // numero totale di records
    $tot_records $res_count;

    // risultati per pagina(secondo parametro di LIMIT)
    $per_page 15;

    // numero totale di pagine
    $tot_pages ceil($tot_records $per_page);

    // pagina corrente
    @$current_page = (!$_GET['page']) ? : (int)$_GET['page'];

    // primo parametro di LIMIT
    $primo = ($current_page 1) * $per_page;

    echo 
    "<center><div align=\"center\">\n<table>\n";

    // esecuzione seconda query con LIMIT
    $query_limit mysql_db_query("a","SELECT * FROM tab LIMIT $primo$per_page");
    $a=mysql_affected_rows();
    for(
    $i=0;$i<$a;$i++) {
    $numero=mysql_result($query_limit,$i,"numero");
    $nome=mysql_result($query_limit,$i,"nome");
    $data=mysql_result($query_limit,$i,"data");
    echo 
    " <tr>\n <td>";
    echo 
    $numero,$nome,$data;
    echo 
    "</td>\n </tr>\n";
    }

    // includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
    include("pag1.php");

    // in questa cella inseriamo la paginazione
    echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";

    echo 
    " </tr>\n</table>\n</div></center>";

    mysql_close();

    ?>

    </center>

    </body>
    </html>


    e poi quella x creare le pagine in fondo con previous e next

    Codice PHP:
    <?php

    if($current_page == 1) { // se siamo nella prima pagina
    $precedente "<< precedente";
    } else { 
    // altrimenti
    $previous_page = ($current_page 1);
    $precedente "<a href=\"?page=$previous_page\" title=\"Vai alla pagina precedente\"><< precedente</a>";
    }

    if(
    $current_page == $tot_pages) { // se siamo nell'ultima pagina
    $successiva "successiva >>";
    } else { 
    // altrimenti
    $next_page = ($current_page 1);
    $successiva "<a href=\"?page=$next_page\" title=\"Vai alla pagina successiva\">successiva >></a>";
    }

    $paginazione "Pagine totali: " $tot_pages $precedente ."
     ["
    ;
    for(
    $k 1$k <= $tot_pages$k++) {
    if(
    $k == $current_page) {
    $paginazione .= $k " ";
    } else {
    $paginazione .= "<a href=\"?page=$k\" title=\"Vai alla pagina $k\">$k</a> ";
    }
    }
    $paginazione .= "]".$successiva;


    ?>



    ora ho solo un ultimo problema.... è ke mi stampa tutte le pagine e siccome io lavoro su db con decine di migliaia di tuple mi servirebbe una funzione ke facesse km le pagine di google, ke piu vai avanti piu aumentano le pagine e piu scompaiono le prime....

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    60
    ah, ho fatto anke una piccola modifica nella paginazione in modo da avere anke un pulsate ke vada all'ultima e alla prima pagina

    Codice PHP:
    <?php

    if($current_page == 1
       {
    // se siamo nella prima pagina
        
    $precedente "<";
        }
     else 
      {
    // altrimenti
       
    $previous_page = ($current_page 1);
       
    $precedente "<a href=\"?page=$previous_page\" title=\"Vai alla pagina precedente\"> <</a>";
       }

    if(
    $current_page == $tot_pages)
       {
    // se siamo nell'ultima pagina
        
    $successiva ">";
        }
     else
      {
    // altrimenti
       
    $next_page = ($current_page 1);
       
    $successiva "<a href=\"?page=$next_page\" title=\"Vai alla pagina successiva\"> > </a>";
       }

    if(
    $current_page == 1)
       {
    // se siamo nella prima pagina
        
    $first "<<";
        }
     else
      {
    // altrimenti
       
    $first_page 1;
       
    $first "<a href=\"?page=$first_page\" title=\"Vai alla prima pagina\"> << </a>";
       }

    if(
    $current_page == $tot_pages)
       {
    // se siamo nell'ultima pagina
        
    $last ">>";
        }
     else
      {
    // altrimenti
       
    $last_page $tot_pages;
       
    $last "<a href=\"?page=$last_page\" title=\"Vai all'ultima pagina\"> >> </a>";
       }


    $paginazione "Pagine totali: " $tot_pages "
    $first $precedente ." [";
     
    for(
    $k 1$k <= $tot_pages$k++)
     {if(
    $k == $current_page)
        {
    $paginazione .= $k " ";
         }
       else
        {
    $paginazione .= "<a href=\"?page=$k\" title=\"Vai alla pagina $k\">$k</a> ";
         }
      }

    $paginazione .= "] ".$successiva $last;


    ?>

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.