• User

    Paginazione con parametro $-GET...

    Buon giorno a tutti, ho provato a cercare nel forum ma non ho ancora trovato una soluzione al mio problema.
    Devo impaginare i risultati facendo visualizzare 10 record per pagina.
    In pratica ho un form da cui scelgo una categoria di ricette e questo passa il valore dell'id_cat tramite $_GET alla pagina di visualizzazione.
    Fin qui tutto bene se si tratta di visualizzare la prima pagina, ma quando passo alla seconda pagina mi restituisce o risultati.
    Se invece eseguo lo stesso script impostandogli manualmente il valore della variabile $id allora tutto funziona bene.
    Vi posto il codice della pagina di visualizzazione sperando che qualcuno mi illumini sull'errore.....

    <?php
    include("statistiche/conf/conf.php");
    
    //$i=$_GET['id'];
    //$id=$i;
    $id=5;
    
    $elems_per_page = 10; // Elementi per ogni pagina
    $page = $_GET[page];
    if(!($page)) {
    $page = 1;
    }
    $primo = ($page-1) * $elems_per_page ;
    
    /*$sql = "";
    if($filtro && $filtro != "$i") {
    $sql = " AND id_cat = '$filtro'";
    } */
    
    $query = "SELECT * FROM ricette WHERE id_cat='$id'";
    $result = mysql_query($query) or die("Select last failed $query");
    $num_rows = mysql_num_rows($result);
    
    $tot_pagine = ceil($num_rows / $elems_per_page);
    $prev_page = $page - 1;
    $next_page = $page + 1;
    
    
    $query .= " ORDER BY ricetta LIMIT $primo, $elems_per_page";
    $result = mysql_query($query) or die("Select last failed $query");
    $num_rows = mysql_num_rows($result);
    
    
    $query = "SELECT * FROM ricette WHERE id_cat='$id' ORDER BY ricetta";
    $elenco = mysql_query($query, $connect) or die(mysql_error());
    $row = mysql_fetch_assoc($elenco);
    $totalRows = mysql_num_rows($elenco);
    
    ?>
    
    </head>
    
    <body>
    <div id="contenitore">
      <div align="center">
        <?php include('header.php'); ?>
        <br />
        <br />
    <div id="statistiche">
        <div align="left">
          <?php include("statistiche/utentionline.php"); ?>
            <br />
            <?php include("statistiche/contatore.php"); ?>
            <br />
            <?php include("statistiche/registrati.php"); ?>
        </div>
        </div>
      </div>
      
      <div id="centro_dx">Scegli una categoria...<br />
        <br />
    <br />
    <?php echo "Sono presenti n. ".$totalRows." ricette." ?>
    <br />
    <?php
    while ($line = mysql_fetch_assoc($result))  { ?>
    
    <table width="65%" border="1" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td width="50%" align="left"><?php echo $line['ricetta']; ?></td>
            <td width="5%" align="center"><a href="elenco_x_cat.php?id=<?php echo $line['id_cat']; ?>" title="Clicca qui per visualizzare"><img src="icone/cerca_16x16.gif" width="16" height="16" border="0" /></a></td>
        </tr>
        </table>
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td align="center"><?php }
    echo "<br>";
    if($prev_page > 0)
    echo "<a href='?filtro=$filtro&page=$prev_page'>pagina precedente</a>";
    if($tot_pagine > 0)
    echo "pagina $page di $tot_pagine   ";
    if($next_page <= $tot_pagine)
    echo "<a href='?filtro=$filtro&page=$next_page'> pagina successiva</a>";
    echo "<br>";
    echo "<br>";
    ?>
    </td>
    </tr>
    </table>
    </div>
    </div>
    
    </body>
    </html>
    

    Grazie a tutti in anticipo...


  • Super User

    Ciao 🙂

    Ti do un consiglio vecchio quanto la programmazione. Fai stampare a schermo la variabile che passi tramite l'url e verifica che sia passata correttamente.

    Anche perché se impostandola manualmente funziona, il problema è tutto lì...

    Io proverei per prima cosa a sostituire
    $page = $_GET[page];

    con

    $page = $_GET['page'];

    😉


  • User

    ok...adesso faccio un po' di prove e poi ti faccio sapere.

    Grazie ancora per la dritta.


  • User

    @claudioweb said:

    Ciao 🙂

    Ti do un consiglio vecchio quanto la programmazione. Fai stampare a schermo la variabile che passi tramite l'url e verifica che sia passata correttamente.

    Anche perché se impostandola manualmente funziona, il problema è tutto lì...

    Io proverei per prima cosa a sostituire
    $page = $_GET[page];

    con

    $page = $_GET['page'];

    😉

    Niente da fare non carica la variabile nelle pagine successive.....

    Come devo fare per far stampare la variabile nell'url (sono ancora novellino con php)?


  • User Attivo

    La parte in grassetto è l'aggiunta che ho fatto al tuo codice, prova e fammi sapere.
    if($prev_page > 0)
    echo "<a href='?**id=" . $_GET['id'] . "&**filtro=$filtro&page=$prev_page'>pagina precedente</a>";
    if($tot_pagine > 0)
    echo "pagina $page di $tot_pagine ";
    if($next_page <= $tot_pagine)
    echo "<a href='?**id=" . $_GET['id'] . "&**filtro=$filtro&page=$next_page'> pagina successiva</a>";

    CIAO


  • User

    @mikslap said:

    La parte in grassetto è l'aggiunta che ho fatto al tuo codice, prova e fammi sapere.
    if($prev_page > 0)
    echo "<a href='?**id=" . $_GET['id'] . "&**filtro=$filtro&page=$prev_page'>pagina precedente</a>";
    if($tot_pagine > 0)
    echo "pagina $page di $tot_pagine ";
    if($next_page <= $tot_pagine)
    echo "<a href='?**id=" . $_GET['id'] . "&**filtro=$filtro&page=$next_page'> pagina successiva</a>";

    CIAO

    ....sei mitico .....funziona alla grande...
    Grazie 1000!!!!

    Ciao, alla prossima.