【问题标题】:PHP MySQL pagination resultsPHP MySQL分页结果
【发布时间】:2012-05-19 14:27:10
【问题描述】:

我一直在摆弄分页并设法获得一个基于脚本工作的版本,php cook book 中的代码不起作用。

我使用的分页示例来自此站点: http://www.developphp.com/view_lesson.php?v=289

我注意到有 2 个查询,首先获取总行数然后显示行,我不确定我是否应该有 2 个查询,本网站上的另一个示例也显示 2 个查询:http://www.phpeasystep.com/phptu/29.html

对比网上和书籍中的信息,我应该使用 1 或 2 个查询来获取分页结果吗?不想再继续染别人的坏习惯所以想问问高手 谢谢

【问题讨论】:

  • 您只需要一个查询。请在此处发布您使用的代码。
  • 我的代码一团糟:pastebin.com/Rr4W31zK 它所基于的脚本是:developphp.com/view_lesson.php?v=289
  • @Dagon 您能否在一个查询中发布如何执行此操作的示例?我知道的唯一方法是link,但是如果表足够大,对服务器来说将是一个很大的打击。总的来说,我会推荐两个查询,一个查询元素总数,一个查询页面记录
  • Alexios 这正是我一直在阅读的内容,我是一个极简主义者,如果可能的话,我更喜欢整洁的代码。我对我的查询感到满意:) 尽管结构需要缩短。分页代码的字符长度很长是否正常,我的例子有点长
  • @AlexiosTsiaparas,看下面的猜测是 2 :(

标签: php mysql sql database pagination


【解决方案1】:

我不知道有什么方法可以使用一个查询来获取结果总数和当前页面的结果,但可以使用一种更简单的方法。

SELECT SQL_CALC_FOUND_ROWS *
FROM ...;

然后

SELECT FOUND_ROWS();

返回上一个查询中找到的行数(但如果有LIMIT,则不返回)。

【讨论】:

  • 不用担心。 :) @Renai 据我所知,这是处理分页的最佳方式。
  • 我有点担心我大量使用 if/else 语句
  • @Renai 它与您发布的演示不同 2,它选择所有内容只是为了计算行数。使用 SQL_CALC_FOUND_ROWS() 的效率更高
  • 在我的分页上方,我需要一个 1-9 / A - Z 字符集,用户可以单击以查找以该字母开头的商店,作为分页的一部分,我需要查看哪些内容?我手动创建了 a-z,但它很差,请指点一下,谢谢
  • 所以你只需在WHERE 中添加另一个子句。对于所有以“A”开头的东西:WHERE title LIKE 'a%' LIMIT 0,20 并根据页面调整 LIMIT。这有意义吗,还是您想让它们像总页面导航中的书签一样?
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 2011-06-14
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多