php自定义分页类完整实例


Posted in PHP onDecember 25, 2015

本文实例讲述了php自定义分页类。分享给大家供大家参考,具体如下:

<?php
header("Content-type:text/html;Charset=utf-8");
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;//显示分页的类型
/*
  当@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){
  $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);
 }
  // show_SubPages函数用在构造函数里面。而且用来判断显示什么样子的分页
 /* function show_SubPages($subPage_type){
   if($subPage_type == 1){
   $this->subPageCss1();
   }else if ($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;
    }
   }else if ($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.="[尾页]";
  }
  return $subPageCss1Str; //在此可以设置显示的CSS样式
  }
 /*
  构造经典模式的分页
  当前第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.="[尾页] ";
  }
  return $subPageCss2Str;
  }
}
//使用如下
/*include('../mysql.php');
//每页显示的条数
 $page_size=3;
//总条目数
$sql=mysql_query("select * from `stu_info`");
$nums=mysql_num_rows($sql);
//每次显示的页数
 $sub_pages=10;
//得到当前是第几页
 if(!isset($_GET["p"])){
 $pageCurrent=1;
 }else{
  $pageCurrent=$_GET["p"];
 }
 $subPages=new SubPages($page_size,$nums,$pageCurrent,$sub_pages,"page.php?p=");
 $page=$subPages->subPageCss2();
 echo $page;//在此可以设置CSS样式
 $ss=mysql_query("select * from `stu_info` limit ".$page_size*($pageCurrent-1).",".$page_size);
 while($row=mysql_fetch_array($ss)){
 echo $row['stunum'].''.$row['stuname'].''.$row['clanum'].'<br>';
 }*/
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
第十五节--Zend引擎的发展
Nov 16 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
Sep 13 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
phplot生成图片类用法详解
Jan 06 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
基于PHP实现用户在线状态检测
Nov 10 PHP
php导出生成word的方法
Dec 25 #PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 #PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 #PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 #PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 #PHP
php实现统计目录文件大小的函数
Dec 25 #PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 #PHP
You might like
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
php命令行写shell实例详解
2018/07/19 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
python封装对象实现时间效果
2020/04/23 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
Python @property及getter setter原理详解
2020/03/31 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python