<?php <BR>function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){ <BR> $pagecode = '';//定义变量,存放分页生成的HTML <BR> $page = intval($page);//避免非数字页码 <BR> $total = intval($total);//保证总记录数值类型正确 <BR> if(!$total) return array();//总记录数为零返回空数组 <BR> $pages = ceil($total/$pagesize);//计算总分页 <BR> //处理页码合法性 <BR> if($page<1) $page = 1; <BR> if($page>$pages) $page = $pages; <BR> //计算查询偏移量 <BR> $offset = $pagesize*($page-1); <BR> //页码范围计算 <BR> $init = 1;//起始页码数 <BR> $max = $pages;//结束页码数 <BR> $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数 <BR> $pageoffset = ($pagelen-1)/2;//页码个数左右偏移量 <br><br> //生成html <BR> $pagecode='<div class="page">'; <BR> $pagecode.="<span>$page/$pages</span>";//第几页,共几页 <BR> //如果是第一页,则不显示第一页和上一页的连接 <BR> if($page!=1){ <BR> $pagecode.="<<";//第一页 <BR> $pagecode.="<";//上一页 <BR> } <BR> //分页数大于页码个数时可以偏移 <BR> if($pages>$pagelen){ <BR> //如果当前页小于等于左偏移 <BR> if($page<=$pageoffset){ <BR> $init=1; <BR> $max = $pagelen; <BR> }else{//如果当前页大于左偏移 <BR> //如果当前页码右偏移超出最大分页数 <BR> if($page+$pageoffset>=$pages+1){ <BR> $init = $pages-$pagelen+1; <BR> }else{ <BR> //左右偏移都存在时的计算 <BR> $init = $page-$pageoffset; <BR> $max = $page+$pageoffset; <BR> } <BR> } <BR> } <BR> //生成html <BR> for($i=$init;$i<=$max;$i++){ <BR> if($i==$page){ <BR> $pagecode.='<span>'.$i.'</span>'; <BR> } else { <BR> $pagecode.="$i"; <BR> } <BR> } <BR> if($page!=$pages){ <BR> $pagecode.=">";//下一页 <BR> $pagecode.=">>";//最后一页 <BR> } <BR> $pagecode.="
“;
return array(‘pagecode’=>$pagecode,’sqllimit’=>’ limit ‘.$offset.’,’.$pagesize);
}
?>