zoukankan      html  css  js  c++  java
  • PHP简单漂亮的分页类

    本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。

    1. <?php

    2. /* * *********************************************
    3.  * @类名:   page
    4.  * @参数:   $myde_total - 总记录数
    5.  *          $myde_size - 一页显示的记录数
    6.  *          $myde_page - 当前页
    7.  *          $myde_url - 获取当前的url
    8.  * @功能:   分页实现
    9.  * @作者:   宋海阁
    10.  */

    11. class page {

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

    25.     public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
    26.         $this->myde_total = $this->numeric($myde_total);
    27.         $this->myde_size = $this->numeric($myde_size);
    28.         $this->myde_page = $this->numeric($myde_page);
    29.         $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
    30.         $this->myde_url = $myde_url;
    31.         if ($this->myde_total < 0)
    32.             $this->myde_total = 0;
    33.         if ($this->myde_page < 1)
    34.             $this->myde_page = 1;
    35.         if ($this->myde_page_count < 1)
    36.             $this->myde_page_count = 1;
    37.         if ($this->myde_page > $this->myde_page_count)
    38.             $this->myde_page = $this->myde_page_count;
    39.         $this->limit = ($this->myde_page - 1) * $this->myde_size;
    40.         $this->myde_i = $this->myde_page - $show_pages;
    41.         $this->myde_en = $this->myde_page + $show_pages;
    42.         if ($this->myde_i < 1) {
    43.             $this->myde_en = $this->myde_en + (1 - $this->myde_i);
    44.             $this->myde_i = 1;
    45.         }
    46.         if ($this->myde_en > $this->myde_page_count) {
    47.             $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
    48.             $this->myde_en = $this->myde_page_count;
    49.         }
    50.         if ($this->myde_i < 1)
    51.             $this->myde_i = 1;
    52.     }

    53.     //检测是否为数字
    54.     private function numeric($num) {
    55.         if (strlen($num)) {
    56.             if (!preg_match("/^[0-9]+$/", $num)) {
    57.                 $num = 1;
    58.             } else {
    59.                 $num = substr($num, 0, 11);
    60.             }
    61.         } else {
    62.             $num = 1;
    63.         }
    64.         return $num;
    65.     }

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

    70.     //首页
    71.     private function myde_home() {
    72.         if ($this->myde_page != 1) {
    73.             return "<a href='" . $this->page_replace(1) . "' title='首页'>首页</a>";
    74.         } else {
    75.             return "<p>首页</p>";
    76.         }
    77.     }

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

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

    94.     //尾页
    95.     private function myde_last() {
    96.         if ($this->myde_page != $this->myde_page_count) {
    97.             return "<a href='" . $this->page_replace($this->myde_page_count) . "' title='尾页'>尾页</a>";
    98.         } else {
    99.             return "<p>尾页</p>";
    100.         }
    101.     }

    102.     //输出
    103.     public function myde_write($id = 'page') {
    104.         $str = "<div id=" . $id . ">";
    105.         $str.=$this->myde_home();
    106.         $str.=$this->myde_prev();
    107.         if ($this->myde_i > 1) {
    108.             $str.="<p class='pageEllipsis'>...</p>";
    109.         }
    110.         for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {
    111.             if ($i == $this->myde_page) {
    112.                 $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页' class='cur'>$i</a>";
    113.             } else {
    114.                 $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页'>$i</a>";
    115.             }
    116.         }
    117.         if ($this->myde_en < $this->myde_page_count) {
    118.             $str.="<p class='pageEllipsis'>...</p>";
    119.         }
    120.         $str.=$this->myde_next();
    121.         $str.=$this->myde_last();
    122.         $str.="<p class='pageRemark'>共<b>" . $this->myde_page_count .
    123.                 "</b>页<b>" . $this->myde_total . "</b>条数据</p>";
    124.         $str.="</div>";
    125.         return $str;
    126.     }

    127. }

    128. ?>
    复制代码

    分页演示地址:http://www.sucaihuo.com/php/223.html


  • 相关阅读:
    servlet中doGet()和doPost()的区别
    Hibernate 的getHibernateTemplate()方法使用
    c3p0 数据库连接池
    java 事务处理的概念
    hibernate 关联映射
    java 迭代器
    struts 值桟问题
    struts 属性驱动与模型驱动
    java 单例模式
    XML Node和Element
  • 原文地址:https://www.cnblogs.com/ZDPPU/p/5923239.html
Copyright © 2011-2022 走看看