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 = '';
/**
* 分页-分页入口
*
* @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 . "
";
} else {
$html = "
";
}
$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 .= '
';
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 .= "
{$i}";
} else {
$html .= "
{$i}";
}
}
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 = "
首页";
$last = "
尾页";
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 = "
下一页";
if ($page == $page_num)
$next = '';
$back_page = $page - 1;
$back = "
上一页";
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 = '
';
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
);
}
}