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![]()