设为首页 收藏本站
查看: 360|回复: 0

[经验分享] 【转】简单,方便,功能全的php分页类

[复制链接]

尚未签到

发表于 2017-4-10 07:22:22 | 显示全部楼层 |阅读模式
  分页类:
  


<?php  
class SubPages{  
private  $each_disNums;//每页显示的条目数  
private  $nums;//总条目数  
private  $current_page;//当前被选中的页  
private  $sub_pages;//每次显示的页数  
private  $pageNums;//总页数  
private  $page_array = array();//用来构造分页的数组  
private  $subPage_link;//每个分页的链接  
private  $subPage_type;//显示分页的类型  
/*
__construct是SubPages的构造函数,用来在创建类的时候自动运行.
@$each_disNums   每页显示的条目数
@nums     总条目数
@current_num     当前被选中的页
@sub_pages       每次显示的页数
@subPage_link    每个分页的链接
@subPage_type    显示分页的类型
当@subPage_type=1的时候为普通分页模式
example:   共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
当@subPage_type=2的时候为经典分页样式
example:   当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){  
$this->each_disNums=intval($each_disNums);  
$this->nums=intval($nums);  
if(!$current_page){  
$this->current_page=1;  
}else{  
$this->current_page=intval($current_page);  
}  
$this->sub_pages=intval($sub_pages);  
$this->pageNums=ceil($nums/$each_disNums);  
$this->subPage_link=$subPage_link;   
$this->show_SubPages($subPage_type);   
//echo $this->pageNums."--".$this->sub_pages;  
}  

/*
__destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。
*/
function __destruct(){  
unset($each_disNums);  
unset($nums);  
unset($current_page);  
unset($sub_pages);  
unset($pageNums);  
unset($page_array);  
unset($subPage_link);  
unset($subPage_type);  
}  
/*
show_SubPages函数用在构造函数里面。而且用来判断显示什么样子的分页   
*/
function show_SubPages($subPage_type){  
if($subPage_type == 1){  
$this->subPageCss1();  
}elseif ($subPage_type == 2){  
$this->subPageCss2();  
}  
}  

/*
用来给建立分页的数组初始化的函数。
*/
function initArray(){  
for($i=0;$i<$this->sub_pages;$i++){  
$this->page_array[$i]=$i;  
}  
return $this->page_array;  
}  

/*
construct_num_Page该函数使用来构造显示的条目
即使:[1][2][3][4][5][6][7][8][9][10]
*/
function construct_num_Page(){  
if($this->pageNums < $this->sub_pages){  
$current_array=array();  
for($i=0;$i<$this->pageNums;$i++){   
$current_array[$i]=$i+1;  
}  
}else{  
$current_array=$this->initArray();  
if($this->current_page <= 3){  
for($i=0;$i<count($current_array);$i++){  
$current_array[$i]=$i+1;  
}  
}elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){  
for($i=0;$i<count($current_array);$i++){  
$current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;  
}  
}else{  
for($i=0;$i<count($current_array);$i++){  
$current_array[$i]=$this->current_page-2+$i;  
}  
}  
}  
return $current_array;  
}  
/*
构造普通模式的分页
共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
*/
function subPageCss1(){  
$subPageCss1Str="";  
$subPageCss1Str.="共".$this->nums."条记录,";  
$subPageCss1Str.="每页显示".$this->each_disNums."条,";  
$subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页 ";  
if($this->current_page > 1){  
$firstPageUrl=$this->subPage_link."1";  
$prewPageUrl=$this->subPage_link.($this->current_page-1);  
$subPageCss1Str.="[<a href='$firstPageUrl'>首页</a>] ";  
$subPageCss1Str.="[<a href='$prewPageUrl'>上一页</a>] ";  
}else {  
$subPageCss1Str.="[首页] ";  
$subPageCss1Str.="[上一页] ";  
}  
if($this->current_page < $this->pageNums){  
$lastPageUrl=$this->subPage_link.$this->pageNums;  
$nextPageUrl=$this->subPage_link.($this->current_page+1);  
$subPageCss1Str.=" [<a href='$nextPageUrl'>下一页</a>] ";  
$subPageCss1Str.="[<a href='$lastPageUrl'>尾页</a>] ";  
}else {  
$subPageCss1Str.="[下一页] ";  
$subPageCss1Str.="[尾页] ";  
}  
echo $subPageCss1Str;  
}  

/*
构造经典模式的分页
当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
function subPageCss2(){  
$subPageCss2Str="";  
$subPageCss2Str.="当前第".$this->current_page."/".$this->pageNums."页 ";  

if($this->current_page > 1){  
$firstPageUrl=$this->subPage_link."1";  
$prewPageUrl=$this->subPage_link.($this->current_page-1);  
$subPageCss2Str.="[<a href='$firstPageUrl'>首页</a>] ";  
$subPageCss2Str.="[<a href='$prewPageUrl'>上一页</a>] ";  
}else {  
$subPageCss2Str.="[首页] ";  
$subPageCss2Str.="[上一页] ";  
}  
$a=$this->construct_num_Page();  
for($i=0;$i<count($a);$i++){  
$s=$a[$i];  
if($s == $this->current_page ){  
$subPageCss2Str.="[<span style='color:red;font-weight:bold;'>".$s."</span>]";  
}else{  
$url=$this->subPage_link.$s;  
$subPageCss2Str.="[<a href='$url'>".$s."</a>]";  
}  
}  
if($this->current_page < $this->pageNums){  
$lastPageUrl=$this->subPage_link.$this->pageNums;  
$nextPageUrl=$this->subPage_link.($this->current_page+1);  
$subPageCss2Str.=" [<a href='$nextPageUrl'>下一页</a>] ";  
$subPageCss2Str.="[<a href='$lastPageUrl'>尾页</a>] ";  
}else {  
$subPageCss2Str.="[下一页] ";  
$subPageCss2Str.="[尾页] ";  
}  
echo $subPageCss2Str;  
}  
}  
?>
   演示代码:
  


<?php  
require_once("SubPages.php");  
//每页显示的条数  
$page_size=20;  
//总条目数  
$nums=1024;  
//每次显示的页数  
$sub_pages=10;  
//得到当前是第几页  
$pageCurrent=$_GET["p"];  
//if(!$pageCurrent) $pageCurrent=1;  
$subPages=new SubPages($page_size,$nums,$pageCurrent,$sub_pages,"test.php?p=",2);  
?>
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-362612-1-1.html 上篇帖子: php 根据两点的经纬度计算距离 下篇帖子: php——数据库连接的伪单例模式代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表