zoukankan      html  css  js  c++  java
  • PHP学习之分页类

    <?php
    $page = new Page(2, 40);
    var_dump($page->allUrl());
    class Page
    {
        //每页显示多少条数据
        protected $number;
        //一共有多少条数据
        protected $totalCount;
        //当前页
        protected $page;
        //总页数
        protected $totalPage;
        //url
        protected $url;
    
        public function __construct($number, $totalCount)
        {
            $this->number = $number;
            $this->totalCount = $totalCount;
            //得到总页数
            $this->totalPage = $this->getTotalPage();
            //得到当前页数
            $this->page = $this->getPage();
            //得到url
            $this->url = $this->getUrl();
        }
    
        /**
         * 获取总页数
         *
         * @return void
         */
        protected function getTotalPage()
        {
            return ceil($this->totalCount / $this->number);
        }
    
        /**
         * 获取当前页码
         *
         * @return void
         */
        protected function getPage()
        {
            if (empty($_GET['page'])) {
                $page = 1;
            } elseif ($_GET['page'] > $this->totalPage) {
                $page = $this->totalPage;
            } elseif ($_GET['page'] < 1) {
                $page = 1;
            } else {
                $page = $_GET['page'];
            }
            return $page;
        }
    
        /**
         * 获取去掉page之后的url
         *
         * @return void
         */
        protected function getUrl()
        {
            //得到协议名
            $scheme = $_SERVER['REQUEST_SCHEME'];
            //得到主机名
            $host = $_SERVER['SERVER_NAME'];
            //得到端口号
            $port = $_SERVER['SERVER_PORT'];
            //得到路径和请求字符串
            $uri = $_SERVER['REQUEST_URI'];
            //中间做处理,要将page=5等这种字符串拼接url中,所以如果原来url中有page这个参数,我们首先需要先将原来的page参数给清空
            $uriArray = parse_url($uri);
            $path = $uriArray['path'];
            if (!empty($uriArray['query'])) {
                //首先将请求字符串变为关联数组
                parse_str($uriArray['query'], $array);
                //清除掉关联数组中的page键值对
                unset($array['page']);
                //将剩下的参数拼接为请求字符串
                $query = http_build_query($array);
                //再将请求字符串拼接到路径的后面
                if ($query != '') {
                    $path = $path . '?' . $query;
                }
            }
            return $scheme . '://' . $host . ':' . $port . $path;
        }
    
        /**
         * 设置url
         *
         * @param [type] $str
         * @return void
         */
        protected function setUrl($str)
        {
            if (strstr($this->url, '?')) {
                $url = $this->url . '&' . $str;
            } else {
                $url = $this->url . '?' . $str;
            }
            return $url;
        }
    
        /**
         * 返回所有url
         *
         * @return void
         */
        public function allUrl()
        {
            return [
                'first' => $this->first(),
                'prev' => $this->prev(),
                'next' => $this->next(),
                'end' => $this->end()
            ];
        }
    
        /**
         * 首页
         *
         * @return void
         */
        public function first()
        {
            return $this->setUrl('page=1');
        }
    
        /**
         * 下一页
         *
         * @return void
         */
        public function next()
        {
            //根据当前page得到下一页的页码
            if ($this->page + 1 > $this->totalPage) {
                $page = $this->totalPage;
            } else {
                $page = $this->page + 1;
            }
            return $this->setUrl('page=' . $page);
        }
    
        /**
         * 上一页
         *
         * @return void
         */
        public function prev()
        {
            if ($this->page - 1 < 1) {
                $page = 1;
            } else {
                $page = $this->page - 1;
            }
            return $this->setUrl('page=' . $page);
        }
    
        /**
         * 尾页
         *
         * @return void
         */
        public function end()
        {
            return $this->setUrl('page=' . $this->totalPage);
        }
    
        /**
         * 偏移量,方便数据库查找
         *
         * @return void
         */
        public function limit()
        {
            $offset = ($this->page - 1) * $this->number;
            return $offset . ',' . $this->number;
        }
    }

    运行结果:

  • 相关阅读:
    关于Java 如何采用 metadata-extractor 读取数码相机 Exif 数据信息的代码
    Maven 项目引用文件地址管理配置与Eclipse的使用设置
    MySql如何将一个表字段更新到另一个表字段
    关于jquery.fileupload结合PHP上传图片的开发用法流程
    Windows下 Composer 安装 Thinkphp5 的记录.
    NASM汇编学习系列(6)——示例打印0到10
    NASM汇编学习系列(0)——说明、目录和环境搭建
    NASM汇编学习系列(5)——使用bss段和获取用户输入
    NASM汇编学习系列(4)——获取命令行参数
    NASM汇编学习系列(3)——多汇编文件间函数调用
  • 原文地址:https://www.cnblogs.com/shengChristine/p/10941657.html
Copyright © 2011-2022 走看看