Php 从分页搜索结果生成计数器。。。?

Php 从分页搜索结果生成计数器。。。?,php,mysql,search,Php,Mysql,Search,我正在创建易趣风格的搜索窗格,允许用户根据特定条件缩小搜索结果集。例如: 标签 文献8 小说4 英语4 美国3 非小说类2 具有该属性的结果数在括号中。最初,我通过将以下代码放入显示结果循环来构建计数器: if(isset($tags[$row['tags']])) { $tags[$row['tags']]++; } else { $tags[$row['tags']] = 1; } 然后我对结果进行分页,结果停止了工作-查询只返回您所在页面的足够数据,因此计数器只表示该页面上的结果

我正在创建易趣风格的搜索窗格,允许用户根据特定条件缩小搜索结果集。例如:

标签

文献8 小说4 英语4 美国3 非小说类2

具有该属性的结果数在括号中。最初,我通过将以下代码放入显示结果循环来构建计数器:

if(isset($tags[$row['tags']])) {
    $tags[$row['tags']]++;
} else {
$tags[$row['tags']] = 1;
}
然后我对结果进行分页,结果停止了工作-查询只返回您所在页面的足够数据,因此计数器只表示该页面上的结果


有人能推荐另一种方法吗?

您必须对标记运行第二次查询,按标记分组计数*以获得每个标记的总数

编辑:

。这是我新买的,但看起来像你想要的

用SELECT SQL\u CALC\u FOUND\u行开始查询,然后用SELECT FOUND\u行继续查询


然而,这需要另一个查询。请提供有关分页方法的更多信息。

标记只是几个标准之一。如果可能的话,我希望避免额外的查询。您的另一个选择是不受限制地执行完整的查询。然后,您可以对标记进行计数,并在PHP中执行分页逻辑。这将是一个更重的方法,至少在PHP中(如果不是在数据库中的话),但它应该更灵活。你是对的,但这是一个艰难的调用-额外的查询与在每个页面上获取整个数据集相比。我想知道其他显示这种信息的网站是如何构造代码的。我知道你的意思。这一定是一个常见的问题。FOUND_ROWS这件事真的很有帮助,但我没有看到任何关于如何将它与GROUP BY配对的内容。我使用LIMIT进行分页:$from=$page*$results_per_page-$results_per_page$sql.=限制$from.,.$results\u每页;
SELECT COUNT(*) FROM books WHERE tagid=$tagid