2013-03-18 74 views
-1

我之前問過這個問題,但是因爲它不清楚,所以沒有發佈,所以現在我試圖以明確的方式提問。在mysql數據庫中搜索多個變量

我有一家汽車服務公司,所以我們也出售輪胎,並且我想在網站上創建一個可過濾的搜索方法,例如,客戶將從選項中搜索特定值,就像他將搜索所有制造商他想要夏季輪胎,寬度爲150,輪廓爲40,直徑爲16,其餘的他將選擇全部選項。等等...

HTML代碼:

<label for="manufacturer"><strong>manufacturer:</strong></label> 
           <select id="manufacturer"> 
            <option selected="selected">All</option> 
            <option value="option1">BF Goodrich</option> 
            <option value="option2">Continental</option> 
            <option value="option3">Michelin</option> 
            <option value="option4">Pirelli</option> 
           </select> 
          </li> 
          <li> 
           <label for="model"><strong>tyretype:</strong></label> 
           <select id="model"> 
            <option selected="selected">All</option> 
            <option value="option1">Summer tyre</option> 
            <option value="option2">winter tyre</option> 
            <option value="option3">winter tyre 2</option> 
           </select> 
          </li> 
          <li class="select-two"> 
           <div> 
            <label for="min-price"><strong>width:</strong></label> 
            <select id="min-price"> 
             <option selected="selected">All</option> 
             <option value="option1">145</option> 
             <option value="option2">150</option> 
             <option value="option3">155</option> 
             <option value="option3">160</option> 
            </select> 
           </div> 
           <div> 
            <label for="max-price"><strong>Profil:</strong></label> 
            <select id="max-price"> 
             <option selected="selected">All</option> 
             <option value="option1">30</option> 
             <option value="option2">35</option> 
             <option value="option3">40</option> 
             <option value="option3">45</option 
            </select>     
           </div> 
          </li> 
          <li class="select-two"> 
           <div> 
            <label for="min-price"><strong>Diameter:</strong></label> 
            <select id="min-price"> 
             <option selected="selected">All</option> 
             <option value="option1">13"</option> 
             <option value="option2">14"</option> 
             <option value="option3">15"</option> 
             <option value="option3">16"</option> 
             <option value="option3">17"</option> 
             <option value="option3">18"</option> 
             <option value="option3">19"</option> 
            </select> 
           </div> 
           <div> 
            <label for="max-price"><strong>Maximum load:</strong></label> 
            <select id="max-price"> 
             <option selected="selected">All</option> 
             <option value="option1">75</option> 
             <option value="option2">76</option> 
             <option value="option3">77</option> 
             <option value="option3">78</option> 
             <option value="option3">79</option> 
             <option value="option3">80</option> 
             <option value="option3">81</option> 
             <option value="option3">82</option> 
             <option value="option3">83</option> 
             <option value="option3">84</option> 
            </select>     
           </div> 
          </li> 

          <li> 
           <label for="engine"><strong>Maximum speed:</strong></label> 
           <select id="engine"> 
            <option selected="selected">All</option> 
            <option value="option1">Q = max 160 km/h</option> 
            <option value="option2">R = max 170 km/h</option> 
            <option value="option3">S = max 180 km/h</option> 
            <option value="option3">T = max 190 km/h</option> 
            <option value="option3">H = max 210 km/h</option> 
           </select> 
          </li> 

在MySQL數據庫我有一個稱爲輪胎表,其包括以下各欄,

生產 tyretype, 寬度,長度 , profil, 直徑, 最大負載, 最大速度, tyreprice。

我不能拿出很好的搜索查詢,包括上面列出的所有搜索選項,並從MySQL數據庫中正確地獲取信息。

+0

我搜索PHP的查詢例子,但我無法找到我想要的東西。所以我想也許有人可以幫助我。 – casey 2013-03-19 00:03:05

回答

-1
$query = mysql_query("SELECT * FROM tyres WHERE manufacturer='".$_POST['manufacturer']."' AND tyretype='".$_POST['tyretype']."' AND ...etc.."); 

更多信息:http://dev.mysql.com/doc/refman/5.0/en/where-optimizations.html 如果您有任何問題,我在這裏:)

如果他選擇所有選項,您做出是否是這樣的:

<? 
if ($_POST['tyretype'] == "all") 
{ // then do the same query you can see above without this part "AND tyretype='".$_POST['tyretype']."'" 
} 
?> 
+0

這不符合'ALL'的情況 – 75inchpianist 2013-03-18 23:46:58

+0

沒有。數據庫中的manufature列不會將'ALL'作爲數據值。你需要有選擇地添加WHERE子句iff選擇不是'ALL' – 75inchpianist 2013-03-18 23:51:18

+0

編輯,對不起我現在只理解 – 2013-03-18 23:53:48

0
$sql = "SELECT * FROM tyres WHERE 1==1"; 

if ($_POST['manufacturer'] != 'ALL'){ 
    $sql = $sql . ' AND manufacturer==' . $_POST['manufacturer']; 
} 
if ($_POST['model'] != 'ALL'){ 
    $sql = $sql . ' AND model==' . $_POST['model']; 
} 
//etc etc 

所以基本上你只需要在你的WHERE裏添加AND子句,只有當選擇了'ALL'以外的其他東西。

你需要的值添加到您的默認情況下所有的選擇菜單,如下所示:

<select id="manufacturer"> 
    <option value ="ALL" selected="selected">All</option> 
    <option value="option1">BF Goodrich</option> 
    <option value="option2">Continental</option> 
</select>