PHP 数字范围


PHP Number ranges

我对如何做到这一点有一个完整的心理障碍。

我有"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, 10LIMIT 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>";
}