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 相关文章推荐
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
用缓存实现静态页面的测试
Dec 06 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
php实现源代码加密的方法
Jul 11 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
python实现数独算法实例
2015/06/09 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
Django中使用Celery的方法步骤
2020/12/07 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
总监职责范文
2013/11/09 职场文书
酒店经理职责
2014/01/30 职场文书
2014年国培研修感言
2014/03/09 职场文书
学校安全生产承诺书
2014/05/23 职场文书
希特勒的演讲稿
2014/05/23 职场文书
职务任命书范本
2014/06/05 职场文书
2015年保送生自荐信
2015/03/24 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript
详解Go语言中Get/Post请求测试
2022/06/01 Golang