PHP带有分页导航条分页实现,PHP分页导航 php通用分页工具类实现

1、先上图,看下实现效果

20160714182000_6588.png

2、整类实现class Page {

private $total;//总数量

private $limit;//返回mysql的limit语句

private $pageStart;//开始的数值

private $pageStop;//结束的数值

private $pageNumber;//显示分页数字的数量

private $page;//当前页

private $pageSize;//每页显示的数量

private $pageToatl;//分页的总数量

private $pageParam;//分页变量

private $uri;//URL参数

/**

* 分页设置样式 不区分大小写

* %pageToatl% //总页数

* %page%//当前页

* %pageSize% //当前页显示数据条数

* %pageStart%//本页起始条数

* %pageStop%//本页结束条数

* %total%//总数据条数

* %first%//首页

* %ending%//尾页

* %up%//上一页

* %down%//下一页

* %F%//起始页

* %E%//结束页

* %omitFA%//前省略加跳转

* %omitEA%//后省略加跳转

* %omitF%//前省略

* %omitE%//后省略

* %numberF%//固定数量的数字分页

* %numberD%//左右对等的数字分页

* %input%//跳转输入框

* %GoTo%//跳转按钮

*/

private $pageType = '第%page%页/共%pageToatl%页%first%%up%%F%%omitFA%%numberF%%omitEA%%E%%down%%ending%';

//显示值设置

private $pageShow = array('first'=>'首页','ending'=>'尾页','up'=>'上一页','down'=>'下一页','GoTo'=>'GO');

/**

* 初始化数据,构造方法

* @access public

* @param int $total 数据总数量

* @param int $pageSize 每页显示条数

* @param int $pageNumber 分页数字显示数量(使用%numberF%和使用%numberD%会有不同的效果)

* @param string $pageParam分页变量

* @return void

*/

public function __construct($total,$pageSize=10,$pageNumber=5,$pageParam='p'){

$this->total = $total<0?0:$total;

$this->pageSize = $pageSize<0?0:$pageSize;

$this->pageNumber = $pageNumber<0?0:$pageNumber;

$this->pageParam = $pageParam;

$this->calculate();

}

/**

* 显示分页

* @access public

* @return string HTML分页字符串

*/

public function pageShow(){

//$this->uri();

if($this->pageToatl>1){

if($this->page == 1){

$first = ''.$this->pageShow['first'].'';

$up = ''.$this->pageShow['up'].'';

}else{

$first = ''.$this->pageShow['first'].'';

$up = ''.$this->pageShow['up'].'';

}

if($this->page >= $this->pageToatl){

$ending = ''.$this->pageShow['ending'].'';

$down = ''.$this->pageShow['down'].'';

}else{

$ending = ''.$this->pageShow['ending'].'';

$down = ''.$this->pageShow['down'].'';

}

$input = '…';

}

if($forStoppageToatl){

$omitE = '…';

$stopA = $this->page+$number>$this->pageToatl?$this->pageToatl:$this->page+$number;

$omitEA = '…';

}

}

$this->pageType = str_ireplace(array('%F%','%E%','%omitFA%','%omitEA%','%omitF%','%omitE%','%numberF%','%numberD%'),array($F,$E,$omitFA,$omitEA,$omitF,$omitE,$numberF,$numberD),$this->pageType);

}

/**

*处理url的方法

* @access public

* @param array $url 保持URL直对关系数组

* @return string 过滤后的url尾参数

*/

private function uri(){

$url = $_SERVER["REQUEST_URI"];

$par = parse_url($url);

if (isset($par['query'])) {

parse_str($par['query'],$query);

if(!is_array($this->uri)){

$this->uri = array();

}

array_merge($query,$this->uri);

unset($query[$this->pageParam]);

while($key = array_search('',$query)){

unset($query[$key]);

}

$this->uri = $par['path'].'?'.http_build_query($query);

}else{

$this->uri = $par['path'].'?';

}

}

/**

* 设置limit方法及计算起始条数和结束条数

*/

private function calculate(){

$this->pageToatl = ceil($this->total/$this->pageSize);

$this->page = intval(@$_GET[$this->pageParam]);

$this->page = $this->page>=1?$this->page>$this->pageToatl?$this->pageToatl:$this->page:1;

$this->pageStart = ($this->page-1)*$this->pageSize;

$this->pageStop = $this->pageStart+$this->pageSize;

$this->pageStop = $this->pageStop>$this->total?$this->total:$this->pageStop;

$this->limit = $this->pageStart.','.$this->pageStop;

}

/**

* 设置过滤器

*/

public function __set($name,$value){

switch($name){

case 'pageType':

case 'uri':

$this->$name = $value;

return;

case 'pageShow':

if(is_array($value)){

$this->pageShow = array_merge($this->pageShow,$value);

}

return;

}

}

/**

* 取值过滤器

*/

public function __get($name){

switch($name){

case 'limit':

case 'pageStart':

case 'pageStop':

return $this->$name;

default:

return;

}

}

}

3、演示地址: 查看demo地址

5514c2ca055235558c12ed3cf1732cfd.png

大小: 3.3 KB查看图片附件

以上就介绍了PHP分页导航 php通用分页工具类实现,包括了PHP分页导航方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值