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 相关文章推荐
数据库相关问题
Oct 09 PHP
十天学会php之第四天
Oct 09 PHP
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
微信支付开发告警通知实例
Jul 12 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
详解python时间模块中的datetime模块
2016/01/13 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python开头的coding设置方法
2019/08/08 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
自我鉴定模板
2013/10/29 职场文书
利群广告词
2014/03/20 职场文书
消防安全责任书
2014/04/14 职场文书
班风学风建设方案
2014/05/06 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
Python jiaba库的使用详解
2021/11/23 Python
python读取mat文件生成h5文件的实现
2022/07/15 Python