以前作数据分页遇到这样一个需求,就是数据到最后一页的时候不能中断,继续把第一页的数据追加到后面,无限显示下去。
原文地址:代码汇我的博客 http://www.codehui.net/info/23.htmlphp
通常状况咱们写数据分页都是以下代码html
//分页码 $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条,就不能用这种方法了。sql
//分页码 $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;