仅显示分页中特定范围的页面?

问题描述:

我正在做一些分页的MySQL结果,并试图限制给定的页面被列入指定变量的数量。这部分工作,但限制只能在开始和结束。我相信这是因为我需要修改for循环。仅显示分页中特定范围的页面?

这是它当前显示的内容。

enter image description here

enter image description here
                            ^应仅显示3,4,5,6,7^

enter image description here

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>' . ' '; 
    } 
} 
+0

你的代码是极其混乱。为什么'$ start = $ end - $ this-> links_per_page + 1;'然后实际以'max($ start,$ this-> page - $ this-> max_pages)开始''?整个问题是你似乎无法下定决心要开始。 – developerwjk 2014-12-18 23:51:17

+0

@developerwjk我看到你在说什么,'$ start'应该是1.我更新了值。 – EternalHour 2014-12-18 23:56:34

+0

@developerwjk为什么你删除你的答案? '$ i EternalHour 2014-12-19 00:18:17

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>' . ' '; 
    } 
} 
+0

已接近,但现在仅显示开始和结束时只有3页,然后在中间显示5(3,4,5,6,7如预期)。 – EternalHour 2014-12-19 00:00:13

+0

更接近但达到'max_pages'后,它开始删除页面,直到最后只剩下一个页面。 – EternalHour 2014-12-19 00:22:28

+0

给我最后一次机会,再试一次:) – Hovo 2014-12-19 00:26:30