【问题标题】:How to create php pagination based on amount of MySQL results in an iframe without page refresh?如何在不刷新页面的情况下根据 MySQL 结果的数量创建 php 分页?
【发布时间】:2015-10-21 08:13:32
【问题描述】:

我正在尝试创建一些分页,但我不确定最好的方法。目前,查询正在类文件中运行,然后将结果打印在 iframe 中。分页要根据结果的数量,目前超过一万,所以结果需要几秒钟才能加载到 iframe 中。它目前正在使用 JQuery 数据表插件。我知道数据表有分页,但有人在某些时候禁用了它,出于所有意图和目的,我无法使用它。所以我需要想出一个替代方案。

我认为我很聪明,对结果进行计数,然后将该计数存储在会话变量中,然后以此为基础进行分页,将其限制为每页 999 个结果,但由于变量的存储和查询运行同时发生,页面需要重新加载以显示任何分页,我不想重新加载查询。 (对不起那里的连续/长句)

短版:我需要一种方法来异步运行查询、获取计数并同时显示分页,但我不知道该怎么做。我对 JQuery 和 AJAX 的来龙去脉不是很熟悉,但这就是我的解决方案所在吗?如果需要,我可以显示代码,但我需要更多指导而不是语法帮助。

谢谢

【问题讨论】:

  • 您对 PHP 和 SQL 查询字符串的熟悉程度如何?
  • 很熟悉,有什么推荐的?
  • 让我们看看你到目前为止的代码,小提琴会很有帮助

标签: php jquery mysql pagination datatables


【解决方案1】:

您可以使用寄存器的“计数”生成一个 json,然后您可以将结果除以每页的寄存器数量,例如,您在表“联系人”中有 20 个寄存器,并且您希望每页看到 5 个,你可以除以 20/5,它给了你喜欢的结果 4,这将是页数;那么你将在 sql 中使用'limit'和'offset'来定义你想要多少个寄存器,以及从哪里开始搜索应该从偏移量开始。

【讨论】:

  • 其实我已经算过了,只是没有在我想要的时候出现,但很高兴看到我的计算思维过程是正确的!我没想过要使用 JSON,坦率地说,我从来没有真正使用过它。我会试一试,看看我能想出什么。谢谢!
  • 欢迎您!如果你使用 cakephp,它有 'paginator' 方法来自动分页,如果你使用其他框架它也应该有!!
【解决方案2】:

所以,我没有运行它来检查语法,但它应该很好。这个查询在 PHP 中与您的 AJAX 调用结合使用时,应该返回您需要的所有内容并处理分页,当使用每页变量定义的结果时,这也将返回页数。

$resultsPerPage = (isset($_GET['resultsPerPage'] ? $_GET['resultsPerPage'] : 20);
$currentPage = (isset($_GET['page'] ? $_GET['page'] : 1);
$sql = "SELECT *, (COUNT(ID)/". $resultsPerPage .") AS pages FROM table OFFSET ". (($currentPage - 1) * $resultsPerPage) ." LIMIT ". $resultsPerPage;

我想这就是你要找的东西?剩下的就是格式化和实现了。

注意省略了实际的 SQL 命令,因为我不知道您使用的是什么引擎或方法。

【讨论】:

    【解决方案3】:

    在这种情况下,数据表分页不应该被禁用,您应该重新启用它,并关注真正的问题:您有 10,000 行,您应该着眼于实现数据表的服务器端解决方案而不是客户端, 它特别说 10,000 是让它可行的神奇数字

    【讨论】:

    • 我试过启用它,根据datatable文件设置为启用。我假设在我以其他方式禁用它之前,其他人正在处理代码。我决定根本不使用数据表,只在服务器端运行整个事情。谢谢。
    • 我会,但是 datatables 有很多子文件夹,老实说,我什至不知道分页功能在哪里或如何被关闭。我决定制作自己的数据表形式,效果很好。
    • 很高兴你在锻炼,但数据表 (javascript) 应该只包含一个文件,除非你使用编辑器,我们在这里谈论的是同一件事吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2018-11-11
    • 2017-05-11
    相关资源
    最近更新 更多