页码编号

Pagination numbering

任何人都可以向我解释我是如何制作 1 2 3 4 5 ..... 9 的。当你到达 9 时,它会显示一个新行。因为目前它连续显示 900 个结果。我只需要说明如何开始。

分页脚本:

$k = 0; # The new index
$newArray = array(); # The new array
foreach($sortedImages as $soImg) {
    $newArray[$k] = $soImg;
    $k++;
}

$page = $_GET["page"];
$perPage = 10;
$total = $count;
$pages = ceil($count / $perPage);
for ($i = (($page-1)*$perPage); $i < min(($page*$perPage), $total); $i++) {
    $newSortedImages[$i] = $newArray[$i];
}

这是我用来显示编号的脚本。

        page:&nbsp<?php
    for($i = 1; $i <= $pages; $i++) {
     echo('&nbsp&nbsp;<a href="?page=' . $i . '">' . $i . '</a>');

}

模运算符对此特别有用...

for ($i = 1; $i <= $pages; $i++) {
  echo('&nbsp&nbsp;<a href="?page=' . $i . '">' . $i . '</a>');
  if ($i % 9 == 0) echo "<br />";
}

模运算符 returns 除法计算中的余数,当 $i 可以被 9 整除时,它 returns 为零,这意味着您已经迭代了九个结果。


更新:

您很接近 - 无需迭代所有页面,只需从当前页面开始迭代第 9 页。

$page = 1;
if (isset($_GET["page"]) && is_numeric($_GET["page"])) $page = floor($_GET["page"]);
$offset = max(0, ($page + 9 - $total)); //push the start backwards if we are near the end
$start = $page - $offset;
$end = min($total, $start+9); // don't go past the total (if less then 9 items)

for ($i = $start; $i <= $end; $i++) {
  echo('&nbsp&nbsp;<a href="?page=' . $i . '">' . $i . '</a>');
}
    $start = $_REQUEST['page'] ? : 0;
    if ($start % 9 != 0) {
        $start = 9 * floor($start/9);

    }
    $end = min($total, $start+9);

    for ($i = $start; $i <= $end; $i++) {
        echo "<a href='?page='.$i>".$i."</a>";
    }