分页函数

 1 <?php
 2 /**
 3  * 分页函数
 4  * @param $countRows
 5  * @param $pageNo
 6  * @param string $url
 7  * @return string
 8  */
 9 function pager($countRows, $pageNo, $url = '') {
10     // 计算总页数
11     $countPages = ceil($countRows / PAGE_ROWS);
12     // 当前页码前后间隔
13     $pageOffset = (PAGE_OFFSET - 1) / 2;
14 
15     if(!$url) {
16         $url  = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
17         $url  = preg_replace('/&*page=d*/','', $url);
18         $url .= empty($_SERVER['QUERY_STRING']) ? "page=[page]" : "&page=[page]";
19     }
20 
21     $pager  = '<ul class="pager">';
22     $pager .= (1 < $pageNo)
23         ? '<li><a href="'. str_replace('[page]', 1, $url) .'">首页</a></li>'
24           . '<li><a href="'. str_replace('[page]', ($pageNo - 1), $url) .'">上一页</a></li>'
25         : '<li><a class="disabled">首页</a></li><li><a class="disabled">上一页</a></li>';
26 
27     // 开始页码不能小于1
28     $startPage = max(1, $pageNo - $pageOffset);
29     // 开始页码加上要显示页码的个数 要比总页数小
30     $endPage   = min($startPage + PAGE_OFFSET - 1, $countPages);
31     // 避免页码显示不足位数
32     $startPage = max(1, $endPage - PAGE_OFFSET + 1);
33 
34     $pageNumList = range($startPage, $endPage);
35     foreach ($pageNumList as $pageNum) {
36         $selected = ($pageNum == $pageNo) ? ' class="active" ' : '';
37         $pager .= '<li><a href="'. str_replace('[page]', $pageNum, $url) .'"'. $selected .'>' . $pageNum . '</a></li>';
38     }
39 
40     $pager .= ($countPages > $pageNo)
41         ? '<li><a href="'. str_replace('[page]', ($pageNo + 1), $url) .'">下一页</a></li>'
42           . '<li><a href="'. str_replace('[page]', $countPages, $url) .'">尾页</a></li>'
43         : '<li><a class="disabled">下一页</a></li><li><a class="disabled">尾页</a></li>';
44     $pager .= '</ul><div class="clear"></div>';
45 
46     return $pager;
47 }

效果如下图:

 

原文地址:https://www.cnblogs.com/adtuu/p/7519634.html