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'):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);