网上分享的PHP分页类是非常多,有的功能上很强大,但是代码确实有一点比较多,一些初学者可能很难理解,也就没法用。所以,后端开发在这里分享一下轻量级的非常小巧而且易懂的PHP列表分页类,供大家参照。
class PageTool{
public function __construct(){
}
/*显示分页
例: index.php?cat_id=3&act=del&page=1
*/
public function show($total,$perpage=10,$page=1){//获取页面URL前置
$url = $_SERVER['REQUEST_URI'];
$url_arr = parse_url($url);
//获取URL后置参数,分解成数组
$query = array();
if(isset($url_arr['query'])){
parse_str($url_arr['query'],$query);
}//销毁 $query['page'],因为page会变化,
//而 分类ID号 在分页页面 是不会变的。所以作为固定前置
if(isset($query['page'])){
unset($query['page']);
}//组合后置参数为字符串
$afterparam = !empty($query) ? http_build_query($query).'&' : '';//组合 固定URL前置
$url2 = $url_arr['path'].'?'.$afterparam;//显示分页
$num = ceil($total/$perpage); //总页数
if($page < 1){//如查页数 小于 1 ,就等于1
$page = 1;
}
if($page > $num){ //如果 页数 大于 总页数,就等于总页数
$page = $num;
}
$pages = '<span style="margin-right:10px;" class="f_l f6">总计 <b>'.$total.'</b> 个记录</span>';
//如果当前页面不是首页,就显示首页链接
if( $page > 1){
$pages .= '<a href="'.$url2.'page='.($page-1).'" >上一页</a> ';
}for($i=1; $i<=$num; $i++){
if($i==$page){
$pages .= '<span class="page_now">'.$i.'</span> ';//当前页
}else{
$pages .= '<a href="'.$url2.'page='.$i.'" >'.$i.'</a> ';
}}
//如果当前页面不是尾页,就显示尾页链接
if( $page < $num){
$pages .= '<a href="'.$url2.'page='.($page+1).'" >下一页</a> ';
}
return $pages;
}}
就是上面这样一个简单的PHP分页类,只有一个方法,没有任何属性。调用方法如下:
$total = 100; //商品总数
$perpage = 2; //每页显示多少条
$page = isset($_GET['page']) ? $_GET['page']+0 : 1; //当前页$start = ($page-1)*$perpage; //从哪一条开始
$list = $good->getCatGoods($cid,$perpage,$start); //这里是分类目录类中的一个方法,调用商品列表,这里就不提供了
//分页
$fenye = new PageTool();
$show = $fenye->show($total,$perpage,$page); //调用分页方法
这样,在网页上就可以看到如下图的效果:
没有写CSS样,所以,难看了点,大家可以自己写个好看的CSS样式。