Mysql根据select -option标签检索数据

时间:2012-09-07 20:23:36

标签: mysql select option

我正在尝试建立一个房地产网站,我在搜索表单上遇到了一些困难。

表单有5个字段:price_from; price_to; number_rooms,location和numb_square_meters。 数据库有5列:id,price,location,numb_square_meters,number_rooms。

对于价格字段,我使用输入类型字段。 对于numb_rooms,我使用一个选择类型字段,其中包括(vila,condo,4卧室公寓......类似的东西和所有选项选项)。 对于location和square_meters,与numb_rooms的方法相同。

问题是这实际上有不止一个:

  1. 当我在表单的LOCATION字段中选择“ALL OPTIONS”选项时,如果不检索其他选项之一,我希望它从SQL DB中检索每个位置

  2. 如果让我们说用户填写价格字段但其他选项仍然选中了所有选项,我希望它只检索该价格范围内的行,无论房间的位置数量是多少平方米

  3. 这是我的代码的一部分...

     <form method="post" action="index.php" enctype="multipart/form-data">
     <input type="hidden" name="id">
     Price <input type="text" name="price">
     Price2 <input type="text" name="price2" />
    
    
    
     Square_meters<input type="text" name="Square_meters">
    
      Location<select name="Location">
     <option>All options</option>
     <option>Bucuresti</option>
     <option>Iasi</option>
     <option>Brasov</option>
     <option>Focsani</option>     
      </select>
        Numb_rooms<select name="Numb_rooms">
     <option>All options</option>
     <option>Garsoniera</option>
     <option>2 Camere</option>
     <option>3 Camere</option>
      <option>4 Camere</option>
     <option>Vila</option>     
     </select>
       <input type="submit" name="send" value="Search">
      </form>
    <?php
     header("content-type: image.jpg");
    
    
    
      if(isset($_POST['send']))
      {
       require_once("conexiune.php"); (this is my conect to sql database script)
      $id = $_POST['id'];
      $price = $_POST['price'];
      $price2 = $_POST['price2'];
      $square_m = $_POST['Square_meters'];
      $location = $_POST['location'];
      $numb_rooms = $_POST['Numb_rooms'];
       $selectie = mysql_query("SELECT * FROM apartamente WHERE id = '$id' && Pret>='$price'&& Pret<='$price2' && Location = '$location' &&     Square_meters='$Square_meters' && Numb_rooms = '$Numb_rooms ' ");
    
    
      while($row = mysql_fetch_array($selectie,MYSQL_ASSOC))
          {
    
          print"<tr><td>"; 
          print $row['id']; 
          print"</td><td>"; 
          print $row['Pret'];
          print"</td><td>";
          print $row['Nr_camere'];
          print"</td><td>";
          print $row['Suprafata'];
          print"</td><td>";
          print $row['Locatie'];
          print"</td><td>";
          print $row['Descriere'];
          print"</td><td>";
    

1 个答案:

答案 0 :(得分:0)

忽略您为SQL注入攻击留下更多选择的事实,您可以执行以下操作:

$selectie = mysql_query("SELECT * FROM apartamente WHERE id = '$id' 
       && Pret>='$price'&& Pret<='$price2'" . ($location == "ALL OPTIONS" ? "" : " 
       && Location = '$location'") . ($Square_meters == "ALL OPTIONS" ? "" : " 
       && Square_meters='$Square_meters'") . ($Numb_rooms == "ALL OPTIONS" ? "" : " 
       && Numb_rooms = '$Numb_rooms '"));