1. 后台
1 //上一页 2 3 $map1['a_id'] = array('gt',$a_id); 4 $map1['cate_id'] = array('eq',$cate_id); 5 6 $front=$arc->where($map1)->order('a_id asc')->limit('1')->find(); 7 8 9 if($front){ 10 11 $furl=__CONTROLLER__.'/xwzxnr/cate_id/'.$front['cate_id'].'/a_id/'.$front['a_id']; 12 $ftitle=$front['a_title']; 13 14 }else{ 15 16 $furl="javascript:void(0);"; 17 $ftitle = "往上没有文章啦"; 18 19 } 20 21 $this->assign('furl',$furl); 22 $this->assign('ftitle',$ftitle); 23 24 //下一页 25 26 $map['a_id'] = array('lt',$a_id); 27 $map['cate_id'] = array('eq',$cate_id); 28 29 $after=$arc->where($map)->order('a_id desc')->limit('1')->find(); 30 if($after){ 31 32 $aurl=__CONTROLLER__.'/xwzxnr/cate_id/'.$after['cate_id'].'/a_id/'.$after['a_id']; 33 $atitle=$after['a_title']; 34 35 }else{ 36 37 $aurl="javascript:void(0);"; 38 $atitle = "往下没有文章啦"; 39 40 } 41 42 $this->assign('aurl',$aurl); 43 $this->assign('atitle',$atitle);
2. 前台
<a href="{$furl}">上一篇:{$ftitle}</a> <a href="{$aurl}">下一篇:{$atitle}</a>
注:为什么 上一页的排序是 asc ,下一页的排序是desc
这里以客户看到的第一条数据为最新数据为前提,所以总数据肯定是倒序排列(即 desc)
在上面这种情况下,上一页的数据的主键值比当前页的数据的主键值大一,下一页的数据的主键值比当前页的数据的主键值小一,如下图:
上一页排序原理:
如果主键值为198的数据为当前页的话,它的下一页没有,上一页就是主键值为199的数据。所以上一一页的排序就应该按照 a_id asc排序,第一条数据就是 主键值199的数据,取到该数据即为主键值为198的数据的上一页数据
下一页排序原理:
如果主键值为200的数据为当前页的话,它的上一页没有,下一页就是主键值为199的数据。所以下一页的排序就应该按照 a_id desc排序,第一条数据就是 主键值199的数据,取到该数据即为主键值为200的数据的下一页数据