zoukankan      html  css  js  c++  java
  • thinkphphp 计算分页 和分页总数 和sql计算分页 php

    利用page计算分页

    $p=input('p')?input('p'):1;
    $limit=6;
    $res=db('points_log')->where(['p_uid'=>$uid,'del_id'=>0])->field('p_log_id,p_uid,integral_source,integral,creat_time')->page($p,$limit)->order('creat_time desc')->select();

    $count=db('points_log')->where(['p_uid'=>$uid,'del_id'=>0])->count();

    //计算分页总数
    $page=ceil($count/$limit);

    var_dump($page);

    第二种 limit计算分页

            $list_rows= $data['list_rows'] ? $data['list_rows'] : 10;
            $page= $data['page'] > 0 ? $data['page'] : 1;
            $result = NavModel::where(['typeid' => $data['typeid'], 'status' => 1])
          //因为要从传默认是1 这个需要减1
                        ->limit(($page-1)*$list_rows,$list_rows)
                        ->select()->toArray();
            if (count($result) >= 1) {
                foreach ($result as &$v) {
                    if ($v['thumb']) {
                        $v['thumb'] = get_file_url($v['thumb']);
                    }
                    $v = $this->filter($v, $this->fname);
                }
                return ApiReturn::r(1, $result, '请求成功');
            }

     thinkphp 使用  paginate 计算分页

    $config = [
    'list_rows' => $data['list_rows'] ? $data['list_rows'] : 10,
    'page' => $data['page'] > 0 ? $data['page'] : 1
    ];
    $list = $commentModle
    ->where($where)
    ->paginate($config)//分页数自己确定
    ->each(
    function($item){
            //存入数据到name里面
    $item['name']= Db::name('community_comment')->where(['pid' => $item['id']])->limit(5)->select();
        require  $item;
            }
    );

    如果这个需要传值
    $config = [
    'list_rows' => $data['list_rows'] ? $data['list_rows'] : 10,
    'page' => $data['page'] > 0 ? $data['page'] : 1
    ];
    $a=1;
    $list = $commentModle
    ->where($where)
    ->paginate($config)//分页数自己确定
    ->each(
    function($item,$a){
            //存入数据到name里面
    $item['name']= Db::name('community_comment')->where(['pid' => $item['id']])->limit(5)->select();
        require  $item;
            }
    );


    或者

    $config = [
    'list_rows' => $data['list_rows'] ? $data['list_rows'] : 10,
    'page' => $data['page'] > 0 ? $data['page'] : 1
    ];
    $a=1;
    $list = $commentModle
    ->where($where)
    ->paginate($config)//分页数自己确定
    ->each(
    function($item)use($a){
            //存入数据到name里面
    $item['name']= Db::name('community_comment')->where(['pid' => $item['id']])->limit(5)->select();
        require  $item;
            }
    );



    另外一种方式
    $config = [
    'list_rows' => $data['list_rows'] ? $data['list_rows'] : 10,
    'page' => $data['page'] > 0 ? $data['page'] : 1
    ];
    $list = $commentModle
    ->where($where)
    ->paginate($config)//分页数自己确定
    ->each(
    function($item,$key){
            //存入数据到name里面
    $item['name']= Db::name('community_comment')->where(['pid' => $item['id']])->limit(5)->select();
            }
    );

    如果pageinate 这个方法从不能接收使用
    在pageinate
    就可以使用all();这个方法赋值但是分页就要重新赋值了如下

       $res = $list->all();
       foreach ($res as $k => $v){
      if($v['agent_id'] == $v['adviser_id']){
       $res[$k]['user_nickname'] = "";
       }else{
       if(($user_type == 1) && ($v['agent_id'])){
         $res[$k]['agent_name'] = Db::name('user')->where('id',$v['agent_id'])->value('user_name');
        }
       if(($user_type == 2) && ($v['adviser_id'])){
          $res[$k]['adviser_name'] = Db::name('user')->where('id',$v['adviser_id'])->value('user_name');
             }
           }
         $res[$k]['user_img']=get_file_url(411);

       }
      $return_list['data'] = $res; 数据
      $return_list['total'] = Db::name('user_customer')->where($whereid)->where($whereproduct)->where($wheresearch)->where($whereimportance)->count();多少条数据
      $return_list['per_page'] = $config['list_rows'];分页显示数量
      $return_list['current_page'] = $config['page'];分页
      $return_list['last_page'] = ceil($return_list['total']/$return_list['per_page']);分页数量


    还有一种方法
         /*
    因为数据列表刷新的时候
    例如: 有11条数据 如果我请求第二页的时候 会删除一条数据之后第二页会请求不到 就要以以id为进行分页
    * */
    $id=input('id')?input('id'):1;
    $limit=10;
    $res=db('points_log')
    ->where("id","<",$id)
    ->field('p_log_id,p_uid,integral_source,integral,creat_time')
    ->limit($limit)
    ->order('creat_time desc')
    ->select();

    $count=db('points_log')->where(['p_uid'=>$uid,'del_id'=>0])->count();

    //计算分页总数
    $page=ceil($count/$limit);



  • 相关阅读:
    Mini440之uboot移植之源码分析board_init_f(二)
    Mini440之uboot移植之源码分析uboot重定位(三)
    Mini440之uboot移植之实践DM9000支持(八)
    Mini2440裸机开发之DM9000
    Mini440之uboot移植之源码分析命令解析(五)
    Mini440之uboot移植之实践NOR启动(六)
    Mini440之uboot移植之实践NOR FLASH支持(七)
    mysql调优和SQL优化
    linux man手册使用相关问题
    关于ca以及证书颁发的一些事
  • 原文地址:https://www.cnblogs.com/zlf2000/p/11009842.html
Copyright © 2011-2022 走看看