php - 如何在 PHP/MySQL 中按价格范围过滤?

标签 php mysql

我正在尝试创建一个函数来根据价格范围过滤掉产品。

用户可以一次选择多个价格范围(通过复选框)。复选框看起来像这样:

    <label>0-500 <input type="checkbox" name="price[]" value="1"/></label>
    <label>500-1000 <input type="checkbox" name="price[]" value="2"/></label>
    <label>1000-2000 <input type="checkbox" name="price[]" value="3"/></label>

当用户提交选中了 2 个复选框的过滤器表单时,它会向我发送一个如下所示的数组 [0 => "2", 1 => "3"] .

然后我会通过 SQL 查询过滤产品(SELECT * FROM ... WHERE price > 500 AND price < 2000//非常简单)。

问题是我不知道如何正确地从数组中获取这些价格范围,其中没有具体包含它。

非常感谢您的帮助。 提前致谢!

最佳答案

试试这个,

//parameter like [0 => "2", 1 => "3"]
function getQuery($form){
    $query = "SELECT * FROM yourtable WHERE false";
    if (in_array("1", $form)){
        $query .= " OR price >= 0 AND price <= 500";
    }
    if (in_array("2", $form)){
        $query .= " OR price >= 500 AND price <= 1000";
    }
    if (in_array("3", $form)){
        $query .= " OR price => 1000 AND price <= 2000";
    }
    return $query;
}

该函数将根据您的复选框数组返回查询

编辑

(用Aris idea)

//parameter like [0 => "500-1000", 1 => "1000-2000"]

function getQuery($form){
    $query = "SELECT * FROM yourtable WHERE false";
    foreach ($form as $range){
        $ranges = explode("-", $range);
        $from = ranges[0];
        $to = ranges[1];
        $query .= " OR BETWEEN $from AND $to";
    }
    return $query;
}

关于php - 如何在 PHP/MySQL 中按价格范围过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27757502/

相关文章:

javascript - 使用 header 重定向时给 div 一个样式

php - HTML表单使用PHP写入MySQL

PHP - 如果自动加载,为什么要使用依赖注入(inject)?

MySQLdump 到 WinSCP 或类似的目录

mysql - 在 mysql 上为 group by + SUM 查询建立索引

php - 在 symfony 2 的 Controller 内加载文件内容

php - Zend Regex > 路由模块问题

mysql - Access 2010 IIF 查询中的语法

Java MySQL登录系统确定用户

php - 使用 PHP 从数据库表中按日期搜索数据?