• User

    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

    1. inserire il menù di ricerca che in "tutti gli annunci" non c'è
    2. 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 />
        &nbsp;&nbsp;<?php print $marca; ?><br /><br />
        &nbsp;&nbsp;<?php print $modello; ?><br /><br />
        &nbsp;&nbsp;<?php print $anno; ?><br /><br />
        &nbsp;&nbsp;<?php print $mese; ?><br /><br />
        &nbsp;&nbsp;<?php print $stato; ?><br /><br />
        &nbsp;&nbsp;<?php print $prezzo; ?><br /><br />
        &nbsp;&nbsp;>> <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 />
        &nbsp;&nbsp;<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 } ?>
    

  • User

    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:&nbsp;&nbsp;
    <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 />
        &nbsp;&nbsp;<?php print $marca; ?><br /><br />
        &nbsp;&nbsp;<?php print $modello; ?><br /><br />
        &nbsp;&nbsp;<?php print $anno; ?><br /><br />
        &nbsp;&nbsp;<?php print $mese; ?><br /><br />
        &nbsp;&nbsp;<?php print $stato; ?><br /><br />
        &nbsp;&nbsp;<?php print $prezzo; ?><br /><br />
        &nbsp;&nbsp;>> <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 />
        &nbsp;&nbsp;<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 } ?>
    

  • User

    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:&nbsp;&nbsp;
    <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');
    ?>
    

  • Super User

    puoi postare il file paginazione.php?


  • User

    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! :yuppi:


  • User

    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! :yuppi:


  • Super User

    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 ''


  • User

    ...quindi come dovrei modificarlo?? Mi intreccio con quelle virgolette e quegli apici 😞


  • Super User

    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>
    

  • User

    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

    1. $pagname sarebbe l'equivalente del mio $pagina (quindi devo modificarlo con $pagina)
    2. $i non ho capito cosa sia
    3. $marca ok va bene
    4. $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! :rollo:

  • Super User

    @Eddieangel said:

    1. $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:
    2. $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:
    3. $marca ok va bene
      Ok
      @Eddieangel said:
    4. $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>