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

    paginazione che non funziona

    Salve ragazzi, ho creato una pagina per visualizzare tutti i campi di una tabella. Quando clicco su altri numeri di pagina mi visualizza sempre la prima pagina, come devo fare ?


    ecco il codice:

    <?
    include("config.PHP");
    include("selezione.PHP");




    if (!isset($start) OR $start<0)
    $start=0;
    $step=20;

    $query=mysql_query("SELECT * FROM `film` order by titolo asc LIMIT $start,$step ") OR DIE ("select Non Riuscita");





    ?>







    <html>
    <body>



    <div align="center">


    <font color="#000099" size="4" face="Arial, Helvetica, sans-serif">Elenco
    Film </font></p>
    </div>
    <div align="center"></div>
    <div align="center">
    <table width="800" border="0" cellspacing="1" cellpadding="0">
    <tr bordercolor="#FFFFFF" bgcolor="#000099">
    <td width="6"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">numero</font></td>
    <td width="200"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">nome</font></td>
    <td width="50"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">genere</font></td>
    <td width="220"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">attori</font></td>


    </tr>
    <?


    while ($row=mysql_fetch_array($query))
    {
    echo "<tr bgcolor='#CCCCCC'>";
    echo "<td width='6'> <font face='Arial, Helvetica, sans-serif' size='2' color='#000099'>$row[id]</font></td>";
    echo "<td width='200'> <font face='Arial, Helvetica, sans-serif' size='2' color='#000099'> $row[titolo]</font></td>";
    echo "<td width='50'><font face='Arial, Helvetica, sans-serif' size='2' color='#000099'> $row[genere]</font></td>";
    echo "<td width='220'><font face='Arial, Helvetica, sans-serif' size='2' color='#000099'> $row[attore1],$row[attore2],$row[attore3]</font></td>";



    echo"</tr>";
    }

    ?>
    </table>




    </div>
    <div align="center">
    <table width=37% border=0 align="center">
    <tr>
    <td width=29% align=left>
    <?

    if ($start>0)
    {
    $start_back = $start - $step;


    echo " <a href=visualizza.php?start=$start_back>precedenti</a>";
    }

    ?>
    <div align="right"></div></td>
    <?

    $query1=mysql_query("SELECT count(*) AS tot FROM film ");

    $row=mysql_fetch_array($query1);


    $pages=intval(($row["tot"]-1) / $step)+1;

    ?>
    <td width=38% align=center>
    <?

    for ($i=0; $i<$pages AND $i<20; $i++)
    {

    $start_page = $i * $step;
    echo "<a href=visualizza.php?start=$start_page>" . ($i+1) . "</a> ";
    }

    ?>
    </td>
    <td width=33%>
    <?

    if ($start + $step < $row["tot"])
    {

    $start_next = $start + $step;

    echo "<a href=visualizza.php?start=$start_next>successivi</a>";
    }

    ?>
    </td>
    </tr>
    </table>



    </div>


    ecco la barra degli indirizzi:

    http://localhost/database_film/visualizza.php?start=20
    Roberto Dungino

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    utilizza le variabili globali.

    dove testi se start è diverso da 0, devi controllare $_GET['start'] e non $start.

    prova e poi facci sapere.

    ciao

  3. #3
    Notice: Undefined index: start in c:\programmi\easyphp1-8\www\database_film\visualizza.php on line 73

    mi esce questo errore!!! Che significa? start viene inizializzato all'inizio della pagina, quindi non dovrebbe uscire!!!
    Roberto Dungino

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    dovresti modificare questo codice cosi:

    codice:
    if (!isset($start) OR $start<0)
    $start=0;
    $step=20;
    codice:
    if (!isset($_GET['start']) OR $_GET['start']<0) {
    $start=0;
    $step=20; 
    }

  5. #5
    ho modificato come hai detto tu:
    ma adesso quando clicco sulla seconda pagina rileva un errore sulla select;
    Notice: Undefined variable: start in c:\programmi\easyphp1-8\www\database_film\visualizza.php on line 12
    select Non Riuscita
    questo è il codice:


    <?
    include("config.PHP");
    include("selezione.PHP");




    if (!isset($_GET['start']) OR $_GET['start']<0)
    $start=0;
    $step=20;

    $query=mysql_query("SELECT * FROM `film` order by titolo asc LIMIT $start, $step ") OR DIE ("select Non Riuscita");





    ?>







    <html>
    <body>



    <div align="center">


    <font color="#000099" size="4" face="Arial, Helvetica, sans-serif">Elenco
    Film </font></p>
    </div>
    <div align="center"></div>
    <div align="center">
    <table width="800" border="0" cellspacing="1" cellpadding="0">
    <tr bordercolor="#FFFFFF" bgcolor="#000099">
    <td width="6"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">numero</font></td>
    <td width="200"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">nome</font></td>
    <td width="50"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">genere</font></td>
    <td width="220"><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">attori</font></td>


    </tr>
    <?


    while ($row=mysql_fetch_array($query))
    {
    echo "<tr bgcolor='#CCCCCC'>";
    echo "<td width='6'> <font face='Arial, Helvetica, sans-serif' size='2' color='#000099'>$row[id]</font></td>";
    echo "<td width='200'> <font face='Arial, Helvetica, sans-serif' size='2' color='#000099'> $row[titolo]</font></td>";
    echo "<td width='50'><font face='Arial, Helvetica, sans-serif' size='2' color='#000099'> $row[genere]</font></td>";
    echo "<td width='220'><font face='Arial, Helvetica, sans-serif' size='2' color='#000099'> $row[attore1],$row[attore2],$row[attore3]</font></td>";



    echo"</tr>";
    }

    ?>
    </table>




    </div>
    <div align="center">
    <table width=37% border=0 align="center">
    <tr>
    <td width=29% align=left>
    <?

    if ($start>0)
    {
    $start_back = $start - $step;


    echo " <a href=visualizza.php?start=".$start_back.">preceden ti</a>";

    }

    ?>
    <div align="right"></div></td>
    <?

    $query1=mysql_query("SELECT count(*) AS tot FROM film ");

    $row=mysql_fetch_array($query1);


    $pages=intval(($row["tot"]-1) / $step)+1;

    ?>
    <td width=38% align=center>
    <?

    for ($i=0; $i<$pages AND $i<20; $i++)
    {

    $start_page = $i * $step;
    echo "<a href=visualizza.php?start=".$start_page.">" . ($i+1) . "</a> ";

    }

    ?>
    </td>
    <td width=33%>
    <?

    if ($start + $step < $row["tot"])
    {

    $start_next = $start + $step;

    echo "<a href=visualizza.php?start=".$start_next.">successi vi</a>";

    }

    ?>
    </td>
    </tr>
    </table>



    </div>








    </body>
    </html>

    ma è mai possibile che non c'è nessuno che mi riesca ad aiutare!!
    Roberto Dungino

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ho sbagliato, cosi forse va (però certo non posso conoscere il tuo script)
    codice:
    if (!isset($start) OR $start<0)
    $start=0;
    $step=20;
    codice:
    if (!isset($_GET['start']) OR $_GET['start']<0) {
    $start=0;
    $step=20; 
    } else {
    $start=intval($_GET['start']);
    $step=20;
    }

  7. #7
    funziona tutto, grazie mille
    ma la funzione intval a che cosa serve e come mai prima mi dava l'errore sulla select
    Roberto Dungino

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    toppato.

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    te l'ho detto, tu prima controllavi $start anzichè $_GET['start'].

    modificando quel blocco di codice, abbiamo assegnato il valore a $start prendendolo da $_GET['start']

    in un primo momento andava solo perchè passava nella prima parte dell'if, e non nel caso in cui $_GET['start'] non era nulla o minore di 0.

    la funzione intval serve a forzare il contenuto di $_GET['start'] ad essere un numero intero (lo uso per evitare che malintenzionati utilizzino l'url per modificare la query). in questo caso se qualcuno inserisce del testo il valore di start verrà forzato a 0.



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.