分页编号

时间:2015-03-31 11:32:03

标签: php pagination

任何人都可以向我解释我是如何制作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>');

}

2 个答案:

答案 0 :(得分:1)

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

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

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


更新:

你很接近 - 而不是迭代所有页面,只需从当前页面迭代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>');
}

答案 1 :(得分:0)

    $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>";
    }
相关问题