在php分页中限制页面

时间:2013-01-24 15:14:25

标签: php pagination

我想限制下面我的分页php脚本上显示的页数。这是几年前为我制作的剧本,尽管我在这里已经阅读过类似的问题,但他们的编码却截然不同。

对此的任何帮助都将非常感激。

这是我目前的剧本:

<?php 
if ($max_pages>1) {
    echo "<br>";
    if ($page>0) {
        echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==1?'':($page-1).'/'):$category_id.'/'.$paginate[0].($page==1?'':'_'.($page-1)).'/').'" class="pagination">Previous</a>';
    }
    for ($x=0;$x<$max_pages;$x++) {
        if ($page<>$x) {
            echo '<a href="'.$base_url.$sites_directory.($category_id==0?($x==0?'':$x.'/'):$category_id.'/'.$paginate[0].($x==0?'':'_'.($x)).'/').'" class="pagination">'.($x+1).'</a>';
        }
        else {
            echo '<span class="pagination">'.($x+1).'</span>';
        }
    }
    if (($page+1<>$max_pages)) {
        echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==($max_pages-1)?'':($page+1).'/'):$category_id.'/'.$paginate[0].($page==($max_pages-1)?'':'_'.($page+1)).'/').'" class="pagination">Next</a>';
    }
}?>

1 个答案:

答案 0 :(得分:1)

您当前的脚本在{和$x之间循环$max_pages

您可以做的是先用$from_page$to_page替换它们:

$from_page = 0;
$to_page   = $max_pages;

...

for ($x=$from_page; $x < $to_page; $x++)

此时脚本将像以前一样工作。

现在,如果您希望仅在$N之前的$N页面显示$page之后的$N = 5; // display 5+5+1 = 11 pages $from_page = $page - $N; if ($from_page < 0) $from_page = 0; $to_page = $from_page + 2*$N+1; if ($to_page > $max_pages) $to_page = $max_pages; $from_page = $to_page - 2*$N-1; if ($from_page < 0) $from_page = 0; 页面,

$max_pages-1

也许不是最优雅的方式,但它会尝试适合以当前页面为中心的11页区域。您可能还想显示指向第0页和<?php if ($max_pages>1) { $N = 5; // display 5+5+1 = 11 pages $to_page = min($max_pages, max(0, $page - $N) + 2*$N+1); $from_page = max($to_page - 2*$N-1, 0); echo "<br>"; if ($page > 0) { echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==1?'':($page-1).'/'):$category_id.'/'.$paginate[0].($page==1?'':'_'.($page-1)).'/').'" class="pagination">Previous</a>'; } for ($x=$from_page; $x < $to_page; $x++) { if ($page != $x) { echo '<a href="'.$base_url.$sites_directory.($category_id==0?($x==0?'':$x.'/'):$category_id.'/'.$paginate[0].($x==0?'':'_'.($x)).'/').'" class="pagination">'.($x+1).'</a>'; } else { echo '<span class="pagination">'.($x+1).'</span>'; } } if (($page+1<>$max_pages)) { echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==($max_pages-1)?'':($page+1).'/'):$category_id.'/'.$paginate[0].($page==($max_pages-1)?'':'_'.($page+1)).'/').'" class="pagination">Next</a>'; } }?> 的链接。

MRE版本

{{1}}