• 售前

  • 售后

热门帖子
入门百科

PHP封装的page分页类定义与用法完备示例

[复制链接]
123457092 显示全部楼层 发表于 2021-10-26 13:36:23 |阅读模式 打印 上一主题 下一主题
本文实例报告了PHP封装的page分页类界说与用法。分享给大家供大家参考,详细如下:
亲测有效,见下图=========>

1. 测试实例test.php
  1. <?php
  2. header("Content-Type: text/html; charset=utf-8");
  3. date_default_timezone_set("Asia/Shanghai"); //时区
  4. require_once('page.class.php');
  5. $showrow = 5;
  6. $curpage = empty($_GET['page']) ? 1 : $_GET['page'];
  7. $url = "?page={page}";
  8. $dsn = 'mysql:host=xxx.xxx.80.xxx;dbname=admin';
  9. $pdo = new PDO($dsn, 'root', 'root');
  10. $pdo->query('set names utf8');
  11. $sql = "SELECT * from operator_list where 1=1";
  12. $res_gg = $pdo->query("SELECT count(*) as ctn from operator_list where 1=1;");
  13. $result = $res_gg->fetch();
  14. $total = $result["ctn"];
  15. if (!empty($_GET['page']) && $total != 0 && $curpage > ceil($total / $showrow)) {
  16.   $curpage = ceil($total_rows / $showrow);
  17. }
  18. $sql .= " LIMIT " . ($curpage - 1) * $showrow . ",$showrow;";
  19. $res_zz = $pdo->query($sql);
  20. $result = $res_zz->fetchAll();
  21. //print_r(json_encode($result));die;
  22. ?>
  23. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  24.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  25. <html xmlns="http://www.w3.org/1999/xhtml">
  26. <head>
  27.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  28.   <title></title>
  29.   <meta name="keywords" content="入库"/>
  30.   <meta name="description" content="入库"/>
  31.   <script type="text/javascript" src="static/js/jquery-1.11.0.min.js?v=1"></script>
  32.   <link rel="stylesheet" type="text/css" href="static/css/common.css" rel="external nofollow" />
  33. </head>
  34. <body>
  35. <div class="head">
  36.   <!--  <div class="head_inner clearfix">-->
  37.   <!--    <ul id="nav">-->
  38.   <!--      <li><a href="javascript;" rel="external nofollow" rel="external nofollow" >商品列表</a></li>-->
  39.   <!--      <li><a href="javascript;" rel="external nofollow" rel="external nofollow" >详情列表</a></li>-->
  40.   <!--    </ul>-->
  41.   <!--        <a class="logo" href="javascript" rel="external nofollow" >
  42.             <img src="javascript;" alt="公司logo" /></a> -->
  43.   <!--  </div>-->
  44. </div>
  45. <div class="container">
  46.   <div class="demo">
  47.     <h2 class="title">报表</h2>
  48.     <div class="showData">
  49.       <table width="100%" border="0" align="center"
  50.       style="border:1px solid #ccc;" cellpadding="0" cellspacing="1">
  51.         <tr align="center">
  52.           <td>ID</td>
  53.           <td>商品编号</td>
  54.           <td>订阅状态</td>
  55.           <td>商品状态</td>
  56.           <td>修改时间</td>
  57.           <td>创建时间</td>
  58.         </tr>
  59.         <?php
  60.         if (!empty($result)) {
  61.           foreach ($result as $k => $v) {
  62.             ?>
  63.             <tr align="center">
  64.               <td><?php echo $v['id']; ?></td>
  65.               <td><?php echo $v["customer_id"]; ?></td>
  66.               <td><?php echo $v["name"]; ?></td>
  67.               <td><?php echo $v["role_id"]; ?></td>
  68.               <td><?php echo $v["status"]; ?></td>
  69.               <td><?php echo $v["cdate"]; ?></td>
  70.             </tr>
  71.             <?php
  72.           }
  73.         }
  74.         ?>
  75.       </table>
  76.     </div>
  77.     <div class="showPage">
  78.       <?php
  79.       if ($total > $showrow) {//总记录数大于每页显示数,显示分页
  80.         $page = new page($total, $showrow, $curpage, $url, 3);
  81.         echo $page->myde_write();
  82.       }
  83.       ?>
  84.     </div>
  85.   </div>
  86. </div>
  87. <div class="foot">
  88.   阿里巴巴:<a href="#" rel="external nofollow" target="_blank">https://www.taobao.com</a>
  89. </div>
  90. </body>
  91. </html>
复制代码
2. 封装的page分页类page.class.php
  1. <?php
  2. /* * *********************************************
  3. * @类名:  page
  4. * @参数:  $myde_total - 总记录数
  5. *     $myde_size - 一页显示的记录数
  6. *     $myde_page - 当前页
  7. *     $myde_url - 获取当前的url
  8. * @功能:  分页实现
  9. */
  10. class page {
  11.   private $myde_total;     //总记录数
  12.   private $myde_size;      //一页显示的记录数
  13.   private $myde_page;      //当前页
  14.   private $myde_page_count;   //总页数
  15.   private $myde_i;       //起头页数
  16.   private $myde_en;       //结尾页数
  17.   private $myde_url;      //获取当前的url
  18.   /*
  19.    * $show_pages
  20.    * 页面显示的格式,显示链接的页数为2*$show_pages+1。
  21.    * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
  22.    */
  23.   private $show_pages;
  24.   public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
  25.     $this->myde_total = $this->numeric($myde_total);
  26.     $this->myde_size = $this->numeric($myde_size);
  27.     $this->myde_page = $this->numeric($myde_page);
  28.     $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
  29.     $this->myde_url = $myde_url;
  30.     if ($this->myde_total < 0)
  31.       $this->myde_total = 0;
  32.     if ($this->myde_page < 1)
  33.       $this->myde_page = 1;
  34.     if ($this->myde_page_count < 1)
  35.       $this->myde_page_count = 1;
  36.     if ($this->myde_page > $this->myde_page_count)
  37.       $this->myde_page = $this->myde_page_count;
  38.     $this->limit = ($this->myde_page - 1) * $this->myde_size;
  39.     $this->myde_i = $this->myde_page - $show_pages;
  40.     $this->myde_en = $this->myde_page + $show_pages;
  41.     if ($this->myde_i < 1) {
  42.       $this->myde_en = $this->myde_en + (1 - $this->myde_i);
  43.       $this->myde_i = 1;
  44.     }
  45.     if ($this->myde_en > $this->myde_page_count) {
  46.       $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
  47.       $this->myde_en = $this->myde_page_count;
  48.     }
  49.     if ($this->myde_i < 1)
  50.       $this->myde_i = 1;
  51.   }
  52.   //检测是否为数字
  53.   private function numeric($num) {
  54.     if (strlen($num)) {
  55.       if (!preg_match("/^[0-9]+$/", $num)) {
  56.         $num = 1;
  57.       } else {
  58.         $num = substr($num, 0, 11);
  59.       }
  60.     } else {
  61.       $num = 1;
  62.     }
  63.     return $num;
  64.   }
  65.   //地址替换
  66.   private function page_replace($page) {
  67.     return str_replace("{page}", $page, $this->myde_url);
  68.   }
  69.   //首页
  70.   private function myde_home() {
  71.     if ($this->myde_page != 1) {
  72.       return "<a href='" . $this->page_replace(1) . "' title='首页'>首页</a>";
  73.     } else {
  74.       return "<p>首页</p>";
  75.     }
  76.   }
  77.   //上一页
  78.   private function myde_prev() {
  79.     if ($this->myde_page != 1) {
  80.       return "<a href='" . $this->page_replace($this->myde_page - 1) . "' title='上一页'>上一页</a>";
  81.     } else {
  82.       return "<p>上一页</p>";
  83.     }
  84.   }
  85.   //下一页
  86.   private function myde_next() {
  87.     if ($this->myde_page != $this->myde_page_count) {
  88.       return "<a href='" . $this->page_replace($this->myde_page + 1) . "' title='下一页'>下一页</a>";
  89.     } else {
  90.       return"<p>下一页</p>";
  91.     }
  92.   }
  93.   //尾页
  94.   private function myde_last() {
  95.     if ($this->myde_page != $this->myde_page_count) {
  96.       return "<a href='" . $this->page_replace($this->myde_page_count) . "' title='尾页'>尾页</a>";
  97.     } else {
  98.       return "<p>尾页</p>";
  99.     }
  100.   }
  101.   //输出
  102.   public function myde_write($id = 'page') {
  103.     $str = "<div id=" . $id . ">";
  104.     $str.=$this->myde_home();
  105.     $str.=$this->myde_prev();
  106.     if ($this->myde_i > 1) {
  107.       $str.="<p class='pageEllipsis'>...</p>";
  108.     }
  109.     for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {
  110.       if ($i == $this->myde_page) {
  111.         $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页' class='cur'>$i</a>";
  112.       } else {
  113.         $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页'>$i</a>";
  114.       }
  115.     }
  116.     if ($this->myde_en < $this->myde_page_count) {
  117.       $str.="<p class='pageEllipsis'>...</p>";
  118.     }
  119.     $str.=$this->myde_next();
  120.     $str.=$this->myde_last();
  121.     $str.="<p class='pageRemark'>共<b>" . $this->myde_page_count .
  122.         "</b>页<b>" . $this->myde_total . "</b>条数据</p>";
  123.     $str.="</div>";
  124.     return $str;
  125.   }
  126. }
  127. ?>
复制代码
3. css样式
  1. html, body, div, span, h1, h2, h3, h4, h5, h6, p, pre,
  2. a, code, em, img, small, strong, sub, sup, u, i, center,
  3. dl, dt, dd, ol, ul, li, fieldset, form, label {
  4.   margin: 0;
  5.   padding: 0;
  6.   border: 0;
  7.   outline: 0;
  8.   font-size: 100%;
  9.   vertical-align: baseline;
  10.   background: transparent
  11. }
  12. a {
  13.   color: #007bc4;
  14.   text-decoration: none;
  15.   cursor: pointer;
  16. }
  17. .table_parameters a:hover {
  18.   text-decoration: none
  19. }
  20. a:hover {
  21.   text-decoration: underline
  22. }
  23. ol, ul {
  24.   list-style: none
  25. }
  26. table {
  27.   border-collapse: collapse;
  28.   border-spacing: 0
  29. }
  30. /*html {*/
  31. /*background: url(../images/demo_bg.png)*/
  32. /*}*/
  33. body {
  34.   height: 100%;
  35.   font: 12px/18px "Microsoft Yahei", Tahoma, Helvetica,
  36.   Arial, Verdana, "\5b8b\4f53", sans-serif;
  37.   color: #51555c
  38. }
  39. img {
  40.   border: 0;
  41.   cursor: pointer;
  42. }
  43. .clearfix:after {
  44.   visibility: hidden;
  45.   display: block;
  46.   font-size: 0;
  47.   content: " ";
  48.   clear: both;
  49.   height: 0
  50. }
  51. .head {
  52.   /*border-bottom: 1px solid #dadada;*/
  53.   padding: 0 0 5px
  54. }
  55. .head_inner {
  56.   margin: 0 auto;
  57.   width: 980px
  58. }
  59. .container {
  60.   width: 80%;
  61.   /*min-height: 600px;*/
  62.   margin: 30px auto 0 auto;
  63.   border: 1px solid #d3d3d3;
  64.   background: #fff;
  65.   -moz-border-radius: 5px;
  66.   -khtml-border-radius: 5px;
  67.   -webkit-border-radius: 5px;
  68.   border-radius: 5px
  69. }
  70. .demo > h2.title {
  71.   margin: 4px 0 30px;
  72.   padding: 15px 0 10px 20px;
  73.   border-bottom: 1px solid #d3d3d3;
  74.   font-size: 18px;
  75.   color: #a84c10;
  76.   background: url(../images/arrow.jpg) no-repeat 2px 14px
  77. }
  78. .foot {
  79.   height: 60px;
  80.   padding: 10px 2px;
  81.   line-height: 24px;
  82.   text-align: center
  83. }
  84. .foot a:hover {
  85.   color: #51555c
  86. }
  87. .btn {
  88.   -webkit-border-radius: 3px;
  89.   -moz-border-radius: 3px;
  90.   -ms-border-radius: 3px;
  91.   -o-border-radius: 3px;
  92.   border-radius: 3px;
  93.   background-color: #ff8400;
  94.   color: #fff;
  95.   display: inline-block;
  96.   height: 28px;
  97.   line-height: 28px;
  98.   text-align: center;
  99.   padding: 0 12px;
  100.   transition: background-color .2s linear 0s;
  101.   border: 0;
  102.   cursor: pointer
  103. }
  104. .btn:hover {
  105.   background-color: #e95a00;
  106.   text-decoration: none
  107. }
  108. .demo {
  109.   width: 700px;
  110.   margin: 0 auto
  111. }
  112. ul.ul_demo li {
  113.   background: url("../images/demo_icon.gif") no-repeat scroll 0 6px;
  114.   line-height: 28px;
  115.   padding-left: 20px
  116. }
  117. .input, .table input[type='text'] {
  118.   border: 1px solid #ccc;
  119.   padding: 0 5px;
  120.   width: 220px;
  121.   height: 26px;
  122.   line-height: 26px
  123. }
  124. #nav {
  125.   float: right;
  126.   margin: 30px 0 0
  127. }
  128. #nav li {
  129.   float: left;
  130.   font-size: 16px;
  131.   margin-right: 20px
  132. }
  133. .btn.loading {
  134.   opacity: .5
  135. }
  136. h3 a.cur {
  137.   color: #f30;
  138. }
  139. .demo h3 a {
  140.   font-size: 14px;
  141.   margin: 0 10px 5px 0;
  142.   display: inline-block
  143. }
  144. .red {
  145.   color: red
  146. }
  147. .notice {
  148.   font-size: 14px;
  149.   margin-bottom: 10px;
  150. }
  151. .table_parameters {
  152.   border-left: 1px solid #d3d3d3;
  153.   border-top: 1px solid #d3d3d3;
  154.   margin: 6px auto;
  155.   font-size: 14px
  156. }
  157. .table_parameters tr.tr_head {
  158.   background: none repeat scroll 0 0 #f7f7f7;
  159.   font-weight: bold;
  160.   padding: 6px;
  161.   text-align: center
  162. }
  163. .table_parameters td, .table_parameters th {
  164.   border-bottom: 1px solid #d3d3d3;
  165.   border-right: 1px solid #d3d3d3;
  166.   line-height: 26px;
  167.   padding: 2px
  168. }
  169. h1 {
  170.   font: 32px "Microsoft Yahei";
  171.   margin: 40px auto;
  172.   text-align: center;
  173. }
  174. h2 {
  175.   font-size: 16px;
  176.   margin: 10px 0;
  177. }
  178. .menu {
  179.   height: 30px;
  180.   margin-bottom: 30px;
  181.   padding: 10px;
  182.   background-color: #f0f0f0;
  183.   text-align: center;
  184. }
  185. .menu a {
  186.   display: inline-block;
  187.   height: 30px;
  188.   padding: 0 20px;
  189.   line-height: 30px;
  190.   font-size: 14px;
  191.   color: #333;
  192.   text-decoration: none;
  193. }
  194. .menu a:hover {
  195.   color: #000;
  196.   background-color: #e9e9e9;
  197. }
  198. .menu .cur {
  199.   background-color: #ddd !important;
  200.   color: #000;
  201. }
  202. .vad a {
  203.   display: inline-block;
  204.   height: 36px;
  205.   line-height: 36px;
  206.   margin: 0 5px;
  207.   padding: 0 50px;
  208.   font-size: 14px;
  209.   text-align: center;
  210.   color: #eee;
  211.   text-decoration: none;
  212.   background-color: #222;
  213. }
  214. .vad a:hover {
  215.   color: #fff;
  216.   background-color: #000;
  217. }
  218. .thead {
  219.   width: 728px;
  220.   height: 90px;
  221.   margin: 0 auto;
  222. }
  223. textarea {
  224.   border: 1px solid #ccc;
  225.   font-size: 12px;
  226.   height: 100px;
  227.   line-height: 18px;
  228.   padding: 5px;
  229.   width: 300px;
  230. }
  231. .table td {
  232.   padding: 10px 0
  233. }
  234. .disabled {
  235.   opacity: .6;
  236.   filter: alpha(opacity=60)
  237. }
  238. .demo > p {
  239.   line-height: 30px;
  240.   font-size: 14px
  241. }
  242. .demo > p a {
  243.   font-size: 14px
  244. }
  245. .demo h3 {
  246.   font-size: 16px;
  247.   margin: 20px 0
  248. }
  249. select {
  250.   background-color: #fff;
  251.   background-position: right center;
  252.   background-repeat: no-repeat;
  253.   border: 1px solid #888;
  254.   border-radius: 3px;
  255.   box-sizing: border-box;
  256.   font: 12px/1.5 Tahoma, Arial, sans-serif;
  257.   height: 30px;
  258.   padding: 0 4px;
  259. }
  260. fieldset {
  261.   border: 1px solid #ccc;
  262.   border-radius: 5px;
  263.   margin: 1em 0;
  264.   padding: 10px 20px;
  265. }
  266. dl.row dt {
  267.   width: 2em;
  268. }
  269. dl.row dt {
  270.   clear: left;
  271.   float: left;
  272.   line-height: 30px;
  273.   padding: 5px;
  274.   text-align: right;
  275.   width: 6em;
  276. }
  277. dl.row dd {
  278.   float: left;
  279.   padding: 5px;
  280. }
  281. .pager {
  282.   text-align: right;
  283. }
  284. .pager a {
  285.   padding: 3px 8px;
  286.   margin-left: 3px;
  287.   line-height: 20px;
  288.   background: #f9f9f9;
  289.   border: 1px solid #DBDBDB;
  290.   text-decoration: none
  291. }
  292. .pager a:hover,
  293. .pager a.current {
  294.   background-color: #7CD5B1;
  295.   color: #fff;
  296.   border: 1px solid #7CD5B1;
  297.   cursor: pointer;
  298. }
  299. .page {
  300.   text-align: center;
  301.   margin: 50px 0
  302. }
  303. .page a, .page span.prev_disabled {
  304.   border: 1px solid #ededed;
  305.   color: #3d3d3d;
  306.   font-weight: 700;
  307.   height: 35px;
  308.   line-height: 35px;
  309.   margin-left: 5px;
  310.   min-width: 9px;
  311.   padding: 0 13px;
  312.   text-align: center;
  313.   text-decoration: none;
  314.   vertical-align: top;
  315.   font-family: "simsun";
  316.   display: inline-block
  317. }
  318. .page span.prev_disabled {
  319.   cursor: default;
  320.   color: #ccc;
  321.   margin: 0 10px 0 0
  322. }
  323. .page a.current {
  324.   background-color: #f40;
  325.   border-color: #f40;
  326.   color: #fff;
  327.   font-weight: 700;
  328.   position: relative;
  329.   z-index: 1;
  330. }
  331. .page .extra {
  332.   display: inline-block;
  333.   margin-left: 10px;
  334.   height: 35px;
  335.   line-height: 35px;
  336.   color: #656565;
  337. }
  338. .page .page-num {
  339.   border: 1px solid #ededed;
  340.   height: 21px;
  341.   text-align: center;
  342.   width: 35px;
  343.   display: inline-block
  344. }
  345. .page .page-submit {
  346.   background-clip: padding-box;
  347.   border: 1px solid #ededed;
  348.   border-radius: 2px;
  349.   cursor: pointer;
  350.   height: 21px;
  351.   line-height: 21px;
  352.   text-align: center;
  353.   width: 43px;
  354.   display: inline-block
  355. }
  356. .page .page-submit:hover {
  357.   border-color: #f40;
  358.   color: #f40;
  359. }
  360. .page a:focus, .page a:hover {
  361.   border-color: #f40;
  362.   z-index: 1;
  363. }
  364. .loading {
  365.   margin: 30px 0;
  366.   text-align: center
  367. }
  368. p {
  369.   margin: 0
  370. }
  371. #page {
  372.   height: 40px;
  373.   padding: 20px 0px;
  374. }
  375. #page a {
  376.   display: block;
  377.   float: left;
  378.   margin-right: 10px;
  379.   padding: 2px 12px;
  380.   height: 24px;
  381.   border: 1px #cccccc solid;
  382.   background: #fff;
  383.   text-decoration: none;
  384.   color: #808080;
  385.   font-size: 12px;
  386.   line-height: 24px;
  387. }
  388. #page a:hover {
  389.   color: #077ee3;
  390.   border: 1px #077ee3 solid;
  391. }
  392. #page a.cur {
  393.   border: none;
  394.   background: #077ee3;
  395.   color: #fff;
  396. }
  397. #page p {
  398.   float: left;
  399.   padding: 2px 12px;
  400.   font-size: 12px;
  401.   height: 24px;
  402.   line-height: 24px;
  403.   color: #bbb;
  404.   border: 1px #ccc solid;
  405.   background: #fcfcfc;
  406.   margin-right: 8px;
  407. }
  408. #page p.pageRemark {
  409.   border-style: none;
  410.   background: none;
  411.   margin-right: 0px;
  412.   padding: 4px 0px;
  413.   color: #666;
  414. }
  415. #page p.pageRemark b {
  416.   color: red;
  417. }
  418. #page p.pageEllipsis {
  419.   border-style: none;
  420.   background: none;
  421.   padding: 4px 0px;
  422.   color: #808080;
  423. }
  424. .dates li {
  425.   font-size: 14px;
  426.   margin: 20px 0
  427. }
  428. .dates li span {
  429.   text-align: center
  430. }
  431. td {
  432.   font-size: 15px;
  433.   margin: 20px 0
  434. }
复制代码
更多关于PHP相关内容感爱好的读者可查看本站专题:《php+mysql数据库操纵入门教程》、《php+mysqli数据库步调筹划技巧总结》、《php面向对象步调筹划入门教程》、《PHP数组(Array)操纵技巧大全》、《php字符串(string)用法总结》、《PHP网络编程技巧总结》及《php常见数据库操纵技巧汇总》
盼望本文所述对大家PHP步调筹划有所资助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作