一般情况我们写数据分页都是如下代码
//分页码$page = $_REQUEST['page'];//显示条数$limit = 10;//分页开始条数$start_limit = ($page - 1) * $limit;//运行sql语句得到的结果$list = model('table')->limit("$start_limit, $limit")->findAll();//返回数据return $list;
比如我们有102条数据,到了11页的时候就会只有2条数据,显然这不是我们要的结果。如果我们想要第11页数据显示的是最后的2条+第1页的前8条,就不能用这种方法了。
//分页码$page = $_REQUEST['page'];//显示条数$limit = 10;//数据总条数$count = model('table')->count();//取模$pattern = (($page - 1) * $limit) % $count;//余条数$pattern_limit = $pattern % $limit;//获取数据$list = model('table')->limit("$pattern, $limit")->findAll();//数据条数小于页面显示条数 继续查询进行追加if(count($list) < $limit){//差数据条数$remainder = $limit - count($list);//重头开始查询数据$new_list = model('table')->limit("0, $remainder")->findAll();//合并数据$list = array_merge($list, $new_list);}return $list;
