2012-09-07 223 views
0

我試圖做一個房地產網站,我有一些搜索表單的困難。Mysql根據選擇標籤檢索數據選項標籤

表單有5個字段:price_from; price_to; number_rooms,location和numb_square_meters。 數據庫有5列:id,價格,位置,numb_square_meters,number_rooms。

對於價格字段,我使用輸入類型字段。 對於numb_rooms,我使用選擇類型字段的選項,如(維拉,公寓,4間臥室的公寓......諸如此類和所有選項選項)。 位置和square_meters與numb_rooms相同。

問題是這樣的居然有不止一個:

  1. 當我選擇的選項,在我的表格LOCATION字段「所有選項」我希望它從SQL數據庫,如果檢索每個位置不檢索其他選項

  2. 如果讓我們說用戶填寫價格字段,但其他人仍然選擇所有選項選項,我希望它只檢索在該價格範圍內的行,無論房間的位置數量或平方米

這我的代碼的一部分...

<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>"; 
+0

我我不確定你從哪裏複製這個例子,但是從上到下都是錯誤的。例如,變量名稱與p $ _POST鍵不匹配,header(「content-type:image.jpg」)不應該存在,使用RAW post值查詢數據庫是非常糟糕的想法。 – Nazariy

回答

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 '"));