测试图例:
效果图:
实现代码:
/**
*
* @param $page 页码(1至正无穷)
* @param $num 数据中多上行为一页
* @param $rows 数据的总行数
* @param $length 下标的最大长度
* @return array
*/
public function pagedate($page, $num , $rows , $length){
//初始化数据
$maxpage = 0; //最大页码
$minpage = 0; //最小页码
$serverpage = 0; //下拉框中显示的页码
$pagedata = array(); //全部的页码集合(用户下拉框选择)
$pageshowdata = array(); //用于显示下标的页码集合
$page = intval($page);
if($rows == 0){
return $data = array(
'page' => $page,
'maxpage' => $maxpage,
'minpage' => $minpage,
'serverpage' => $serverpage,
'pagedata' => $pagedata,
'pageshowdata' => $pageshowdata
);
}
//得到最大分页和最小分页
$maxpage = intval($rows / $num);
$double = $rows % $num;
if($double > 0.000000001)
{
$maxpage += 1;
}
$minpage = 1;
$serverpage = 1;
//得到页码的全部项目
for($i = 1; $i <= $maxpage; $i++ ){
$pagedata[$i] = $i;
}
//对页码进行正确性改正
if($page < $minpage){
$page = 1;
}
if($page > $maxpage){
$page = 1;
}
/*生成显示的页码标签*/
//生成左侧的代码快
if($page == $minpage){
$pageshowdata[1] = $page;
}
if($page > $minpage){
$pageshowdata[1] = $minpage;
// $pageshowdata[2] = $page - 1; // <<
$pageshowdata[2] = '<<'; // <<
if($page -2 > $minpage ){
$pageshowdata[3] = $page - 2;
$pageshowdata[4] = $page - 1;
}elseif($page -2 == $minpage){
$pageshowdata[3] = $page - 1;
}
//确定选中的页码代码快
$pageshowdata[count($pageshowdata) + 1] = $page;
}
$count = count($pageshowdata) + 1;
//生成右侧的代码块
if($page == $maxpage){
return $data = array(
'page' => $page,
'maxpage' => $maxpage,
'minpage' => $minpage,
'serverpage' => $serverpage,
'pagedata' => $pagedata,
'pageshowdata' => $pageshowdata
);
}
if($page < $maxpage) {
if($maxpage - $page >= 2){
$j = 1;
for($i = $count; $i <= $length ; $i++){
$pageshowdata[$i] = $page + $j;
$j ++;
if($pageshowdata[$i] == $maxpage -1){
break;
}
}
}
$count = count($pageshowdata) + 1;
// $pageshowdata[$count] = $page + 1; //>>
$pageshowdata[$count] = '>>';
$pageshowdata[$count + 1] = $maxpage;
//得到选中的参数
$serverpage = $pageshowdata[$count-1] + 1;
if($serverpage > $maxpage){
$serverpage = 1;
}
return $data = array(
'page' => $page,
'maxpage' => $maxpage,
'minpage' => $minpage,
'serverpage' => $serverpage,
'pagedata' => $pagedata,
'pageshowdata' => $pageshowdata
);
}
}
本文出自 it985博客
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!