zoukankan      html  css  js  c++  java
  • php 最新分页

    <?php
    
    /* * *********************************************
     * @类名:   page
     * @参数:   $myde_total - 总记录数
     *          $myde_size - 一页显示的记录数
     *          $myde_page - 当前页
     *          $myde_url - 获取当前的url
     * @功能:   分页实现
     * @作者:   宋海阁
     */
    
    class pagetest {
    
        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;
        }
    
    }

    调用方式:

    public function pagetestAction()
        {
            $total = M('maintable')->findCount(); // 总条数
            Load::load_class('pagetest.class',DIR_BF_ROOT.'classes',0);
    
            $showrow = 10; //一页显示的行数
            $curpage = empty($_GET['page']) ? 1 : $_GET['page']; //当前的页,还应该处理非数字的情况
            $url = "?page={page}"; //分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']
            $limit = ($curpage - 1) * $showrow .','.$showrow;
            $sql = "SELECT * FROM mo_maintable LIMIT {$limit}";
            $data = M('maintable')->query($sql); // 获取数据
    
            if ($total > $showrow) {//总记录数大于每页显示数,显示分页
    
                $page = new pagetest($total, $showrow, $curpage, $url, 3);
                $pagelist =  $page->myde_write();
            }
            include $this->display('pagetest.html');
        }
    

      

      

    模板展示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <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>
    <body>
        {foreach $data $K $v}
        <p>{$v['title']}</p>
        {/foreach}
        {$pagelist}
    </body>
    </html>
    

      

  • 相关阅读:
    .NET Core+MySql+Nginx 容器化部署
    .NET Core容器化之多容器应用部署@Docker-Compose
    .NET Core容器化@Docker
    Hello Docker
    使用Bitbucket Pipeline进行.Net Core项目的自动构建、测试和部署
    一道面试题的思考
    ABP入门系列(21)——切换MySQL数据库
    爬取朋友圈,Get年度关键词
    一张图理清ASP.NET Core启动流程
    UnitOfWork知多少
  • 原文地址:https://www.cnblogs.com/photo520/p/9040047.html
Copyright © 2011-2022 走看看