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 相关文章推荐
用PHP连接Oracle数据库
Oct 09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
为查询结果建立向后/向前按钮
2006/10/09 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
Python之str操作方法(详解)
2017/06/19 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
python实现多层感知器
2019/01/18 Python
Python地图绘制实操详解
2019/03/04 Python
python如何制作缩略图
2019/04/30 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
详解python对象之间的交互
2020/09/29 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
在什么时候需要使用"常引用"
2015/12/31 面试题
销售心得体会
2014/01/02 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
最美乡村教师观后感
2015/06/11 职场文书
新兵入伍决心书
2015/09/22 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
《废话连篇——致新手》——chinapizza
2022/04/05 无线电