PHP原生分页原理,应该不难懂.

发布于 2021-05-12 23:26 ,所属分类:区块连和PHP开发学习资料


文章来自:脚本之家



http://www.jb51.net/article/117900.htm


分页原理,你懂了吗?今天被问到了,特意找了一篇文章,有兴趣的可以认真的阅读一下。


<?php

classPage {

private$total;//总记录

private$pagesize;//每页显示多少条

private$limit;//limit

private$page;//当前页码

private$pagenum;//总页码

private$url;//地址

private$bothnum;//两边保持数字分页的量

//构造方法初始化

publicfunction__construct($_total,$_pagesize) {

$this->total =$_total?$_total: 1;

$this->pagesize =$_pagesize;

$this->pagenum =ceil($this->total /$this->pagesize);

$this->page =$this->setPage();

$this->limit ="LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize";

$this->url =$this->setUrl();

$this->bothnum = 2;

}

//拦截器

privatefunction__get($_key) {

return$this->$_key;

}

//获取当前页码

privatefunctionsetPage() {

if(!empty($_GET['page'])) {

if($_GET['page'] > 0) {

if($_GET['page'] >$this->pagenum) {

return$this->pagenum;

}else{

return$_GET['page'];

}

}else{

return1;

}

}else{

return1;

}

}

//获取地址

privatefunctionsetUrl() {

$_url=$_SERVER["REQUEST_URI"];

$_par=parse_url($_url);

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

parse_str($_par['query'],$_query);

unset($_query['page']);

$_url=$_par['path'].'?'.http_build_query($_query);

}

return$_url;

}//数字目录

privatefunctionpageList() {

for($i=$this->bothnum;$i>=1;$i--) {

$_page=$this->page-$i;

if($_page< 1)continue;

$_pagelist.=' <a href="'.$this->url.'&page='.$_page.'" rel="external nofollow" rel="external nofollow" >'.$_page.'</a> ';

}

$_pagelist.=' <span >'.$this->page.'</span> ';

for($i=1;$i<=$this->bothnum;$i++) {

$_page=$this->page+$i;

if($_page>$this->pagenum)break;

$_pagelist.=' <a href="'.$this->url.'&page='.$_page.'" rel="external nofollow" rel="external nofollow" >'.$_page.'</a> ';

}

return$_pagelist;

}

//首页

privatefunctionfirst() {

if($this->page >$this->bothnum+1) {

return' <a href="'.$this->url.'" rel="external nofollow" >1</a> ...';

}

}

//上一页

privatefunctionprev() {

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

return'<span >上一页</span>';

}

return' <a href="'.$this->url.'&page='.($this->page-1).'" rel="external nofollow" >上一页</a> ';

}

//下一页

privatefunctionnext() {

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

return'<span >下一页</span>';

}

return' <a href="'.$this->url.'&page='.($this->page+1).'" rel="external nofollow" >下一页</a> ';

}

//尾页

privatefunctionlast() {

if($this->pagenum -$this->page >$this->bothnum) {

return' ...<a href="'.$this->url.'&page='.$this->pagenum.'" rel="external nofollow" >'.$this->pagenum.'</a> ';

}

}

//分页信息

publicfunctionshowpage() {

$_page.=$this->first();

$_page.=$this->pageList();

$_page.=$this->last();

$_page.=$this->prev();

$_page.=$this->next();

return$_page;

}

}

?>

分页样式如下图所示:

使用说明:


<?php

$_page=newPage($_total,$_pagesize);

//其中 $_total 是数据集的总条数,$_pagesize 是每页显示的数量.

?>


以下ErWeiMa是小编的号,小编也会每天把文章视频教程都分享在朋友圈,有需要的友友可以加小编一起学习


相关资源