| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- <?php
- namespace Heanup\Library;
- class Pager
- {
- private static $show_num = 9;
- // 分页中显示多少个
- private static $conf = array(
- 'first_last' => 1, // 首页-尾页 0-关闭 1-开启
- 'back_next' => 1, // 上一页-下一页 0-关闭 1-开启
- 'total_num' => 1, // 是否显示总页数 0-关闭 1-开启
- 'page_num' => 1, // 翻页数 0-关闭 1-开启
- 'select' => 1
- );
- // 下拉列表选择 0-关闭 1-开启
- private static $style_config = '<style type="text/css">
- .InitPHP_pages {font:12px/1.6em Helvetica, Arial, sans-serif;overflow:hidden; text-align:center; font-family:Verdana;margin-bottom:5px; }
- .InitPHP_pages a, .pages{ margin:0 1px; padding:1px 6px; border:1px solid #E4E4E4; text-decoration:none!important; }
- .InitPHP_pages a:hover { border-color:#369; }
- .InitPHP_pages strong { margin:0 1px; padding:2px 6px; border-color:#369; background:#369; color:#FFF; text-decoration:none!important; }
- .InitPHP_pages .back { padding:4px 6px 1px 20px!important; padding:4px 6px 2 20px; font-family:simsun; }
- .InitPHP_pages .next { padding:4px 20px 1px 6px!important; padding:4px 20px 2 6px; font-family:simsun; }
- .InitPHP_pages .first { padding:4px 6px 1px 4px!important; padding:4px 6px 2 4px; font-family:simsun; }
- .InitPHP_pages .last { padding:4px 4px 1px 6px!important; padding:4px 4px 2 6px; font-family:simsun; }
- </style><script>function go_to(_target){self.location.href=$(_target).attr("turn-url");}</script>';
- /**
- * 分页-分页入口
- *
- * @param int $count
- * 总共多少数据
- * @param int $prepage
- * 每页显示多少页
- * @param int $url
- * URL
- * @return string
- */
- public static function pager($count, $prepage, $url, $page, $default_style = TRUE): string
- {
- $count = (int) $count;
- $prepage = (int) $prepage;
- $page_num = ceil($count / $prepage); // 总共多少页
- $page = (int) $page;
- $page = ($page > $page_num) ? $page_num : ($page = ($page < 1) ? 1 : $page);
- $url = (strpos($url, '?') === false) ? $url . '?' : $url;
- return self::pager_html($page_num, $url, $page, $default_style);
- }
- /**
- * 分页-获取分页HTML显示
- *
- * @param int $page_num
- * 页数
- * @param string $url
- * URL
- * @param int $page
- * 当前页
- * @return string
- */
- private static function pager_html($page_num, $url, $page, $default_style)
- {
- list ($start, $end) = self::get_satrt_and_end($page, $page_num);
- list ($back, $next) = self::get_pager_next_back_html($url, $page, $page_num);
- list ($first, $last) = self::get_first_last_html($page_num, $url);
- if ($default_style == true) {
- $html = self::$style_config . "<div class='InitPHP_pages'>";
- } else {
- $html = "<div class='InitPHP_pages'>";
- }
- $html .= $back;
- $html .= $first;
- $html .= self::get_pager_num_html($start, $end, $url, $page);
- $html .= $last;
- $html .= $next;
- $html .= self::get_total_num_html($page_num);
- $html .= self::get_select_html($page_num, $url, $page);
- $html .= '</div>';
- return $html;
- }
- /**
- * 分页-获取分页数字的列表
- *
- * @param int $start
- * 开始数
- * @param int $end
- * 结束数
- * @param string $url
- * URL地址
- * @param int $page
- * 当前页
- * @return string
- */
- private static function get_pager_num_html($start, $end, $url, $page)
- {
- if (self::$conf['page_num'] == 0)
- return ''; // 是否开启
- $html = '';
- for ($i = $start; $i <= $end; $i ++) {
- if ($i == $page) {
- $html .= "<strong>{$i}</strong>";
- } else {
- $html .= "<a href='javascript:void(0);' turn-url='{$url}&page={$i}' onclick='go_to(this);'>{$i}</a>";
- }
- }
- return $html;
- }
- /**
- * 分页-分页总页数显示
- *
- * @param int $page_num
- * 页数
- * @return string
- */
- private static function get_total_num_html($page_num)
- {
- if (self::$conf['total_num'] == 0)
- return ''; // 是否开启
- return " 共{$page_num}页";
- }
- /**
- * 分页-分页首页和尾页显示
- *
- * @param int $page_num
- * 页数
- * @param string $url
- * URL地址
- * @return string
- */
- private static function get_first_last_html($page_num, $url)
- {
- if (self::$conf['first_last'] == 0)
- return array(
- '',
- ''
- ); // 是否开启
- $first = "<a href='javascript:void(0);' turn-url='{$url}&page=1' onclick='go_to(this);' class='first'>首页</a>";
- $last = "<a href='javascript:void(0);' turn-url='{$url}&page={$page_num}' onclick='go_to(this);' class='last'>尾页</a>";
- return array(
- $first,
- $last
- );
- }
- /**
- * 分页-获取分页上一页-下一页HTML
- *
- * @param string $url
- * URL地址
- * @param int $page
- * 当前页
- * @param int $page_num
- * 页数
- * @return string
- */
- private static function get_pager_next_back_html($url, $page, $page_num)
- {
- if (self::$conf['back_next'] == 0)
- return array(
- '',
- ''
- ); // 是否开启
- $next_page = $page + 1;
- $next = "<a href='javascript:void(0);' turn-url='{$url}&page={$next_page}' onclick='go_to(this);' class='next'>下一页</a>";
- if ($page == $page_num)
- $next = '';
- $back_page = $page - 1;
- $back = "<a href='javascript:void(0);' turn-url='{$url}&page={$back_page}' onclick='go_to(this);' class='back'>上一页</a>";
- if ($page == 1)
- $back = '';
- return array(
- $back,
- $next
- );
- }
- /**
- * 分页-Select选择器
- *
- * @param int $page_num
- * 页数
- * @param string $url
- * URL地址
- * @param int $page
- * 当前页
- * @return string
- */
- private static function get_select_html($page_num, $url, $page)
- {
- if (self::$conf['select'] == 0)
- return '';
- $html = ' <select name="select" onchange="javascript:window.location.href=this.options[this.selectedIndex].value">';
- for ($i = 1; $i <= $page_num; $i ++) {
- if ($page == $i) {
- $selected = ' selected';
- } else {
- $selected = '';
- }
- $html .= "<option value='{$url}&page={$i}' {$selected}>{$i}</option>";
- }
- $html .= '</select>';
- return $html;
- }
- /**
- * 分页-获取分页显示数字
- *
- * @param int $page
- * 当前页
- * @param int $page_num
- * 页数
- * @return array(start, end)
- */
- private static function get_satrt_and_end($page, $page_num)
- {
- $temp = floor(self::$show_num / 2);
- if ($page_num < self::$show_num)
- return array(
- 1,
- $page_num
- );
- if ($page <= $temp) {
- $start = 1;
- $end = self::$show_num;
- } elseif (($page_num - $temp) < $page) {
- $start = $page_num - self::$show_num + 1;
- $end = $page_num;
- } else {
- $start = $page - $temp;
- $end = $page - $temp + self::$show_num - 1;
- }
- return array(
- $start,
- $end
- );
- }
- }
-
|