1, //首页-尾页 0-关闭 1-开启
'back_next' => 1, //上一页-下一页 0-关闭 1-开启
'total_num' => 1, //是否显示总页数 0-关闭 1-开启
'page_num' => 1, //翻页数 0-关闭 1-开启
'select' => 1 //下拉列表选择 0-关闭 1-开启
);
private $style_config = '';
/**
* 分页-分页入口
* @param int $count 总共多少数据
* @param int $prepage 每页显示多少条
* @param int $url URL
* @return string
*/
public function pager($count, $prepage, $url, $default_style = false) {
$count = (int) $count;
$prepage = (int) $prepage;
$page_num = ceil($count / $prepage); //总共多少页
$page = (int) $_GET['page'];
$page = ($page > $page_num) ? $page_num : ($page = ($page < 1) ? 1 : $page);
$url = (strpos($url, '?') === false) ? $url . '?' : $url;
return $this->pager_html($page_num, $url, $page, $default_style);
}
/**
* 分页-获取分页HTML显示
* @param int $page_num 页数
* @param string $url URL
* @param int $page 当前页
* @return string
*/
private function pager_html($page_num, $url, $page, $default_style) {
list($start, $end) = $this->get_satrt_and_end($page, $page_num);
list($back, $next) = $this->get_pager_next_back_html($url, $page, $page_num);
list($first, $last) = $this->get_first_last_html($page_num, $url);
if ($default_style == true) {
$html = $this->style_config . "
";
} else {
$html = "
";
}
$html .= $back;
$html .= $first;
$html .= $this->get_pager_num_html($start, $end, $url, $page);
$html .= $last;
$html .= $next;
$html .= $this->get_total_num_html($page_num);
$html .= $this->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 function get_pager_num_html($start, $end, $url, $page) {
if ($this->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 function get_total_num_html($page_num) {
if ($this->conf['total_num'] == 0) return ''; //是否开启
return " 共{$page_num}页";
}
/**
* 分页-分页首页和尾页显示
* @param int $page_num 页数
* @param string $url URL地址
* @return string
*/
private function get_first_last_html($page_num, $url) {
if ($this->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 function get_pager_next_back_html($url, $page, $page_num) {
if ($this->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 function get_select_html($page_num, $url, $page) {
if ($this->conf['select'] == 0) return '';
$html = '
';
return $html;
}
/**
* 分页-获取分页显示数字
* @param int $page 当前页
* @param int $page_num 页数
* @return array(start, end)
*/
private function get_satrt_and_end($page, $page_num) {
$temp = floor($this->show_num / 2);
if ($page_num < $this->show_num) return array(1, $page_num);
if ($page <= $temp) {
$start = 1;
$end = $this->show_num;
} elseif (($page_num - $temp) < $page) {
$start = $page_num - $this->show_num + 1;
$end = $page_num;
} else {
$start = $page - $temp;
$end = $page - $temp + $this->show_num - 1;
}
return array($start, $end);
}
}