【发布时间】:2017-11-01 02:37:34
【问题描述】:
我正在查看一些遗留代码,并希望在一些事情上得到一些帮助。
我所有的问题都与分页有关。
首先,在以下查询中,我们正在计算总页数。 $itemsperpage=40 here。
$rs0=mysqli_fetch_array(mysqli_query($dbh,"select floor(count(1)/$itemsperpage)+1 as pages from scx_media where scx_media.mediaid in (select mediaid from animated_gifs where status>0)"));
为什么我们先把它取底,然后加 1?
其次,
在这段代码中,我们创建了起始变量(用于 sql 查询)。
$page=(int)$_GET['page'];
$pages=$rs0[pages];
if($page>$pages)$page=$pages;
$start=($page-1)*$itemsperpage;
为什么我们从页面中减去一个?因为我们从 0 开始所以我们必须减 1?
最后,
假设我们有40 items 和perpage item count is 40 as well。使用此配置,we'd have a second page with no data 因为它会在满足每页要求的第一页上显示 40 个项目,然后根据页数计算我们会有第二页但不会有记录。 我该如何解决这个问题?
【问题讨论】:
-
“我们为什么要从页面中减去 1?” 您的猜测似乎是合理的,但我们都不知道您的旧代码是如何工作的。
-
通常从我在其他遗留代码中看到的......是“为什么我们从页面中减去一个?”是由于sql中的LIMIT第一次匹配需要以0开头,以此类推。 - 编辑 - ...实际上这听起来很不对。我们需要更多你的 sql 和代码才能确定,哈哈。
-
“我该如何解决这个问题?”如果你使用 MySQL,你可以看看
SQL_CALC_FOUND_ROWS。 -
对 SQL_CALC_FOUND_ROWS 感兴趣:stackoverflow.com/questions/186588/…
标签: php pagination