problema con ricerca prezzo minimo

Ciao a tutti,

da un pò di tempo utilizzo un metodo per fare le ricerca attraverso un form. Ora mi sono inbattuta in un problema che non riesco a risolvere.

Rissumendo: ho un form di ricerca con provincia, tipologia e prezzo minimo.

Se seleziono provincia e/o tipologia il risultato è quello cercato mentre se cerco per prezzo non trova mai niente -->>SBAGLIA!!

<form name="theForm" onSubmit="return form_validator(this)" method="post" action="lista.php" target="nuova">

<select class="input_text"  name="prezzo_min" size="1" >

<option value="" selected>Seleziona Prezzo</option>

<option value="prezzo_min <= 20">da 0 a 20</option>

<option value="prezzo_min >= 20 AND prezzo_min <= 50">da 20 a 50</option>

<option value="prezzo_min >= 50 AND prezzo_min <= 80">da 50 a 80</option>

<option value="prezzo_min >= 80 AND prezzo_min <= 110">da 80 a 110</option>

<option value="prezzo_min >= 110">oltre 110</option>

</select>

LISTA.php

            

//la variabile che contiene il numero di pagina la chiamiamo 'page' 

if (!isset($_REQUEST['page']) || $_REQUEST['page'] <= 0) $_REQUEST['page'] = 1; 

//quante righe far vedere per pagina 

$rows_per_page = 20; 

   $ordine = "  ORDER BY RAND() ";

   

   $select = "SELECT annuncio_agritur.id, localita, annuncio_agritur.sigla_prov, testo, prezzo_min,prezzo_max, tipologiaid, gestoreid, name, id_annuncio, nome_file, nome_prov";

   $from   = " FROM annuncio_agritur, tipologia_agritur,tabella_immagini_small,province";

   $where  = " WHERE tipologiaid=tipologia_agritur.id AND id_annuncio=annuncio_agritur.id AND annuncio_agritur.sigla_prov=province.sigla_prov";

   

   $aid = $_REQUEST['aid'];

   if ($aid != '') { // e selezionata una tipologia

     $where .= " AND tipologiaid='$aid'";

   }

      

   

   $sigla_prov = $_REQUEST['sigla_prov']; 

   if ($sigla_prov != '') { 

     $where .= " AND annuncio_agritur.sigla_prov = '".addslashes($sigla_prov)."'"; 

   } 

   $prezzo_min = $_REQUEST['prezzo_min']; 

   if ($prezzo_min != '') { 

     $where .= " AND prezzo_min = '".addslashes($prezzo_min)."'"; 

   } 

   

   

   

   $where .= $ordine; 

   

      

   $result = mysql_query($select . $from . $where); 

   $result2 = mysql_query($select . $from . $where); 

      

   $num = mysql_num_rows($result);

   

   if (!$result) echo "Erroreeee MySQL: ".mysql_error(); 

   else { 

          

      $ordine = "  ORDER BY RAND() ";

          

         //le pagine totali 

         $total_pages = ceil($num/$rows_per_page); 

         

          

         //mettiamo in una variabile la lista dei numeri delle pagine 

         $pages_link = page_list($total_pages, $_REQUEST['page'], "page", "", $_SERVER['PHP_SELF'], 7, 1); 

   

   

         $select = "SELECT annuncio_agritur.id, localita, annuncio_agritur.sigla_prov, testo, prezzo_min,prezzo_max, tipologiaid, gestoreid, name, id_annuncio, nome_file, nome_prov";

         $from   = " FROM annuncio_agritur, tipologia_agritur,tabella_immagini_small,province";

         $where  = " WHERE tipologiaid=tipologia_agritur.id AND id_annuncio=annuncio_agritur.id AND annuncio_agritur.sigla_prov=province.sigla_prov";

         

         $aid = $_REQUEST['aid'];

         if ($aid != '') { // e selezionata una tipologia

           $where .= " AND tipologiaid='$aid'";

         }

            

         

         $sigla_prov = $_REQUEST['sigla_prov']; 

         if ($sigla_prov != '') { 

           $where .= " AND annuncio_agritur.sigla_prov = '".addslashes($sigla_prov)."'"; 

         } 

         $prezzo_min = $_REQUEST['prezzo_min']; 

         if ($prezzo_min != '') { 

           $where .= " AND prezzo_min = '".addslashes($prezzo_min)."'"; 

         } 

   

         $where .=  $ordine;

         $where .= " LIMIT ".(($_REQUEST['page'] - 1) * $rows_per_page).", ".$rows_per_page;    

         $result = mysql_query($select . $from . $where); 

             

         $result2 = mysql_query($select . $from . $where); 

      

         

         if (!$result) echo "Errore MySQL: ".mysql_error(); 

         else { 

                           

                           if ($total_pages > 1)

                           echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"760\" align=\"center\">";

                           echo "<tr>";

                           echo "<td align=center valign=top height=10><font color=#000000 size=2 face=\"Tahoma,Verdana, Arial, Helvetica, sans-serif\">$pages_link</font></td>";

                           echo "<td width=150 align=right><div align=right><a href=\"#\" onClick=\"window.close();\"><font color=#000000 size=2 face=\"Tahoma,Verdana, Arial, Helvetica, sans-serif\"><strong>Torna alla ricerca</strong></font></a></div></td>";

                           echo "</tr>";

                           echo "</table>";

                           

                           $num=@mysql_num_rows($result); 

         

         

         

         

                                    if($num<1)

                                    {

                                    

                                       echo "<table width=\"760\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">"; 

                                       

                                       echo "<tr bgcolor=\"#FFFFFF\">";

                                       echo "<td valign=top>";

                                       echo "<div align=\"center\"><br><br><br><br>";

                                       echo "<font color=#000000><b> NESSUN RISULTATO <br><br><br><br></b></font>";

                                       echo "</div>";

                                       echo "</td>";

                                       echo "</tr>";

                                       echo "</table>";

                                                                  

                                                                  

                                    }

                                 

                                    elseif ($num>=1)

                                    {

                     

                        ?>

                        <table width="760" border="0" align="center" cellpadding="0" cellspacing="1">

                          <tr bgcolor="#FFCD36">

                                                         

                             <td >

                             <div align="center">

                             <?php

                             $get_string = "strutture_turistiche_list.php?searchtex=".$_REQUEST['searchtex']."&aid=".$_REQUEST['aid']."&searchte=".$_REQUEST['searchte']."&searchtext=".$_REQUEST['searchtext']."&prezzo_min=".$_REQUEST['prezzo_min']."&sigla_prov=".$_REQUEST['sigla_prov']."&localita=".$_REQUEST['localita']."&ordine=prezzo_min";             

                             echo "<a href=\"".$get_string."\"><font color=\"#000000\">PREZZO</font><img src=\"giu.jpg\" border=0></a>"; 

                             ?>

                             </div>

                             </td>

                             <td >

                             <div align="center">

                             <?php

                             $get_string = "strutture_turistiche_list.php?searchtex=".$_REQUEST['searchtex']."&aid=".$_REQUEST['aid']."&searchte=".$_REQUEST['searchte']."&searchtext=".$_REQUEST['searchtext']."&prezzo_min=".$_REQUEST['prezzo_min']."&sigla_prov=".$_REQUEST['sigla_prov']."&localita=".$_REQUEST['localita']."&ordine=aid";             

                             echo "<a href=\"".$get_string."\"><font color=\"#000000\">TIPOLOGIA</font><img src=\"giu.jpg\" border=0></a>"; 

                             ?>

                             </div>

                             </td>

                                                           </tr>

                                <?php }    ?>

         

                                <?php  

         while ($data = mysql_fetch_array($result)) {

                       

           $id = $data['id'];

           $sigla_prov = htmlspecialchars($data['sigla_prov']);

           $prezzo_min = htmlspecialchars($data['prezzo_min']);

           $prezzo_max = htmlspecialchars($data['prezzo_max']);           

           

           $descrizione = htmlspecialchars($data['descrizione']);

         

           $name = htmlspecialchars($data['name']);

           

           $num=($id*8)-7;   

           $foto= "<img src=\"mostra.php?id=$num\" width=40 height=40>";

         

           echo "<td><center>$prezzo_min / $prezzo_max &#8364;</center></td>";

           echo "<td><center>$name</center></td>";

           echo "<td><center><a href='desc.php?id=$id' target=_blank><font color=#000000> Descrizione </font> </a></center></td>";

           echo "</tr>";  

         }

?>

            </table>         

         

         <?

         }  

    }

      

?>     

   

PAGE_LIST
function page_list_strutture($total_pages, $page, $name_page, $get_string, $url, $pages_shown = 5, $show_20 = 0, $show_header = 1, $show_first_and_last = 1, $show_current = 1) { 

     

 

 $get_string = "?searchtex=".$_REQUEST['searchtex']."&aid=".$_REQUEST['aid']."&prezzo_min=".$_REQUEST['prezzo_min']."&sigla_prov=".$_REQUEST['sigla_prov']."&localita=".$_REQUEST['localita']."&ordine=".$_REQUEST['ordine']; 

ecc...

mi sapete indicare quale potrebbe essere la causa del problema che ho con il prezzo minimo!!!

Grazie mille!!!

 :bye:

inviato 10 anni fa
stellina
X 0 X

Hai verificato che il valore della select arrivi correttamente alla pagina di ricerca?

risposto 10 anni fa
LonelyWolf
X 0 X

Leggendo in fretta (ma perché posti tutto? Individua il codice che dà problemi in modo che ti possiamo aiutare meglio) ho notato:

1) che usi $_REQUEST al posto di $_POST senza validare i dati;

2) anche se il method del form è post alla fine scrivi

$get_string = "?searchtex=".$_REQUEST['searchtex']."&aid=".$_REQUEST['aid']."&prezzo_min=".$_REQUEST['prezzo_min']."&sigla_prov=".$_REQUEST['sigla_prov']."&localita=".$_REQUEST['localita']."&ordine=".$_REQUEST['ordine']; 
ecc...

come se li passassi via GET.

risposto 10 anni fa
usecram
modificato 10 anni fa
X 0 X

ho risolto,

il problema era nella query del prezzo

andava scritta così

         $prezzo_min = $_REQUEST['prezzo_min']; 

         if ($prezzo_min != '') { 

           $where .= " AND $prezzo_min"; 

         }

scusa se ho postato tutto ma in effetti non riuscivo a capire in che punto si trovava il problema ..

grazie di tutto!!

risposto 10 anni fa
stellina
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda