php很好简单,一个简单且很好用的php分页类_PHP

这是一个关于PHP分页类的实现代码,通过构造函数接收总记录数、每页显示记录数和分页参数,计算总页数和当前页,并提供设置配置、显示分页等方法。代码逻辑清晰,支持跳转参数,可以灵活定制分页样式和链接。适用于大型数据集的分页展示,提高了用户体验。
摘要由CSDN通过智能技术生成

共 %totalPage% 页');

// 默认分页变量名

protected $varPage;

/**

+----------------------------------------------------------

* 架构函数

+----------------------------------------------------------

* @access public

+----------------------------------------------------------

* @param array $totalRows 总的记录数

* @param array $listRows 每页显示记录数

* @param array $parameter 分页跳转的参数

+----------------------------------------------------------

*/

public function __construct($totalRows,$listRows='',$parameter='') {

$this->totalRows = $totalRows;

$this->parameter = $parameter;

$this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ;

if(!empty($listRows)) {

$this->listRows = intval($listRows);

}

$this->totalPages = ceil($this->totalRows/$this->listRows); //总页数

$this->coolPages = ceil($this->totalPages/$this->rollPage);

//$_GET验证

$this->nowPage = intval($_GET[$this->varPage]);

$this->nowPage = $this->nowPage > 0 ? $this->nowPage : 1;

if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) {

$this->nowPage = $this->totalPages;

}

$this->firstRow = $this->listRows*($this->nowPage-1);

}

public function setConfig($name,$value) {

if(isset($this->config[$name])) {

$this->config[$name] = $value;

}

}

/**

+----------------------------------------------------------

* 分页显示输出

+----------------------------------------------------------

* @access public

+----------------------------------------------------------

*/

public function show() {

if(0 == $this->totalRows) return '';

//处理参数

$p = $this->varPage;

$url = $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this->parameter;

$parse = parse_url($url);

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

parse_str($parse['query'],$params);

unset($params[$p]);

$url = $parse['path'].'?'.http_build_query($params);

}

/* 分页逻辑 */

//当总数小于显示的页码数

if ($this->totalPages <= $this->rollPage) {

$start = 1;

$end = $this->totalPages;

}

else{

//

if ($this->nowPage <= $this->rollPage - 1) {

$start = 1;

$end = $this->rollPage;

$islast = true;

}

else if ($this->nowPage > $this->totalPages - $this->rollPage + 1) {

$start = $this->totalPages - ($this->rollPage - 1);

$end = $this->totalPages;

$isfirst = true;

}

else{

//浮动数

$size = floor($this->rollPage / 2);

$start = $this->nowPage - $size;

$end = $this->nowPage + $size;

$isfirst = true;

$islast = true;

}

}

//上下翻页字符串

$upRow = $this->nowPage - 1;

$downRow = $this->nowPage + 1;

/* 拼装HTML */

//< 1... ...last >

if ($isfirst){

$theFirst = "".$this->config['first']."";

}

if ($islast){

$theEnd = "".$this->config['last']."";

}

if ($upRow > 0){

$upPage = "".$this->config['prev']."";

}

if ($downRow <= $this->totalPages){

$downPage = "".$this->config['next']."";

}

if($start==3){

$linkPage .= "2";

}

if($start>=4){

$linkPage .= "2 ...";

}

//1 2 3 4 5

for($i=$start;$i<=$end;$i++){

if($i!=$this->nowPage){

$linkPage .= " ".$i."";

}else{

$linkPage .= " ".$i."";

}

if($i==$end){

if($itotalRows){

$linkPage .= " ...";

}

}

}

$pageStr = str_replace(

array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%first%','%prePage%','%linkPage%','%nextPage%','%downPage%','%end%'),

array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$theFirst,$prePage,$linkPage,$nextPage,$downPage,$theEnd),$this->config['theme']);

//显示模式 普通false 带跳转ture

if (!empty($this->config['redirect'])){

$html = $pageStr;

}else{

//传递参数

if($this->totalPages > 1){

$redirect = " 到第页 ";

if ($params){

foreach($params as $k => $v){

$string .= "";

}

$redirect = $redirect . $string . '

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值