php封装的page分页类完整实例代码


Posted in PHP onFebruary 01, 2020

效果图

php封装的page分页类完整实例代码

1.测试实例test.php

<?php
header("Content-Type: text/html; charset=utf-8");
date_default_timezone_set("Asia/Shanghai"); //时区

require_once('page.class.php');

$showrow = 5;
$curpage = empty($_GET['page']) ? 1 : $_GET['page'];
$url = "?page={page}";
$dsn = 'mysql:host=xxx.xxx.80.xxx;dbname=admin';
$pdo = new PDO($dsn, 'root', 'root');
$pdo->query('set names utf8');
$sql = "SELECT * from operator_list where 1=1";

$res_gg = $pdo->query("SELECT count(*) as ctn from operator_list where 1=1;");
$result = $res_gg->fetch();

$total = $result["ctn"];

if (!empty($_GET['page']) && $total != 0 && $curpage > ceil($total / $showrow)) {
 $curpage = ceil($total_rows / $showrow);
}
$sql .= " LIMIT " . ($curpage - 1) * $showrow . ",$showrow;";

$res_zz = $pdo->query($sql);
$result = $res_zz->fetchAll();

//print_r(json_encode($result));die;

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title></title>
 <meta name="keywords" content="入库"/>
 <meta name="description" content="入库"/>
 <script type="text/javascript" src="static/js/jquery-1.11.0.min.js?v=1"></script>
 <link rel="stylesheet" type="text/css" href="static/css/common.css" rel="external nofollow" />
</head>
<body>
<div class="head">
 <!-- <div class="head_inner clearfix">-->
 <!--  <ul id="nav">-->
 <!--   <li><a href="javascript;" rel="external nofollow" rel="external nofollow" >商品列表</a></li>-->
 <!--   <li><a href="javascript;" rel="external nofollow" rel="external nofollow" >详情列表</a></li>-->
 <!--  </ul>-->
 <!--    <a class="logo" href="javascript" rel="external nofollow" >
      <img src="javascript;" alt="公司logo" /></a> -->
 <!-- </div>-->
</div>
<div class="container">
 <div class="demo">
  <h2 class="title">报表</h2>

  <div class="showData">
   <table width="100%" border="0" align="center" 
   style="border:1px solid #ccc;" cellpadding="0" cellspacing="1">
    <tr align="center">
     <td>ID</td>
     <td>商品编号</td>
     <td>订阅状态</td>
     <td>商品状态</td>
     <td>修改时间</td>
     <td>创建时间</td>
    </tr>
    <?php
    if (!empty($result)) {
     foreach ($result as $k => $v) {
      ?>
      <tr align="center">
       <td><?php echo $v['id']; ?></td>
       <td><?php echo $v["customer_id"]; ?></td>
       <td><?php echo $v["name"]; ?></td>
       <td><?php echo $v["role_id"]; ?></td>
       <td><?php echo $v["status"]; ?></td>
       <td><?php echo $v["cdate"]; ?></td>
      </tr>
      <?php
     }
    }
    ?>
   </table>
  </div>
  <div class="showPage">
   <?php
   if ($total > $showrow) {//总记录数大于每页显示数,显示分页
    $page = new page($total, $showrow, $curpage, $url, 3);
    echo $page->myde_write();
   }
   ?>
  </div>
 </div>
</div>
<div class="foot">
 阿里巴巴:<a href="#" rel="external nofollow" target="_blank">https://www.taobao.com</a>
</div>
</body>
</html>

2.封装的page分页类page.class.php

<?php

/* * *********************************************
 * @类名: page
 * @参数: $myde_total - 总记录数
 *   $myde_size - 一页显示的记录数
 *   $myde_page - 当前页
 *   $myde_url - 获取当前的url
 * @功能: 分页实现
 */

class page {

 private $myde_total;   //总记录数
 private $myde_size;   //一页显示的记录数
 private $myde_page;   //当前页
 private $myde_page_count;  //总页数
 private $myde_i;    //起头页数
 private $myde_en;    //结尾页数
 private $myde_url;   //获取当前的url
 /*
  * $show_pages
  * 页面显示的格式,显示链接的页数为2*$show_pages+1。
  * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
  */
 private $show_pages;

 public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
  $this->myde_total = $this->numeric($myde_total);
  $this->myde_size = $this->numeric($myde_size);
  $this->myde_page = $this->numeric($myde_page);
  $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
  $this->myde_url = $myde_url;
  if ($this->myde_total < 0)
   $this->myde_total = 0;
  if ($this->myde_page < 1)
   $this->myde_page = 1;
  if ($this->myde_page_count < 1)
   $this->myde_page_count = 1;
  if ($this->myde_page > $this->myde_page_count)
   $this->myde_page = $this->myde_page_count;
  $this->limit = ($this->myde_page - 1) * $this->myde_size;
  $this->myde_i = $this->myde_page - $show_pages;
  $this->myde_en = $this->myde_page + $show_pages;
  if ($this->myde_i < 1) {
   $this->myde_en = $this->myde_en + (1 - $this->myde_i);
   $this->myde_i = 1;
  }
  if ($this->myde_en > $this->myde_page_count) {
   $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
   $this->myde_en = $this->myde_page_count;
  }
  if ($this->myde_i < 1)
   $this->myde_i = 1;
 }

 //检测是否为数字
 private function numeric($num) {
  if (strlen($num)) {
   if (!preg_match("/^[0-9]+$/", $num)) {
    $num = 1;
   } else {
    $num = substr($num, 0, 11);
   }
  } else {
   $num = 1;
  }
  return $num;
 }

 //地址替换
 private function page_replace($page) {
  return str_replace("{page}", $page, $this->myde_url);
 }

 //首页
 private function myde_home() {
  if ($this->myde_page != 1) {
   return "<a href='" . $this->page_replace(1) . "' title='首页'>首页</a>";
  } else {
   return "<p>首页</p>";
  }
 }

 //上一页
 private function myde_prev() {
  if ($this->myde_page != 1) {
   return "<a href='" . $this->page_replace($this->myde_page - 1) . "' title='上一页'>上一页</a>";
  } else {
   return "<p>上一页</p>";
  }
 }

 //下一页
 private function myde_next() {
  if ($this->myde_page != $this->myde_page_count) {
   return "<a href='" . $this->page_replace($this->myde_page + 1) . "' title='下一页'>下一页</a>";
  } else {
   return"<p>下一页</p>";
  }
 }

 //尾页
 private function myde_last() {
  if ($this->myde_page != $this->myde_page_count) {
   return "<a href='" . $this->page_replace($this->myde_page_count) . "' title='尾页'>尾页</a>";
  } else {
   return "<p>尾页</p>";
  }
 }

 //输出
 public function myde_write($id = 'page') {
  $str = "<div id=" . $id . ">";
  $str.=$this->myde_home();
  $str.=$this->myde_prev();
  if ($this->myde_i > 1) {
   $str.="<p class='pageEllipsis'>...</p>";
  }
  for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {
   if ($i == $this->myde_page) {
    $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页' class='cur'>$i</a>";
   } else {
    $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页'>$i</a>";
   }
  }
  if ($this->myde_en < $this->myde_page_count) {
   $str.="<p class='pageEllipsis'>...</p>";
  }
  $str.=$this->myde_next();
  $str.=$this->myde_last();
  $str.="<p class='pageRemark'>共<b>" . $this->myde_page_count .
    "</b>页<b>" . $this->myde_total . "</b>条数据</p>";
  $str.="</div>";
  return $str;
 }

}

?>

3.css样式

html, body, div, span, h1, h2, h3, h4, h5, h6, p, pre, 
a, code, em, img, small, strong, sub, sup, u, i, center, 
dl, dt, dd, ol, ul, li, fieldset, form, label {
 margin: 0;
 padding: 0;
 border: 0;
 outline: 0;
 font-size: 100%;
 vertical-align: baseline;
 background: transparent
}

a {
 color: #007bc4;
 text-decoration: none;
 cursor: pointer;
}

.table_parameters a:hover {
 text-decoration: none
}

a:hover {
 text-decoration: underline
}

ol, ul {
 list-style: none
}

table {
 border-collapse: collapse;
 border-spacing: 0
}

/*html {*/
/*background: url(../images/demo_bg.png)*/
/*}*/

body {
 height: 100%;
 font: 12px/18px "Microsoft Yahei", Tahoma, Helvetica, 
 Arial, Verdana, "\5b8b\4f53", sans-serif;
 color: #51555c
}

img {
 border: 0;
 cursor: pointer;
}

.clearfix:after {
 visibility: hidden;
 display: block;
 font-size: 0;
 content: " ";
 clear: both;
 height: 0
}

.head {
 /*border-bottom: 1px solid #dadada;*/
 padding: 0 0 5px
}

.head_inner {
 margin: 0 auto;
 width: 980px
}

.container {
 width: 80%;
 /*min-height: 600px;*/
 margin: 30px auto 0 auto;
 border: 1px solid #d3d3d3;
 background: #fff;
 -moz-border-radius: 5px;
 -khtml-border-radius: 5px;
 -webkit-border-radius: 5px;
 border-radius: 5px
}

.demo > h2.title {
 margin: 4px 0 30px;
 padding: 15px 0 10px 20px;
 border-bottom: 1px solid #d3d3d3;
 font-size: 18px;
 color: #a84c10;
 background: url(../images/arrow.jpg) no-repeat 2px 14px
}

.foot {
 height: 60px;
 padding: 10px 2px;
 line-height: 24px;
 text-align: center
}

.foot a:hover {
 color: #51555c
}

.btn {
 -webkit-border-radius: 3px;
 -moz-border-radius: 3px;
 -ms-border-radius: 3px;
 -o-border-radius: 3px;
 border-radius: 3px;
 background-color: #ff8400;
 color: #fff;
 display: inline-block;
 height: 28px;
 line-height: 28px;
 text-align: center;
 padding: 0 12px;
 transition: background-color .2s linear 0s;
 border: 0;
 cursor: pointer
}

.btn:hover {
 background-color: #e95a00;
 text-decoration: none
}

.demo {
 width: 700px;
 margin: 0 auto
}

ul.ul_demo li {
 background: url("../images/demo_icon.gif") no-repeat scroll 0 6px;
 line-height: 28px;
 padding-left: 20px
}

.input, .table input[type='text'] {
 border: 1px solid #ccc;
 padding: 0 5px;
 width: 220px;
 height: 26px;
 line-height: 26px
}

#nav {
 float: right;
 margin: 30px 0 0
}

#nav li {
 float: left;
 font-size: 16px;
 margin-right: 20px
}

.btn.loading {
 opacity: .5
}

h3 a.cur {
 color: #f30;
}

.demo h3 a {
 font-size: 14px;
 margin: 0 10px 5px 0;
 display: inline-block
}

.red {
 color: red
}

.notice {
 font-size: 14px;
 margin-bottom: 10px;
}

.table_parameters {
 border-left: 1px solid #d3d3d3;
 border-top: 1px solid #d3d3d3;
 margin: 6px auto;
 font-size: 14px
}

.table_parameters tr.tr_head {
 background: none repeat scroll 0 0 #f7f7f7;
 font-weight: bold;
 padding: 6px;
 text-align: center
}

.table_parameters td, .table_parameters th {
 border-bottom: 1px solid #d3d3d3;
 border-right: 1px solid #d3d3d3;
 line-height: 26px;
 padding: 2px
}

h1 {
 font: 32px "Microsoft Yahei";
 margin: 40px auto;
 text-align: center;
}

h2 {
 font-size: 16px;
 margin: 10px 0;
}

.menu {
 height: 30px;
 margin-bottom: 30px;
 padding: 10px;
 background-color: #f0f0f0;
 text-align: center;
}

.menu a {
 display: inline-block;
 height: 30px;
 padding: 0 20px;
 line-height: 30px;
 font-size: 14px;
 color: #333;
 text-decoration: none;
}

.menu a:hover {
 color: #000;
 background-color: #e9e9e9;
}

.menu .cur {
 background-color: #ddd !important;
 color: #000;
}

.vad a {
 display: inline-block;
 height: 36px;
 line-height: 36px;
 margin: 0 5px;
 padding: 0 50px;
 font-size: 14px;
 text-align: center;
 color: #eee;
 text-decoration: none;
 background-color: #222;
}

.vad a:hover {
 color: #fff;
 background-color: #000;
}

.thead {
 width: 728px;
 height: 90px;
 margin: 0 auto;
}

textarea {
 border: 1px solid #ccc;
 font-size: 12px;
 height: 100px;
 line-height: 18px;
 padding: 5px;
 width: 300px;
}

.table td {
 padding: 10px 0
}

.disabled {
 opacity: .6;
 filter: alpha(opacity=60)
}
.demo > p {
 line-height: 30px;
 font-size: 14px
}

.demo > p a {
 font-size: 14px
}

.demo h3 {
 font-size: 16px;
 margin: 20px 0
}

select {
 background-color: #fff;
 background-position: right center;
 background-repeat: no-repeat;
 border: 1px solid #888;
 border-radius: 3px;
 box-sizing: border-box;
 font: 12px/1.5 Tahoma, Arial, sans-serif;
 height: 30px;
 padding: 0 4px;
}

fieldset {
 border: 1px solid #ccc;
 border-radius: 5px;
 margin: 1em 0;
 padding: 10px 20px;
}

dl.row dt {
 width: 2em;
}

dl.row dt {
 clear: left;
 float: left;
 line-height: 30px;
 padding: 5px;
 text-align: right;
 width: 6em;
}

dl.row dd {
 float: left;
 padding: 5px;
}

.pager {
 text-align: right;
}

.pager a {
 padding: 3px 8px;
 margin-left: 3px;
 line-height: 20px;
 background: #f9f9f9;
 border: 1px solid #DBDBDB;
 text-decoration: none
}

.pager a:hover,
.pager a.current {
 background-color: #7CD5B1;
 color: #fff;
 border: 1px solid #7CD5B1;
 cursor: pointer;
}

.page {
 text-align: center;
 margin: 50px 0
}

.page a, .page span.prev_disabled {
 border: 1px solid #ededed;
 color: #3d3d3d;
 font-weight: 700;
 height: 35px;
 line-height: 35px;
 margin-left: 5px;
 min-width: 9px;
 padding: 0 13px;
 text-align: center;
 text-decoration: none;
 vertical-align: top;
 font-family: "simsun";
 display: inline-block
}

.page span.prev_disabled {
 cursor: default;
 color: #ccc;
 margin: 0 10px 0 0
}

.page a.current {
 background-color: #f40;
 border-color: #f40;
 color: #fff;
 font-weight: 700;
 position: relative;
 z-index: 1;
}

.page .extra {
 display: inline-block;
 margin-left: 10px;
 height: 35px;
 line-height: 35px;
 color: #656565;
}

.page .page-num {
 border: 1px solid #ededed;
 height: 21px;
 text-align: center;
 width: 35px;
 display: inline-block
}

.page .page-submit {
 background-clip: padding-box;
 border: 1px solid #ededed;
 border-radius: 2px;
 cursor: pointer;
 height: 21px;
 line-height: 21px;
 text-align: center;
 width: 43px;
 display: inline-block
}

.page .page-submit:hover {
 border-color: #f40;
 color: #f40;
}

.page a:focus, .page a:hover {
 border-color: #f40;
 z-index: 1;
}

.loading {
 margin: 30px 0;
 text-align: center
}

p {
 margin: 0
}

#page {
 height: 40px;
 padding: 20px 0px;
}

#page a {
 display: block;
 float: left;
 margin-right: 10px;
 padding: 2px 12px;
 height: 24px;
 border: 1px #cccccc solid;
 background: #fff;
 text-decoration: none;
 color: #808080;
 font-size: 12px;
 line-height: 24px;
}

#page a:hover {
 color: #077ee3;
 border: 1px #077ee3 solid;
}

#page a.cur {
 border: none;
 background: #077ee3;
 color: #fff;
}

#page p {
 float: left;
 padding: 2px 12px;
 font-size: 12px;
 height: 24px;
 line-height: 24px;
 color: #bbb;
 border: 1px #ccc solid;
 background: #fcfcfc;
 margin-right: 8px;

}

#page p.pageRemark {
 border-style: none;
 background: none;
 margin-right: 0px;
 padding: 4px 0px;
 color: #666;
}

#page p.pageRemark b {
 color: red;
}

#page p.pageEllipsis {
 border-style: none;
 background: none;
 padding: 4px 0px;
 color: #808080;
}

.dates li {
 font-size: 14px;
 margin: 20px 0
}

.dates li span {
 text-align: center
}

td {
 font-size: 15px;
 margin: 20px 0
}

具体的大家可以多学习别人的php分页类然后多练就可以了。

PHP 相关文章推荐
模仿OSO的论坛(二)
Oct 09 PHP
将数组写入txt文件 var_export
Apr 21 PHP
php中转义mysql语句的实现代码
Jun 24 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
10个php函数实用却不常见
Oct 13 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 #PHP
PHP设计模式之组合模式定义与应用示例
Feb 01 #PHP
php实现的简单多进程服务器类完整示例
Feb 01 #PHP
laravel 框架执行流程与原理简单分析
Feb 01 #PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 #PHP
php正则表达式使用方法整理集合
Jan 31 #PHP
laravel邮件发送的实现代码示例
Jan 31 #PHP
You might like
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
简单JS代码压缩器
2006/10/12 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
初始Nodejs
2014/11/08 NodeJs
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
django的ORM操作 增加和查询
2019/07/26 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Python2与Python3的区别点整理
2019/12/12 Python
浅谈Python中的继承
2020/06/19 Python
Python中生成ndarray实例讲解
2021/02/22 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
体育教师工作总结的自我评价
2013/10/10 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP