我的项目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> ";
}
}
}
非常感谢任何帮助,
谢谢!
答案 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>";
}
}