zoukankan      html  css  js  c++  java
  • 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;
        }
    
    }
    
    ?>
    

      配置项

    <?php
    $host="localhost";
    $db_user="root";
    $db_pass="root";
    $db_name="demo";
    $timezone="Asia/Shanghai";
    
    $link=mysql_connect($host,$db_user,$db_pass);
    mysql_select_db($db_name,$link);
    mysql_query("SET names UTF8");
    
    header("Content-Type: text/html; charset=utf-8");
    ?>
    

      demo

    <?php
    include_once("config.php");
    require_once('page.class.php'); //分页类
    $showrow = 10; //一页显示的行数
    $curpage = empty($_GET['page']) ? 1 : $_GET['page']; //当前的页,还应该处理非数字的情况
    $url = "?page={page}"; //分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']
    //省略了链接mysql的代码,测试时自行添加
    $sql = "SELECT * FROM article";
    $total = mysql_num_rows(mysql_query($sql)); //记录总条数
    if (!empty($_GET['page']) && $total != 0 && $curpage > ceil($total / $showrow))
        $curpage = ceil($total_rows / $showrow); //当前页数大于最后页数,取最后一页
    //获取数据
    $sql .= " LIMIT " . ($curpage - 1) * $showrow . ",$showrow;";
    $query = mysql_query($sql);
    ?>
    
    
    <!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>演示:PHP简单漂亮的分页类</title>
            <meta name="keywords" content="php分页类" />
            <meta name="description" content="本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。" />
            <link rel="stylesheet" type="text/css" href="http://www.sucaihuo.com/jquery/css/common.css" />
            <style type="text/css">
                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{float:right}
            </style>
        </head>
        <body>
            <div class="head">
                <div class="head_inner clearfix">
                    <ul id="nav">
                        <li><a href="http://www.sucaihuo.com">首 页</a></li>
                        <li><a href="http://www.sucaihuo.com/templates">网站模板</a></li>
                        <li><a href="http://www.sucaihuo.com/js">网页特效</a></li>
                        <li><a href="http://www.sucaihuo.com/php">PHP</a></li>
                        <li><a href="http://www.sucaihuo.com/site">精选网址</a></li>
                    </ul>
                    <a class="logo" href="http://www.sucaihuo.com"><img src="http://www.sucaihuo.com/Public/images/logo.jpg" alt="素材火logo" /></a>
                </div>
            </div>
            <div class="container">
                <div class="demo">
                    <h2 class="title"><a href="http://www.sucaihuo.com/php/223.html">教程:PHP简单漂亮的分页类</a></h2>
    
                    <div class="showData">
    
                        <ul class="dates">
                            <?php while ($row = mysql_fetch_array($query)) { ?>
                                <li>
                                    <span><?php echo $row['addtime'] ?></span>
                                    <a target="_blank" href="http://www.sucaihuo.com/js"><?php echo $row['title'] ?></a>
                                </li>
                            <?php } ?>
                        </ul>
                        <!--显示数据区-->
                    </div>
                    <div class="showPage">
                        <?php
                        if ($total > $showrow) {//总记录数大于每页显示数,显示分页
                            $page = new page($total, $showrow, $curpage, $url, 2);
                            echo $page->myde_write();
                        }
                        ?>
                    </div>
                </div>
            </div>
            <div class="foot">
                Powered by sucaihuo.com  本站皆为作者原创,转载请注明原文链接:<a href="http://www.sucaihuo.com" target="_blank">www.sucaihuo.com</a>
            </div>
            <script type="text/javascript" src="http://www.sucaihuo.com/Public/js/other/jquery.js"></script> 
        </body>
    </html>
    

      

  • 相关阅读:
    城市社会经济专项规划之生态产业规划
    土地资源承载力研究
    生态功能区划方法之三:聚类分析法和生态融合法
    生态功能区划综述
    生态功能区划及生态规划的重要内容:生态环境现状评价
    生态功能区划方法之一:生态敏感性分析法
    生态环境专项规划
    城市社会经济专项规划之生态人居规划
    城市生态规划关键技术方法之五:生态支持系统瓶颈分析方法
    环境容量研究
  • 原文地址:https://www.cnblogs.com/photo520/p/9037334.html
Copyright © 2011-2022 走看看