仅显示分页中特定范围的页面?
我正在做一些分页的MySQL结果,并试图限制给定的页面被列入指定变量的数量。这部分工作,但限制只能在开始和结束。我相信这是因为我需要修改for
循环。仅显示分页中特定范围的页面?
这是它当前显示的内容。
^应仅显示3,4,5,6,7^
PHP:
var $max_pages = 4;
$batch = ceil($this->page/$this->links_per_page);
$end = $batch * $this->links_per_page;
if ($end > $this->total_pages) {
$end = $this->total_pages;
}
$start = 1;
for($i = max($start,$this->page - $this->max_pages);
$i <= min($this->page + $this->max_pages,$end); $i ++) {
if ($i == $this->page) {
$prefixActive = '<span class="page_link active">';
$links .= $prefixActive . "$i" . $suffix;
} else {
$links .= ' ' . '<a href="' . $this->php_self .
'?page=' . $i . $this->append . '">' .$prefix . $i .
$suffix. '</a>' . ' ';
}
}
if($this->total_pages > $this->max_pages){
$max_start = max($start,$this->page - $this->max_pages/2);
$start_index = min($this->total_pages - $this->max_pages, $max_start);
$end_index = min($this->total_pages, $max_start + $this->max_pages);
} else {
$start_index = 1;
$end_index = $this->total_pages;
}
for($i = $start_index; $i <= $end_index; $i ++) {
if ($i == $this->page) {
$prefixActive = '<span class="page_link active">';
$links .= $prefixActive . "$i" . $suffix;
} else {
$links .= ' ' . '<a href="' . $this->php_self .
'?page=' . $i . $this->append . '">' .$prefix . $i .
$suffix. '</a>' . ' ';
}
}
已接近,但现在仅显示开始和结束时只有3页,然后在中间显示5(3,4,5,6,7如预期)。 – EternalHour 2014-12-19 00:00:13
更接近但达到'max_pages'后,它开始删除页面,直到最后只剩下一个页面。 – EternalHour 2014-12-19 00:22:28
给我最后一次机会,再试一次:) – Hovo 2014-12-19 00:26:30
你的代码是极其混乱。为什么'$ start = $ end - $ this-> links_per_page + 1;'然后实际以'max($ start,$ this-> page - $ this-> max_pages)开始''?整个问题是你似乎无法下定决心要开始。 – developerwjk 2014-12-18 23:51:17
@developerwjk我看到你在说什么,'$ start'应该是1.我更新了值。 – EternalHour 2014-12-18 23:56:34
@developerwjk为什么你删除你的答案? '$ i EternalHour 2014-12-19 00:18:17