我对如何做到这一点有一个完整的心理障碍。
我有"x"个数据库条目。我想将它们列在"y"块中。
我开始尝试只用 PHP 中的数字来做到这一点,然后我会考虑 DB 端。
$total = '200';
$perpage = '10';
所以我试图获得以下输出:
1,10
11,20
21,30
31,40
41,50
etc
如果$perpage
是 20,则结果将是:
1,20
21,40
41,60
etc
这就是我到目前为止所得到的..而且它离得很远!
$total = '200';
$page = '10';
$base = '1';
echo $total / $page."</br>";
$list = $total / $page;
for ($n=1;$n<=$list;$n++) {
echo "$n,".$n * $page."<br/>";
}
有人可以指出我这样做的正确方向吗?忘记数据库,I@m有兴趣用上面的数字开始。
谢谢
当将数据库查询为 LIMIT 时,您通常对 OFFSET 和 ROWS 感兴趣,这意味着您想要 0、10、20、30、40、50,而 ROWS 保持在 10:LIMIT 0, 10
、LIMIT 10, 10
等。如果你要在查询中使用它,你就是从错误的一端接近它。
要在问题中生成序列,请将偏移量和分页与计数器分开。
$perpage = 10;
$offset = 1;
$total = 200;
for ($i = 0; $i < $total; $i += $perpage)
{
print(($i + $offset) . ', ' . ($i + $perpage) . '<br />');
}
试试这个 -
$total = '200';
$page = '10';
$base = '1';
$total / $page."</br>";
$list = $total / $page;
$start = 1;
for ($n=1;$n<=$list;$n++) {
echo "$start,".$n * $page."<br/>";
$start += $page;
}
像这样的东西呢?
<?php
$total = 200;
$increase_by = 10;
for ($left = 1, $right = $increase_by; $right <= $total; $left = $left + $increase_by, $right = $right + $increase_by) {
printf('%d, %d<br>', $left, $right);
}
但是,正如 MatsLindh 所说,如果您使用它来创建偏移/限制组合,您可能希望始终保持限制不变,因为"LIMIT 0,10"表示"从第 0 行开始获取 10 条记录",而"LIMIT 10,20"表示"从第 10 行开始获取 20 条记录"。您可能想要"LIMIT 10,10",说"从第 10 行开始获取 10 条记录"。
假设您想每页显示 10 条记录,并且您在第 2 页上,您需要一个 LIMIT 子句,上面写着:LIMIT 10,10
,意思是我上面提到的。偏移量为 10,因为第一页的偏移量为 0,使查询提取前 10 条记录。
当前页面上的记录所需的只是页码和要获取的记录数。
如果要计算您有多少页:ceil($number_of_records / $records_per_page);
我试过了;
$total = 200;
$perpage = 10;
$end = $total / $perpage;
for ($n=1;$n<=$end;$n++) {
$n1 = ($n * $perpage) - 1;
echo "$n,$n1<br/>";
}
试试,
for ($n=1;$n<=$list;$n++) {
echo ($n - 1) * $page + 1,',',$n * $page."<br>";
}