php - 细化搜索结果 [PHP/MySQL]

标签 php mysql search

我正在创建一组搜索 Pane ,允许用户在提交查询后调整其结果集。我们从结果中提取某些字段中常见的值,并按照受欢迎程度的顺序显示它们 - 你们都在 eBay 上见过这种事情。因此,如果结果中的很多行是在 2009 年创建的,我们将能够单击“2009”并仅查看该年创建的行。

您认为应用这些过滤器的最有效方法是什么?我的工作解决方案是丢弃结果中与额外参数不匹配的条目,例如:

while($row = mysql_fetch_assoc($query)) {
    foreach($_GET as $key => $val) {
        if($val !== $row[$key]) {
            continue 2;
        }
    }
    // Output...
}

希望此方法只在生效时查询数据库一次,因为添加过滤器不会更改查询 - MySQL 可以缓存并重用一个数据集。缺点是它使分页有点令人头疼。

明显的替代方案是在初始查询中构建任何附加条件,例如:

$sql = "SELECT * FROM tbl MATCH (title, description) AGAINST ('$search_term')";
foreach($_GET as $key => $var) {
    $sql .= " AND ".$key." = ".$var;
}

有充分的理由这样做吗?或者还有更好的选择吗?也许是临时表?非常感谢任何想法!

最佳答案

我会继续重新查询数据库,将所有内容放在一起并减少分页噩梦。

您是通过 AJAX 执行此操作吗?

关于php - 细化搜索结果 [PHP/MySQL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474566/

相关文章:

php - 在 PHP 中通过 cURL 从表单 POST 发送文件

java - 方法返回对象列表的 NULL 值

mysql - 选择至少包含搜索查询的行

javascript - 在 <body> 中打开其他 URL 使用 hash # without leave URL

php - 什么是最好的 php DOM 2 数组函数?

javascript - document.getElementById 与 SMARTY 变量

php - 如何混合来自URL php的两位数字

php - 替换并强制转换以进行比较

javascript - 从用户输入中获取 JS 对象数据

search - 在AVL树中找到两个数字之间的最小间隔