之前我问过这个问题,但它已经关闭了,因为帖子不清楚,无论如何我现在试图以明确的方式提问。
我有一家汽车服务公司,所以我们也销售轮胎,我想在网站上创建一个可过滤的搜索方法,例如客户将从选项中搜索特定值,比如他将搜索所有制造商,但他想要夏季轮胎,宽度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数据库中我有一个名为tire的表,其中包含以下列,
生产 tyretype, 宽度, 长度, PROFIL, 直径, 最大负荷, 最大速度, tyreprice。
我无法提出良好的搜索查询,包括上面列出的所有搜索选项,并从mysql数据库中正确获取信息。
答案 0 :(得分: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'之外的其他内容时才会发生。
您需要为默认的ALL选择菜单添加一个值,如下所示:
<select id="manufacturer">
<option value ="ALL" selected="selected">All</option>
<option value="option1">BF Goodrich</option>
<option value="option2">Continental</option>
</select>
答案 1 :(得分:-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']."'"
}
?>