php一个简单分页思路

4-22 1,850 views

要做的效果是如果当前页数小于7

1

要做的效果是如果当前页数大于7,

2

要做的效果是如果当前页数大于7,那么显示前3和后3条

3

1.mysql 代码 "SELECT * FROM table LIMIT 从第几个开始,取多少条";
2.假设每页取的条数是limit,数据总数为$nums,当前第几页是$sum(通过get获得);
所以要分的总页数可以算出来,有两种情况,一种是$nums%$limt 可以整除的,那么页数就是这个,另外一种情况就是假如不能整除,那么页数就要+1。采用php的向后取整函数ceil实现
3.页数已经有了,当总数小于7的时候for循环从1开始$pages结束
4.当总数大于7且当前页+3小于7的时候for循环从1开始到7结束
5.当总数大于7且当前页+3大于7并且当前页+3小于总页数的时候for循环从$sum-3开始到$sum+3结束
6.当总数大于7当前页+3大于总页数的时候for循环从$sum-3开始到$pages结束

下面是代码————>

model类
// 直播订单列表
    public function order_living(){
        $model = new OrderModel();
        //接取页数
        $index = Req::args("page") ? Req::args("page") : '1';

        //获取订单数量
        $nums = $model->get_counts();
        $limit = 9;//每页显示几条
        //调取分页函数
        $pageStr = $this->living_page($nums,$limit,$index);

        //调数据库 取数据
        $data = $model->get_all_data($index,$limit);

        $this->assign('page',$pageStr);
        $this->assign('data',$data);
        $this->redirect();
    }
分页函数
//分页函数
        //$nums,数据总数,$page,每页要分多少条,$sum 当前第几页
    private function living_page($nums,$page,$sum){
                //获得页数,总数据小于每页的条数,默认第一页,否则计算页数
        if($nums < $page){
            $pages = 1;
        }
        else{
            if ($nums%$page>0){
                $pages = ceil($nums/$page);
            }
            else {
                $pages = $nums/$page;
            }
        }

        $str="";
                //页数小于7 就只显示小于7的
        if($pages < 7)
        {
            for ($i=1; $i <= $pages; $i++) { 
                if ($i==$sum){
                    $str .="<span class='current'>$sum</span>";
                } else{
                    $str .= "<a href='/shop/order/order_living?page=$i'>$i</a>";
                }
            }
        }else{
                        //如果大于7,就加上首页and 末页
            $str = "<a href='/shop/order/order_living?page=1'>首页</a>";
            //如果当前页小于4的时候
            if($sum<=4){
                                //当前页大于1才显示上一页
                if($sum>1){
                    $str .= "<a href='/shop/order/order_living?page=".($sum-1)."'>上一页</a>";
                }

                for($i=1;$i<=7;$i++){
                    if ($i==$sum){
                        $str .="<span class='current'>$sum</span>";
                    } else{
                        $str .= "<a href='/shop/order/order_living?page=$i'>$i</a>";
                    }
                }
                $str .= "<a href='/shop/order/order_living?page=".($sum+1)."'>下一页</a>";
            }else if($sum+3<$pages){
                $str .= "<a href='/shop/order/order_living?page=".($sum-1)."'>上一页</a>";
                for($i=$sum-3;$i<=$sum+3;$i++){
                    if ($i==$sum){
                        $str .="<span class='current'>$sum</span>";
                    } else{
                        $str .= "<a href='/shop/order/order_living?page=$i'>$i</a>";
                    }
                }
                $str .= "<a href='/shop/order/order_living?page=".($sum+1)."'>下一页</a>";
            }else{
                $str .= "<a href='/shop/order/order_living?page=".($sum-1)."'>上一页</a>";
                for($i=$pages-6;$i<=$pages;$i++){
                    if ($i==$sum){
                        $str .="<span class='current'>$sum</span>";
                    } else{
                        $str .= "<a href='/shop/order/order_living?page=$i'>$i</a>";
                    }
                }
                $str .= "<a href='/shop/order/order_living?page=".($sum+1)."'>下一页</a>";
            }
            $str .= "<a href='/shop/order/order_living?page=".$pages."'>末页</a>";
        }

        $str .="   共$pages 页     ";
        $str .="   跳到第 <input type='text' style='width:24px;text-align:center' value='$sum'>页 <a id='go' href='javascript:void(0)'>确定</a>    ";
        return $str;
    }

使用 PHP-FFMpeg 操作视频/音频文件

github官方地址 https://github.com/PHP-FFMpeg/PHP-FFMpeg php-ffmpeg An Object-Oriented library to convert video/audio files with FFmpeg / AVConv...

阅读全文

一个好用的php 加锁类malkusch/lock,支持redis,predis,memcached,mysql,PostgreSQL等等

github地址 php-lock 安装 -PHP 7.1或以上 -可选的nrk/predis以使用Predis锁。 -可选的php-pcntl扩展名,用于启用锁定而flock() 无需在CLI脚本中等待。(linux...

阅读全文

php carbon 计算2个日期之间的天数

<?php $date1 = \Carbon\Carbon::parse('2020-03-05 11:00:00'); $date2 = \Carbon\Carbon::parse('2020-03-10 11:00:00'); $diff =...

阅读全文

欢迎留言