分页Model

时间:2019-11-05
本文章向大家介绍分页Model,主要包括分页Model使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
<?php
namespace Admin\Model;

use Think\Model;

class PageModel extends Model{
    /*
     *此函数分页函数。传入表名和当前页,返回 总页数,总条数 底标的分页的数组
    */
    public function index($tableName,$page,$where,$prefix_page, $sql = '', $add_one_flag = false){
        $tables = M($tableName);
        //第一返回总条数
        if($sql){
            $tmp = $tables->query($sql);
            $data['count'] = $tmp[0]['count_num'];
        }else{
            if($where){
                $data['count']=$tables->where($where)->count();
            }else{
                $data['count']=$tables->count();

            }
        }
        if($add_one_flag === true){
            $data['count'] += 1;
        }

        $page_step = C('PAGE_NORMAL_COUNT');
        //第二返回总页数
        $data['page_all']=(int)ceil($data['count']/$page_step);

        //第三返回底标的分页数组
        $page_start=$page-2;
        if($data['page_all']>5){
            if($page_start<=0){
                $page_start=1;
                $page_end=5;
            }else{
                $page_end=$page+2;
                if($page_end>=$data['page_all']){
                    $page_end=$data['page_all'];
                    $page_start=$page_end-4;
                }
            }
        }else{
            $page_start=1;
            $page_end=$data['page_all'];
        }
        $data['page_start']=$page_start;
        $data['page_end']=$page_end;
        //第四返回当前页
        $data['page']=$page;
        //第五 返回上一页和下一页
        $prev_page=$page-1;
        if($prev_page<=0){
            $prev_page=1;
        }
        $next_page=$page+1;
        if($next_page>=$data['page_all']){
            $next_page=$data['page_all'];
        }

        $data['prev_page']=$prev_page;
        $data['next_page']=$next_page;
        $data['prefix_page']=$prefix_page;

        // 自动获取参数,避免分页丢失
        $query_string = $_SERVER['QUERY_STRING'];
        if ($query_string) {
            $pos = strpos($query_string,'&');
            if ($pos){
                $my_query_string = substr($query_string,$pos);
                $data['tail'] = $my_query_string;
            } else {
                $data['tail'] = '&'.$query_string;
            }
        }
        return $data;
    }
}

原文地址:https://www.cnblogs.com/jiqing9006/p/11799779.html