PHP分页问题

时间:2011-08-08 18:59:54

标签: php

我的项目PHP分页存在问题。

它几乎可以正常工作但似乎没有正确显示数字。

我想在选定的一个之后只显示6个页码,之前一个; (如果你在第一页显示 7 之后)

例如:

如果在第1页上: 1 / 2/3/4/5/6/7/8

如果在第2页:1 / 2 / 3/4/5/6/7/8

如果在第5页:4 / 5 / 6/7/8/9/10/11

如果在页面10:9 / 10 / 11/12/13/14/15/16

到目前为止,这是我的代码......

if($page == ceil($NumOfPages) && $page != 1){
    for($i = 1; $i <= ceil($NumOfPages)-1; $i++){
    if($i > 0){
        echo "<a href=\"/{$i}\">{$i}</a>";
    }
    }
}
if ($page == ceil($NumOfPages) ) {
    $startPage = $page;
}else{
    $startPage = 1;
}
for ($i = $startPage; $i <= $page+6; $i++){
        if ($i <= ceil($NumOfPages)){
            if($i == $page) {
                echo "<a href='/page/$i/' title='View movies page $i' id='pagelisel'>$i</a> ";
            }else{
                echo "<a href='/page/$i/' title='View movies page $i' id='pageli'>$i</a> ";
            }
        }
}

非常感谢任何帮助,

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为(部分是为了我自己......;)):

  • $page是所选页面
  • $startPage是您要显示的第一个页码
  • $numPages已经ceil - ed

首先,您需要找到$startPage。取决于$page是否是第一个(即具有值1,另一个假设)或不。你的支票略有偏差,因为它检查它是否等于最后一页。

if($page == 1) {
    $startPage = 1;
} else {
    $startPage = $page - 1;
}

然后您需要找出要打印的最后一个页码($lastPage)。因此,请检查$startPage是否接近结尾并相应地设置〜$ lastPage`:

if($startPage + 7 > $numPages) {
    $endPage = $numPages;
} else {
    $endPage = $startPage + 7;
}

最后,使用for - 循环似乎没问题,但从$startPage循环到$endPage

答案 1 :(得分:0)

以下是另一种适合您的方法:

$pageCurrent = $page;
$pagePrevious = $pageCurrent-1;
$pageClass = '';
$pageStart = 1;
$pageEnd = $pageCurrent+6;
$pageMax = ceil($NumOfPages);

if($pageCurrent==1){
    echo "<a href=\"/page/1\" class=\"selected\">1</a>";
}else{
    echo "<a href=\"/page/$pagePrevious\">$pagePrevious</a>";
}

for($i = $pageStart; $i <= $pageEnd; $i++){
    if($i <= $pageEnd){
        if($i == 1 && $pageCurrent != 1){
            $pageClass = 'selected';
        }else{
            $pageClass = '';
        }
        echo "<a href=\"/page/$i\" title=\"View movies page $i\" class=\"$pageClass\">$i</a>";
    }
}