- Home
- Categorie
- Coding e Sistemistica
- PHP
- Divisione in pagine dei risultati: perchè la 2a pagina è vuota??
-
Divisione in pagine dei risultati: perchè la 2a pagina è vuota??
Buongiorno phpisti...!
Ho un sito non scritto da me al quale stavo provando ad apportare qualche modifica, tanto per imparare qualcosa.Il sito è www.solosportive.it.
Quello che stavo cercando di fare è di suddividere i risultati di una ricerca in più pagine, perchè le auto iniziano a diventare molte e quindi farne comparire 50 in una pagina diventa pesante (provate a fare una semplice ricerca per marca)Se nel menù a destra cliccate su "tutti gli annunci" si apre una pagina che contiene l'elenco di TUTTE le vetture inserite, ordinatamente divise per pagina (10 risultati).
Ora io ho preso dei frammenti di codice da questo file per cercare di eseguire la paginazione. Visto che tra le due pagine la grafica è un pò diversa e mi piace più quella di "tutti gli annunci", ho preso di sana pianta tutto il codice apportando solo alcune modifiche per
- inserire il menù di ricerca che in "tutti gli annunci" non c'è
- ho ovviamente modificato alcune variabili. In "tutti gli annunci" lui fa una query e prende TUTTI gli annunci che abbiano il parametro ADI=0 (è una cosa del sito, perchè gli annunci sono in condivisione con un'altro mio sito)
Se io carico il file modificato, appena faccio una ricerca per Marca, mi compare una pagina correttamente suddivisa in 10 risultati e mi appare il menù che mi dice che ci sono 4 pagine da sfogliare (38 risultati).
Se però io clicco su "2", per andare alla seconda pagina, mi appare una pagina senza risultati, come se il sistema non si ricordasse per quali parametri deve fare la ricerca... :?:?:?:?
CODICE PAGINA "TUTTI GLI ANNUNCI"
<?php $select2="COUNT(*) as Quante"; $from2="annunci"; $where2="ADI = 0"; include('../functions/select2.php'); $rec2 = mysql_fetch_assoc ($queryselect2); $output = $rec2["Quante"]; //Ricavo il numero della pagina in cui mi trovo $pagina = ($_GET["pag"] != "") ? (int)$_GET["pag"] : 1; // Specifico quanti record per pagina $recpagina = 10; // Specifico da che record inizio a prelevare i dati $inizio = ($pagina-1)*$recpagina; // Conto le pagine totali $totalepagine=ceil($output/$recpagina); ?> <?php if ($output > $recpagina){ ?> <div class="centro"> <p class="blu"> Pagina Attuale: <?php print $pagina; ?><br><br>Pagine Totali: <?php print $totalepagine; ?><br><br> </p> <?php $pagname="index.php?"; include('../include/paginazione.php'); ?> </div> <?php } ?> <?php $select="ID, MARCA, MODELLO, STATO, ANNO, MESE, PREZZO, TIPO"; $from="annunci"; $where="ADI = 0"; $orderby ="TIPO, ID desc"; $limit="$inizio, $recpagina"; include('../functions/selectlimit.php'); while ($rec = mysql_fetch_assoc ($queryselectlimit)){ $idann = $rec["ID"]; $marca = $rec["MARCA"]; $modello = $rec["MODELLO"]; $anno = $rec["ANNO"]; $mese = $rec["MESE"]; $stato = $rec["STATO"]; $prezzo = $rec["PREZZO"]; $tipo = $rec["TIPO"]; ?> <div id="annunci"> <div id="blank60"> <p class="blu"> <br /> <?php print $marca; ?><br /><br /> <?php print $modello; ?><br /><br /> <?php print $anno; ?><br /><br /> <?php print $mese; ?><br /><br /> <?php print $stato; ?><br /><br /> <?php print $prezzo; ?><br /><br /> >> <strong><?php print $tipo; ?></strong><br /><br /> </p> </div> <?php // Seleziono le foto pubblicate dall'utente $selectl="FOTO"; $froml="fotoann"; $wherel="IDANN=".$idann; $orderbyl="rand()"; $limitl="1"; include('../functions/selectlimit2.php'); $fpubb = mysql_fetch_assoc ($queryselectlimitl); $foto = $fpubb ["FOTO"]; ?> <div id="blank40"> <?php if ($foto !=""){ ?> <br /><br /> <div class="centro"> <a href="../annunci/singolo.php?id=<?php print $idann; ?>"><img src="../include/tnp.php?image=../fotoann/<?php print $foto; ?>&tnsize=150" alt="Clicca qui per esaminare l'annuncio completo..." class="img"></a> </div> <?php } else{ ?> <br /> <a href="../annunci/singolo.php?id=<?php print $idann; ?>"><img src="../skin/senzafoto.jpg" class="img"/></a> <?php } ?> </div> </div> <?php if ($titolouser =="Admin"){?> <div class="centro"> <form action="admdel.php" method="post" name="d"> <input name="id" type="hidden" value="<?php print $idann; ?>"> <input name="canc" type="submit" value="Cancella Annuncio" class="textbox"> </form> </div> <?php } ?> <?php } ?>
-
CODICE PAGINA "CERCA.PHP" (ricerca per marca) Modificato da me
<br> <div id="white90"> <p class="red"><strong>Affina la Ricerca...</strong></p> <p class="blu"><strong>Marca:</strong> <?php print $marca2; ?></p> <form action="cerca2.php" name="ric" method="post"> <p class="blu"> Seleziona il modello che ti interessa: <select name="modello" class="textbox"> <?php // Determino la variabile Marca $marca2 = $_POST["marcax"]; if ($marca2 ==""){ $marca2=$_GET["marca"]; } $marca2 = str_replace ("'","",$marca2); //preparo la query al database per selezionare gli annunci che mi interessano $select="DISTINCT MODELLO"; $from="annunci"; $where="MARCA ='".$marca2."' and ADI = 0"; $orderby ="MODELLO"; include('../functions/selectorder.php'); while ($rec = mysql_fetch_assoc ($queryselectorder)){ $modello = $rec["MODELLO"]; ?> <option><?php print $modello; ?></option> <?php } ?> <?php //faccio il calcolo di quanti annunci ricavo in base ai parametri della query $select2="COUNT(*) as Quante"; $from2="annunci"; //la var. where2 è uguale a where, cioè "tutti gli annunci di quella marca che hanno //il valore ADI = 0 $where2=$where; include('../functions/select2.php'); $rec2 = mysql_fetch_assoc ($queryselect2); $output = $rec2["Quante"]; //Ricavo il numero della pagina in cui mi trovo $pagina = ($_GET["pag"] != "") ? (int)$_GET["pag"] : 1; // Specifico quanti record per pagina $recpagina = 10; // Specifico da che record inizio a prelevare i dati $inizio = ($pagina-1)*$recpagina; // Conto le pagine totali $totalepagine=ceil($output/$recpagina); ?> </select> <input name="marca2" type="hidden" value="<?php print $marca2; ?>"> <input name="c" type="submit" value="Cerca" class="textbox"/> </form> </p> </div> <?php if ($output > $recpagina){ ?> <div class="centro"> <p class="blu"> Pagina Attuale: <?php print $pagina; ?><br><br>Pagine Totali: <?php print $totalepagine; ?><br><br> </p> <?php $pagname="cerca.php?"; include('../include/paginazione.php'); ?> </div> <?php } ?> <?php $select="ID, MARCA, MODELLO, STATO, ANNO, MESE, PREZZO, TIPO"; $from="annunci"; $where=$where2; $orderby ="TIPO, ID desc"; $limit="$inizio, $recpagina"; include('../functions/selectlimit.php'); while ($rec = mysql_fetch_assoc ($queryselectlimit)){ $idann = $rec["ID"]; $marca = $rec["MARCA"]; $modello = $rec["MODELLO"]; $anno = $rec["ANNO"]; $mese = $rec["MESE"]; $stato = $rec["STATO"]; $prezzo = $rec["PREZZO"]; $tipo = $rec["TIPO"]; ?> <div id="annunci"> <div id="blank60"> <p class="blu"> <br /> <?php print $marca; ?><br /><br /> <?php print $modello; ?><br /><br /> <?php print $anno; ?><br /><br /> <?php print $mese; ?><br /><br /> <?php print $stato; ?><br /><br /> <?php print $prezzo; ?><br /><br /> >> <strong><?php print $tipo; ?></strong><br /><br /> </p> </div> <?php // Seleziono le foto pubblicate dall'utente $selectl="FOTO"; $froml="fotoann"; $wherel="IDANN=".$idann; $orderbyl="rand()"; $limitl="1"; include('../functions/selectlimit2.php'); $fpubb = mysql_fetch_assoc ($queryselectlimitl); $foto = $fpubb ["FOTO"]; ?> <div id="blank40"> <?php if ($foto !=""){ ?> <br /><br /> <div class="centro"> <a href="../annunci/singolo.php?id=<?php print $idann; ?>"><img src="../include/tnp.php?image=../fotoann/<?php print $foto; ?>&tnsize=150" alt="Clicca qui per esaminare l'annuncio completo..." class="img"></a> </div> <?php } else{ ?> <br /> <a href="../annunci/singolo.php?id=<?php print $idann; ?>"><img src="../skin/senzafoto.jpg" class="img"/></a> <?php } ?> </div> </div> <?php if ($titolouser =="Admin"){?> <div class="centro"> <form action="admdel.php" method="post" name="d"> <input name="id" type="hidden" value="<?php print $idann; ?>"> <input name="canc" type="submit" value="Cancella Annuncio" class="textbox"> </form> </div> <?php } ?> <?php } ?>
-
FILE "CERCA.PHP" ORIGINALE
<?php $marca2 = $_POST["marcax"]; if ($marca2 ==""){ $marca2=$_GET["marca"]; } $marca2 = str_replace ("'","",$marca2); ?> <html> <head> <title><?php print $ws; ?> - Ricerca Annuncio</title> <?php // Includo i meta tags include('../include/meta.php'); // Includo il css include('../include/css.php'); ?> </head> <body> <div id="box"> <div id="top"> <?php // Includo la testa include('../include/top.php'); ?> </div> <div class="clearer"></div> <div id="contenuto"> <?php // Login/Benvenuto include('../include/log.php'); ?><br> <img src="../skin/ricerca.jpg"> <div id="white90"> <p class="red"><strong>Affina la Ricerca...</strong></p> <p class="blu"><strong>Marca:</strong> <?php print $marca2; ?></p> <form action="cerca2.php" name="ric" method="post"> <p class="blu"> Seleziona il modello che ti interessa: <select name="modello" class="textbox"> <?php $select="DISTINCT MODELLO"; $from="annunci"; $where="MARCA ='".$marca2."' and ADI = 0"; $orderby ="MODELLO"; include('../functions/selectorder.php'); while ($rec = mysql_fetch_assoc ($queryselectorder)){ $modello = $rec["MODELLO"]; ?> <option><?php print $modello; ?></option> <?php } ?> </select> <input name="marca2" type="hidden" value="<?php print $marca2; ?>"> <input name="c" type="submit" value="Cerca" class="textbox"/> </form> </p> </div> <div id="white90"> <p class="red"><strong>Risultati Parziali...</strong><br> per visualizzare l'annuncio completo clicca sulla freccia corrispondente... </p> <?php $select="ID, MODELLO, STATO, PREZZO, TIPO"; $from="annunci"; $where="MARCA ='".$marca2."' and ADI = 0"; $orderby ="TIPO, MARCA, MODELLO, PREZZO"; include('../functions/selectorder.php'); while ($rec = mysql_fetch_assoc ($queryselectorder)){ $idann = $rec["ID"]; $modello = $rec["MODELLO"]; $stato = $rec["STATO"]; $prezzo = $rec["PREZZO"]; $tipo = $rec["TIPO"]; ?> <?php // Seleziono le foto pubblicate dall'utente $selectl="FOTO"; $froml="fotoann"; $wherel="IDANN=".$idann; $orderbyl="rand()"; $limitl="1"; include('../functions/selectlimit2.php'); $fpubb = mysql_fetch_assoc ($queryselectlimitl); $foto = $fpubb ["FOTO"]; ?> <div id="blank20"> <?php if ($foto !=""){ ?><br> <div id="centro"><a href="../annunci/singolo.php?id=<?php print $idann; ?>"><img src="../include/tnp.php?image=../fotoann/<?php print $foto; ?>&tnsize=50" alt="Clicca qui per esaminare l'annuncio completo..." class="img"></a> </div> <?php } else{ ?> <br /> <div id ="centro"><a href="../annunci/singolo.php?id=<?php print $idann; ?>"><img src="../skin/freccia.jpg" class="img" alt="Clicca qui per esaminare l'annuncio completo..." /></a></div> <?php } ?> </div> <?php if ($tipo =="Concessionaria"){ ?> <div id="blank80c"> <?php } else { ?> <div id="blank80"> <?php } ?> <p class="blu"> <strong>Auto: </strong><?php print $marca2." ".$modello; ?><br> <strong>Stato:</strong> <?php print $stato; ?><br> <strong>Prezzo:</strong> <?php print $prezzo; ?>, 00 ?<br> <strong>Venditore:</strong> <?php print $tipo; ?><br><br> </p> </div> <img src="../skin/separatore.jpg"><br><br> <?php } ?> </div> </div> <div id="menu"> <?php // Includo il menu include('../include/menu.php'); ?>
-
puoi postare il file paginazione.php?
-
Eccolo... ma il problema non credo sia lì
<p class="red"> <?php // Caso pagina 1 if ($pagina == 1){ for ($i = 1; $i <= 5; $i++){ if ($i == $pagina){ ?> <?php } else { ?> <?php } if ($i <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $i; ?>"><strong><?php print $i; ?></strong></a> <?php } } ?> <?php $next = $pagina + 5; if ($next <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + 5; ?>"><strong>...</strong></a> <?php } ?> <?php } // Caso pagina 2 elseif ($pagina == 2){ for ($i = 1; $i <= 5; $i++){ if ($i == $pagina){ ?> <?php } else { ?> <?php } if ($i <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $i; ?>"><strong><?php print $i; ?></strong></a> <?php } } ?> <?php $next = $pagina + 4; if ($next <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + 4; ?>"><strong>...</strong></a> <?php } ?> <?php } // Caso pagina >= 3 else{ ?> <?php if ($pagina >= 4){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina - 3; ?>"><strong>...</strong></a> <?php } ?> <?php for ($i = 2; $i > 0; $i-- ){ if ($pagina - $i > 0){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina - $i; ?>"><strong><?php print $pagina - $i; ?></strong></a> <?php } } ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina; ?>"><strong><?php print $pagina; ?></strong></a> <?php for ($i = 1; $i < 3; $i++ ){ if ($pagina + $i <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + $i; ?>"><strong><?php print $pagina + $i; ?></strong></a> <?php }} ?> <?php $next = $pagina + 3; if ($next <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + 3; ?>"><strong>...</strong></a> <?php } ?> <?php } ?> </p>
Grazie mille della collaborazione!
-
Eccolo... ma il problema non credo sia lì
<p class="red"> <?php // Caso pagina 1 if ($pagina == 1){ for ($i = 1; $i <= 5; $i++){ if ($i == $pagina){ ?> <?php } else { ?> <?php } if ($i <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $i; ?>"><strong><?php print $i; ?></strong></a> <?php } } ?> <?php $next = $pagina + 5; if ($next <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + 5; ?>"><strong>...</strong></a> <?php } ?> <?php } // Caso pagina 2 elseif ($pagina == 2){ for ($i = 1; $i <= 5; $i++){ if ($i == $pagina){ ?> <?php } else { ?> <?php } if ($i <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $i; ?>"><strong><?php print $i; ?></strong></a> <?php } } ?> <?php $next = $pagina + 4; if ($next <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + 4; ?>"><strong>...</strong></a> <?php } ?> <?php } // Caso pagina >= 3 else{ ?> <?php if ($pagina >= 4){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina - 3; ?>"><strong>...</strong></a> <?php } ?> <?php for ($i = 2; $i > 0; $i-- ){ if ($pagina - $i > 0){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina - $i; ?>"><strong><?php print $pagina - $i; ?></strong></a> <?php } } ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina; ?>"><strong><?php print $pagina; ?></strong></a> <?php for ($i = 1; $i < 3; $i++ ){ if ($pagina + $i <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + $i; ?>"><strong><?php print $pagina + $i; ?></strong></a> <?php }} ?> <?php $next = $pagina + 3; if ($next <= $totalepagine){ ?> <a href="<?php print $pagname; ?>pag=<?php print $pagina + 3; ?>"><strong>...</strong></a> <?php } ?> <?php } ?> </p>
Grazie mille della collaborazione!
-
Scusami, ma il problema sta proprio qui.
Facciamo una piccola analisi.
Compilo il form
Clicco su "CERCA"
Lo script analizza i dati inviati dal form tramite POST e scrive la query
Vengono visualizzati i risultati
Clicco su pagina due
Lo script che fa? Non ha dati passati ne da POST ne da GET[php]$marca2 = $_POST["marcax"];
if ($marca2 ==""){ $marca2=$_GET["marca"]; }[/php]
$marca sarà sempre uguale a ''
-
...quindi come dovrei modificarlo?? Mi intreccio con quelle virgolette e quegli apici
-
Ci sono diversi modi
uno è questo:
passa tramite url i valori<a href="<?php print $pagname; ?>pag=<?php print $i; ?>**&marca=$marca&secondo_valore=$secondo_valore**"><strong><?php print $i; ?></strong></a>
-
Allora.. facciamo un esempio concreto: se ho ben capito io dovrei sostituire questa parte
<?php if ($output > $recpagina){ ?> <div class="centro"> <p class="blu"> Pagina Attuale: <?php print $pagina; ?><br><br>Pagine Totali: <?php print $totalepagine; ?><br><br> </p> <?php $pagname="cerca.php?"; include('../include/paginazione.php'); ?> </div> <?php } ?>
O meglio, questa riga
Pagina Attuale: <?php print $pagina; ?><br><br>Pagine Totali: <?php print $totalepagine; ?>
Con il codice che hai scritto tu.
Dove- $pagname sarebbe l'equivalente del mio $pagina (quindi devo modificarlo con $pagina)
- $i non ho capito cosa sia
- $marca ok va bene
- $secondo_valore devo mettere l'altro valore che la pagina dovrebbe "portarsi dietro" ma non capisco se dev'essere il numero dei risultati che restano...:?
abbi pazienza!!! mi sto impegnando!
-
@Eddieangel said:
- $pagname sarebbe l'equivalente del mio $pagina (quindi devo modificarlo con $pagina)
Nel tuo codice vi è : $pagname="cerca.php?";
ossia il file di riferimento
@Eddieangel said: - $i non ho capito cosa sia
Nel tuo codice vi è: for ($i = 1; $i <= 5; $i++){
ossia un contatore per visualizzare le pagina da 1 a 5
@Eddieangel said: - $marca ok va bene
Ok
@Eddieangel said: - $secondo_valore devo mettere l'altro valore che la pagina dovrebbe "portarsi dietro" ma non capisco se dev'essere il numero dei risultati che restano...:?
Tutti i valori presenti nel modulo di ricerca.
Il link deve essere di questo tipo
<a href="cerca.php?pag=<?php echo $i; ?>&primo_valore=<?php echo $primo_valore; ?>&secondo_valore=<?php echo $secondo_valore; ?>>"><?php echo $i; ?></a>
- $pagname sarebbe l'equivalente del mio $pagina (quindi devo modificarlo con $pagina)