多变量在mysql数据库中搜索

时间:2013-03-18 23:34:52

标签: php

之前我问过这个问题,但它已经关闭了,因为帖子不清楚,无论如何我现在试图以明确的方式提问。

我有一家汽车服务公司,所以我们也销售轮胎,我想在网站上创建一个可过滤的搜索方法,例如客户将从选项中搜索特定值,比如他将搜索所有制造商,但他想要夏季轮胎,宽度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数据库中正确获取信息。

2 个答案:

答案 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']."'"
}
?>