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 相关文章推荐
phpMyAdmin 安装教程全攻略
Mar 19 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
php UTF8 文件的签名问题
Oct 30 PHP
php实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
PHP处理会话函数大总结
Aug 05 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 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
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
python中as用法实例分析
2015/04/30 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
Python如何实现强制数据类型转换
2019/11/22 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
Java如何支持I18N?
2016/10/31 面试题
年度考核评语
2014/01/19 职场文书
节能减耗标语
2014/06/21 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
个人作风建设自查报告
2014/10/22 职场文书
小学运动会加油词
2015/07/18 职场文书
升学宴家长答谢词
2015/09/29 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server