当一个字段为空时搜索功能

时间:2016-11-23 02:50:37

标签: php mysql

当用户留下空白字段时,我需要知道是否有更有效的搜索方式

<select name="department">
    <option value="">Select Department</option>
    <option value="value1">Value1</option>
    <option value="value2">Value2</option>
</select>
<select name="course">
    <option value="">Select Course</option>
    <option value="value1">Value1</option>
    <option value="value2">Value2</option>
</select>

我的问题是我该怎么做? 我自己的结论是使用各种

if(isset($_GET['dept']) && !isset)

依此类推每个都有自己的SELECT * FROM....,但这看起来很麻烦而且不那么动态,特别是如果我决定添加第三个或第四个字段并且它将是一个全新的附加集合IFS。 有没有更有效的方法来做到这一点?

也许在MySQL?

1 个答案:

答案 0 :(得分:1)

就像我在评论部分所说,我不知道这是否更有效,但我认为它更容易阅读,并有助于减轻改变陈述所有条件的痛苦。我没有找到关于这类事情的教程,但这里有一个我曾经为一家房地产公司做过的事情的修改例子:

if(isset($_POST['search'])){
    $prov_query = '';
    $city_query = '';
    $build_query = '';
    $trans_query = '';
    $amb_query = '';
    $prov = $_POST['province'];
    $city = $_POST['city'];
    $build = $_POST['building'];
    $trans = $_POST['transaction'];
    $amb = $_POST['amb'];
    if($prov != ''){
        $prov_query = "`province`='$prov'";
    }
    if($city != ''){
        $city_query = "`city`='$city'";
    }
    if($build != '' && $build != '0'){
        $build_query = "AND `building`='$build'";
    }
    if($trans != '' && $trans != '0'){
        $trans_query = "AND `transaction`='$trans'";
    }
    if($amb != ''){
        if($amb == 5){
            $amb_query = "`amb`>='5'";
        } else {
            $amb_query = "`amb`='$amb'";
        }
    }
    $full_search_query = "SELECT * FROM `properties` WHERE $prov_query AND $city_query $edif_query $trans_query AND $amb_query ORDER BY `id` DESC";
}

请注意,对于搜索引擎,您可能需要使用

"`column` LIKE '%$value%'"

或类似于SQL查询的内容,但我的示例需要完全匹配。

这有一些需求调整,你的条件肯定会与这些不同,但我只是想分享这个想法。你知道,如果你想添加更多选项(列),你需要做的就是添加一组符合你要求的if,然后相应地将变量添加到最终的字符串中。希望这至少有一点帮助。