0

0

超好用的PHP分页类(可自定义样式)

PHP中文网

PHP中文网

发布时间:2016-05-23 16:39:04

|

1701人浏览过

|

来源于php中文网

原创

       

getPages()); //生成一个页码数组(键为页码,值为链接)
 * echo $p->showPages(1);	//生成一个页码样式(可添加自定义样式)
 * 
 * @author: Dzer* @version: 2014-12-25 09:09:42
 * @Last Modified time: 2014-12-28 17:37:13
 */

/*
思路:
给我一个 总页数,需要显示的页数,当前页,每页显示的条数,连接
写一个方法 生成一个一维数组,键为页码 值为连接
写一个方法 返回一个生成好样式的页码(并且可以根据自己需要添加样式)
默认样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]
*/
class Page{
	protected $count;		//总条数
	protected $showPages;	//需要显示的页数
	protected $countPages;	//总页数
	protected $currPage;	//当前页
	protected $subPages; 	//每页显示条数
	protected $href;		//连接
	protected $page_arr=array();	//保存生成的页码 键页码 值为连接

	/**
	 * __construct  构造函数(获取分页所需参数)
	 * @param int $count     总条数
	 * @param int $showPages 显示页数
	 * @param int $currPage  当前页数
	 * @param int $subPages  每页显示数量
	 * @param string $href   连接(不设置则获取当前URL)
	 */
	public function __construct($count,$showPages,$currPage,$subPages,$href=''){
		$this->count=$count;
		$this->showPages=$showPages;
		$this->currPage=$currPage;
		$this->subPages=$subPages;
		
		//如果链接没有设置则获取当前连接
		if(empty($href)){
			$this->href=htmlentities($_SERVER['PHP_SELF']); 
		}else{
			$this->href=$href;
		}
		$this->construct_Pages();
	}

	/**
	 * getPages 返回页码数组
	 * @return array 一维数组 键为页码 值为链接
	 */
	public function getPages(){
		return $this->page_arr;
	}

	/**
	 * showPages 返回生成好的页码
	 * @param  int $style 样式
	 * @return string     生成好的页码
	 */
	public function showPages($style=1){
		$func='pageStyle'.$style;
		return $this->$func();
	}

	/**
	 * pageStyle1 分页样式(可参照这个添加自定义样式 例如pageStyle2())
	 * 样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页] 
	 * @return string 
	 */
	protected function pageStyle1(){
		/* 构造普通模式的分页 
   		共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [1] [2] [3] .. [下页] [尾页] 
   		*/ 
   		$pageStr='共'.$this->count.'条记录,每页显示'.$this->subPages.'条';
   		$pageStr.='当前第'.$this->currPage.'/'.$this->countPages.'页 ';

   		$_GET['page'] = 1;
   		$pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">首页] ';
   		//如果当前页不是第一页就显示上页
   		if($this->currPage>1){
   			$_GET['page'] = $this->currPage-1;
   			$pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">上页] ';
   		}

   		foreach ($this->page_arr as $k => $v) {
   			$_GET['page'] = $k;
   			$pageStr.='['.$k.'] ';
   		}

   		//如果当前页小于总页数就显示下一页
   		if($this->currPagecountPages){
   			$_GET['page'] = $this->currPage+1;
   			$pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">下页] ';
		}

		$_GET['page'] = $this->countPages;
   		$pageStr.='[href.'?'.http_build_query($_GET).'" _href="'.$this->href.'?'.http_build_query($_GET).'">尾页] ';

   		return $pageStr;
	}

	/**
	 * construct_Pages 生成页码数组
	 * 键为页码,值为链接
	 * $this->page_arr=Array(
	 *  				[1] => index.php?page=1
	 *   	  			[2] => index.php?page=2
	 *    	    		[3] => index.php?page=3
	 *     	     		......)
	 */
	protected function construct_Pages(){
		//计算总页数
		$this->countPages=ceil($this->count/$this->subPages);
		//根据当前页计算前后页数
		$leftPage_num=floor($this->showPages/2);
		$rightPage_num=$this->showPages-$leftPage_num;

		//左边显示数为当前页减左边该显示的数 例如总显示7页 当前页是5  左边最小为5-3  右边为5+3
		$left=$this->currPage-$leftPage_num;
		$left=max($left,1);	//左边最小不能小于1
		$right=$left+$this->showPages-1;	//左边加显示页数减1就是右边显示数
		$right=min($right,$this->countPages);  //右边最大不能大于总页数
		$left=max($right-$this->showPages+1,1); //确定右边再计算左边,必须二次计算
		
		for ($i=$left; $i page_arr[$i]=$this->href.'?'.http_build_query($_GET);
		}
	}
}
getPages()); 

//生成一个页码样式(可添加自定义样式)
//样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]
echo $p->showPages(1);	
				    				            	            	

       

V63积分商城 FOR DZ GBK
V63积分商城 FOR DZ GBK

v63积分商城特色功能:支持三种物品类型的发放1.实物:实物领取需要填写收货信息:2.虚拟:可以自定义用户领取需要填写的信息3.卡密:自动发放,后台能够查看编辑卡密状态支持三种种物品发放方式1.兑换:2.拍卖3. 抽奖兑换拍卖信息可以以帖子的形式自动发布当设定了“兑换拍卖自动发帖版块“ ID时,发布商品会自动在改ID版块生成帖子用户兑换或者出价后都会以跟帖的

下载

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

11

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

4

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

13

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

93

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

112

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

155

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

极致CMS零基础建站教学视频
极致CMS零基础建站教学视频

共62课时 | 5.4万人学习

PHP进阶篇-函数(玉女心经版)
PHP进阶篇-函数(玉女心经版)

共12课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号