首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php三下拉过滤器

问php三下拉过滤器
EN

Stack Overflow用户
提问于 2012-06-05 20:28:47
回答 1查看 282关注 0票数 0

我有一个名为分类表,它包含以下内容:

  • title

  • description

  • state_id

  • city_id

  • cat_id

  • id

这是从数据库中动态填充的。

代码语言:javascript
复制
<form name="theForm" method="post" action="advanced_search.php">
    <input type="submit" name="Submit" value="Search" />
    <select name="categories" >
        <option value=""> Select Category</option>
    </select>
    <select name="state" >
        <option value=""> Select state</option>
    </select>
    <select name="city" >
        <option value=""> Select city</option>
    </select>
    ...

当我选择一个类别并单击“搜索”时,将显示该类别的结果。如果我选择了一个类别和一个状态,那么我希望它过滤到指定的类别和状态。如果选择了一个城市,也应该发生同样的情况。

例:如果我选择明尼阿波利斯市的就业类别,那么搜索应该被过滤到该城市的所有就业岗位。

使用下面的代码,需要选择所有下拉列表才能使过滤器正常工作。如果我想以指定的状态显示类别的所有结果,该怎么办?如果我只想按类别过滤呢?

代码语言:javascript
复制
if (isset($_POST['Submit'])) {
    $state = $_POST['state'];
    $city = $_POST['city'];
    $categories = $_POST['categories'];

    $select = "SELECT * FROM classifieds";
    $where = " WHERE ( authorized = '1')";

    $where .= " AND (cat = '" . $categories . "' AND state_id = '" . $state . "' AND city_id = '" . $city . "')";

    $where .= " AND (state_id = '" . $state . "' )";
    $where .= " AND (city_id = '" . $city . "' )";
    $q = $select . $where . ' ORDER BY date DESC';

有人能陪我走一圈吗?

EN

回答 1

Stack Overflow用户

发布于 2012-06-05 20:32:39

只有在选择了某项内容时才添加where子句:

代码语言:javascript
复制
$select = "SELECT * FROM classifieds";
$where = " WHERE ( authorized = '1')";
if($categories) {
    $where .= " AND (cat = '" . $categories . "' )";
}
if($state) {
    $where .= " AND (state_id = '" . $state . "' )";
}
if($city) {
    $where .= " AND (city_id = '" . $city . "' )";
}
$q = $select . $where . ' ORDER BY date DESC';
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10904449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档