zoukankan      html  css  js  c++  java
  • PHP分页

    <?php

    $page=new Page(5,60);
    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();


    }


    protected function getTotalPage(){
    return ceil($this->totalCount/$this->number);
    }


    protected function getPage(){
    if(empty($_GET['page'])){
    $page=1;
    }else if($_GET['page']>$this->totalPage){
    $page=$this->totalPage;
    }else if($_GET['page']<1){
    $page=1;
    }else{
    $page=$_GET['page'];
    }
    return $page;

    }

    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;

    }


    protected function setUrl($str){
    if(strstr($this->url,'?')){
    $url=$this->url.'&'.$str;
    }else{
    $url=$this->url.'?'.$str;
    }
    return $url;
    }








    public function allUrl(){
    return [
    'first'=> $this->first(),
    'prev'=> $this->prev(),
    'next'=> $this->next(),
    'end'=> $this->end()

    ];

    }

    public function first(){
    return $this->setUrl('page=1');
    }

    public function next(){
    /// 根据当前page得到下一页的页码
    if($this->page+1>$this->totalPage){
    $page=$this->totalPage;
    }else{
    $page=$this->page+1;
    }
    return $this->setUrl('page='.$page);
    }

    public function prev(){
    if($this->page-1<1){
    $page=1;
    }else{
    $page=$this->page-1;
    }
    return $this->setUrl('page='.$page);
    }

    public function end(){
    return $this->setUrl('page='.$this->totalPage);
    }


    public function limit(){
    /// limit 0,5 limit 5,5
    $offset=($this->page-1)*$this->number;
    return $offset.','.$this->number;

    }



    }

    ?>

  • 相关阅读:
    Android实战——第三方服务之Bmob后端云的集成、用户登陆、用户注册、获取用户、用户注销(一)
    Android实战——第三方服务之Bmob后端云的答题系统小项目(四)
    10.Python运行Scrapy时出现错误: ModuleNotFoundError: No module named 'win32api'
    基础小知识(1)
    9.Python安装scrapy教程
    1.使用Fiddler进行接口测试
    8.Python编写登录接口
    18.Selenium+Python案例 -- 豆瓣
    17.Selenium+Python日期控件小案例
    16.Selenium+Python关于句柄的小Demo
  • 原文地址:https://www.cnblogs.com/summerGraden/p/11543869.html
Copyright © 2011-2022 走看看