zoukankan      html  css  js  c++  java
  • PHP分页导航页码类实现

    <?php
    define('ACC')||exit('Permision Denied');
     
     
    //总条数  $total
    //每页条数 $perpage
    //总页数 $cnt = ceil($total/$perpage);      //相除,向上取整
    //第page页 显示 (page-1)*$perpage + 1 条 ~~~ page*$perpage 条
     
    //c.php
    //c.php?cat_id = 3
    //c.php?cat_id =3 $page = 1
    //page 参数,应根据页码来生成,但同时不能把其他参数搞丢
    //先把地址栏的获取并且保存起来
     
    class PageTool{
        protected $total = 0;
        protected $perpage = 10;
        protected $page = 1;
     
        public function __construct($total,$page=false,$perpage=false){
            $this->total = $total;
            if($perpage){
                $this->perpage = $perpage;
            }
            if($page){
                $this->page=$page;
            }
        }
     
        //主要函数
        public function show(){
            $cnt = ceil($this->total / $this->perpage);     //得到总页数
            $url = ($_SERVER['REQUEST_URI']);
     
            $parse = parse_url($url);   //分出  path   query 两个数组类型
            //print_r($parse);
            //讲param 拆成数组
            $param = array();
            if(isset($parse['query'])){
                parse_str($parse['query'],$param);  
            }
            //print_r($param);
            //不管$param数组有没有page单元,都unset一下,即保存除了page之外的page单元
            unset($param['page']);
            //print_r($param);
            //下一个关键,计算页码导航
            
            $url = $parse['path'].'?';
            if(!empty($param)){
                $param = http_build_query($param);
                $url = $url.$param.'&';
                echo $url,"<br/>";
            }
            //计算页面导航
            $nav = array();
            $nav[] = '<span class="page_now">' . $this->page .'</span>';    
            for($left=$this->page-1,$right = $this->page+1 ;($left>=1 || $right<=$cnt)&&count($nav)<=5 ;){
                if($left >= 1){
                    array_unshift($nav,'<a href="'.$url.'page='.$left.'">['.$left.']</a>');//放到数组的开头
                    $left--;
                }
                if($right <= $cnt){
                    array_push($nav,'<a href="'.$url.'page='.$right.'">['.$right.']</a>');//放到数组的尾部
                    $right++;
                }
            }
            //print_r($nav);  //查看源代码
            return implode('',$nav);
        }
     
    }
    //$p = NEW PageTool(50,2,6);    //总共50个商品,当前为第2页,每页6条商品
    //print_r($p->show());
     
    //分页类调用测试
    //new PageTool( 总条数,当前页, 每页条数 );
    //echo $p->show();  //返回分页代码
     
    $page = isset($_GET['page']) ? $_GET['page'] : 1;
    $p = NEW PageTool(50,$page,6);  //总共50个商品,当前为第2页,每页6条商品
    echo $p->show();
     
     
    ?>


    分别点击第6页,第7页,测试结果如下:

    图片

    图片

  • 相关阅读:
    Qt属性动画效果的实现QPropertyAnimation & 自定义属性Q_PROPERTY
    Qt实现鼠标拖拉窗口,并实现模拟鼠标拖拉窗口代码实例
    qt模拟鼠标左击下移动
    Qt新建线程
    Qt中子进程和父进程之间信号和槽通信
    vs2015打开Qt项目出现qt所有头文件都找不到
    vs2015运行Qt项目出现namespace "Ui" 没有成员“XXXClass”
    Opencv Mat类
    cv::cvtColor()的作用
    Delphi 系统[21]关键字和保留字 constructor、destructor、property
  • 原文地址:https://www.cnblogs.com/lihaiyan/p/4274380.html
Copyright © 2011-2022 走看看