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

    paginazione che perde i dati dopo la prima pagina

    Ciao a tutti. Forse mi sto perdendo in un bicchier d'acqua o più probabilmnte non ne so abbastanza di php... comunque il mio problema è questo. Ho realizzato una gallery di prodotti che estrae i dati da un db mysql. nel form ci sono 2 select, una per la categoria prodotto, l'altra per la marca. L'utente può scegliere se visualizzare tutti i prodotti per categoria o solo una certa marca per categoria. Fin qui tutto bene.
    Il problema è la paginazione, perché quando passo alla seconda pagina il valore di $primo (il primo parametro di LIMIT) si azzera. Penso che ciò succeda perché la pagina viene ricaricata e anche le condizioni if che ho posto non sono più vere.... infatti ho provato a fare un print_r del valore di $current_page e alla prima pagina mi resituitsce 1, dalla seconda invece non viene visualizzato nulla.

    Questo è il mio codice, qualcuno mi può aiutare? (la variabile $_GET['page']=1 la passo dal link Gallery nelle altre pagine del sito, ma ho anche provato a passarla direttamente dal form di ricerca. Stesso risultato ... )



    Seleziona la Categoria e la Marca e clicca su Cerca.


    <form name="form_cerca" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

    <select name="ricerca">
    <option>Seleziona la categoria</option>
    <?php
    $query_opt="SELECT * FROM categoria";
    $result=mysql_query($query_opt) or die (mysql_error());
    while ($row=mysql_fetch_array($result)) {
    $selected="";
    if($_POST['ricerca']==$row['id_categoria']){
    $selected="selected";
    }
    echo '<option value="'.$row['id_categoria'].'"'.$selected.'>'.$row['categoria_nome'].'</option>';
    }
    ?>
    </select>



    <select name="ricerca_marca">

    <option value="9999">Tutte le marche</option>
    <?php
    $query_opt="SELECT * FROM marca";
    $result=mysql_query($query_opt) or die (mysql_error());
    while ($row=mysql_fetch_array($result)) {

    $selected="";
    if($_POST['ricerca_marca']==$row['id_marca']){
    $selected="selected";
    }
    echo '<option value="'.$row['id_marca'].'"'.$selected.'>'.$row['marca_nome'].'</option>';

    }
    ?>
    </select>

    <input type="submit" name="submit" value="Cerca" />
    </form>
    <table class="gallery_tab" cellpadding="0" cellspacing="0">

    <?php


    if(isset($_POST['ricerca'])) {
    if ((isset($_POST['ricerca_marca'])) && ($_POST['ricerca_marca']!= 9999)){

    //query che estrae il numero di dati per id_prodotto:
    $query_count="SELECT count(prodotti.id_prodotto) FROM prodotti, categoria,marpro WHERE prodotti.id_categoria='".$_POST['ricerca']."' and prodotti.id_categoria= categoria.id_categoria and marpro.id_marca='".$_POST['ricerca_marca']."' and marpro.id_prodotto=prodotti.id_prodotto";

    $count=mysql_query($query_count) or die ("Invalid query: " .mysql_error());
    $res_count=mysql_fetch_row($count);
    //numero dati:
    $tot_records=$res_count[0];
    //dati per pagina:
    $per_page=10;
    //numero totale di pagine:
    $tot_pages=ceil($tot_records/$per_page);

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

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

    print_r($current_page);

    $query="SELECT * from prodotti,categoria,marpro WHERE prodotti.id_categoria='".$_POST['ricerca']."' and prodotti.id_categoria= categoria.id_categoria and marpro.id_marca='".$_POST['ricerca_marca']."' and marpro.id_prodotto=prodotti.id_prodotto LIMIT $primo,$per_page";
    $risultato=mysql_query($query) or die (mysql_error());


    while($row=mysql_fetch_array($risultato,MYSQL_ASSO C)) {



    ?>

    <tr>
    <td width="40%" align="left"><?php
    if (($row['image'] == Null) || ($row['image'] == 0)) {
    echo "<img class=\"border_img\" src=\"gallery/thumbs/noimage.gif\">";
    }
    else {
    echo "<a href=\"gallery/".$row['image'].".jpg\" title=\"".$row['descrizione']."\" class=\"thickbox\" rel=\"image\"><img class=\"border_img\" src=\"gallery/thumbs/".$row['image'].".jpg\"></a>";
    }

    ?>
    </td>
    <td width="60%">

    <table width="100%" cellpadding="0" cellspacing="0" border="0">
    <tr>
    <td style="border:0; padding:1px;">
    <?php echo $row['descrizione']; ?>
    </td>
    </tr>


    <?php
    $query2="SELECT * from marca WHERE id_marca=".$row['id_marca'];
    $risultato2=mysql_query($query2) or die (mysql_error());
    while($row2=mysql_fetch_array($risultato2)) {
    $marca=$row2['marca_nome'];
    }
    ?>
    <tr>
    <td style="border:0; padding:1px;"><?php echo $marca; ?>
    </td>
    </tr>
    <tr>
    <td style="border:0; padding:1px;">€ -<?php //echo $row['prezzo']; ?>
    </td>
    </tr>
    </table>

    </td>
    </tr>
    <?php
    }
    include("paginazione_dati.php");
    echo "<tr>\n<td colspan='2'align='center'>";
    echo $paginazione;
    echo "</td>\n</tr>\n";
    } else {

    //query che estrae il numero di dati per id_prodotto:
    $query_count="SELECT count(id_prodotto) FROM prodotti, categoria WHERE prodotti.id_categoria='".$_POST['ricerca']."' and prodotti.id_categoria= categoria.id_categoria";

    $count=mysql_query($query_count) or die ("Invalid query: " .mysql_error());
    $res_count=mysql_fetch_row($count);
    //numero dati:
    $tot_records=$res_count[0];
    //dati per pagina:
    $per_page=10;
    //numero totale di pagine:
    $tot_pages=ceil($tot_records/$per_page);

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

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

    print_r($current_page);

    $query="SELECT * from prodotti,categoria WHERE prodotti.id_categoria='".$_POST['ricerca']."' and prodotti.id_categoria= categoria.id_categoria LIMIT $primo,$per_page";
    $risultato=mysql_query($query) or die (mysql_error());

    while($row=mysql_fetch_array($risultato,MYSQL_ASSO C)) {



    ?>

    <tr>
    <td align="left"><?php
    if (($row['image'] == Null) || ($row['image'] == 0)) {
    echo "<img class=\"border_img\" src=\"gallery/thumbs/noimage.gif\">";
    }
    else {
    echo "<a href=\"gallery/".$row['image'].".jpg\" title=\"".$row['descrizione']."\" class=\"thickbox\" rel=\"image\"><img class=\"border_img\" src=\"gallery/thumbs/".$row['image'].".jpg\"></a>";
    }

    ?>
    </td>
    <td width="60%">

    <table width="100%" cellpadding="0" cellspacing="0" border="0">
    <tr>
    <td style="border:0; padding:1px;">
    <?php echo $row['descrizione']; ?>
    </td>
    </tr>


    <?php
    $query2="SELECT * from marca WHERE id_marca=".$row['id_marca'];
    $risultato2=mysql_query($query2) or die (mysql_error());
    while($row2=mysql_fetch_array($risultato2)) {
    $marca=$row2['marca_nome'];
    }
    ?>
    <tr>
    <td style="border:0; padding:1px;"><?php echo $marca; ?>
    </td>
    </tr>
    <tr>
    <td style="border:0; padding:1px;"> -<?php //echo $row['prezzo']; ?>
    </td>
    </tr>
    </table>

    </td>
    </tr>

    <?php
    }
    include("paginazione_dati.php");
    echo "<tr>\n<td colspan='2'align='center'>";
    echo $paginazione;
    echo "</td>\n</tr>\n";
    }
    }

    ?>
    </table>


    Eterna gratitudine a chi mi offrirà una soluzione

  2. #2

    eureka!

    Nell'attesa di una risposta, mi sono risposto da solo

    Bastava passare le due variabili attraverso lo script di paginazione e porre una condizione if nella pagina gallery. Riporto la soluzione per chiunque ne avesse bisogno:

    Questo è lo script paginazione_dati.php

    $paginazione = "PAGINE:
    [";
    for($i = 1; $i <= $tot_pages; $i++) {
    if($i == $current_page) {
    $paginazione .= $i . " ";
    } else {
    $paginazione .= "<a href=\"?page=$i&categoria=".$_POST['ricerca']."&marca=".$_POST['ricerca_marca']."\" title=\"Vai alla pagina $i\">$i</a> ";
    }
    }
    $paginazione .= "]";


    E questa la condizione all'inizio di gallery.php:

    if((!isset($_POST['ricerca'])) && (!isset($_POST['ricerca_marca']))) {
    $_POST['ricerca']= $_GET['categoria'];
    $_POST['ricerca_marca']= $_GET['marca'];
    }

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.