tp3.2上一篇下一篇功能

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的数据的下一页数据

原文地址:https://www.cnblogs.com/zsczsc/p/7204402.html