thinkphp实现上一篇与下一篇的功能(不是你想的那么简单)

实现文章上一篇与下一篇的功能;
大家可能觉得难度不大;
百度上一搜基本上都是一种答案;
白俊遥博客

但是他有个缺陷;
就是如果id不是自增呢?
而是由项目需求而自定义生成的一串长数字呢?

所以当id这个自增条件破坏了之后;
上图这个方法便不行了;
我是这样实现的;
我以created_at(数据创建时间)为顺序获得上一篇与下一篇的id;
$id = I('get.id');
$created_at</span> <span style="color: #676867;">=</span> <span style="color: #6089b4;">$Article->getFieldById($id,"created_at");
// 获取上一篇id
$up_where</span>\[<span style="color: #9aa83a;">'created_at'</span>\] <span style="color: #676867;">=</span> <span style="color: #9872a2;">array</span>(<span style="color: #9aa83a;">'ELT'</span>,<span style="color: #6089b4;">$created_at);
$<span style="color: rgb(96, 137, 180);">up_where</span></span>\[<span style="color: #9aa83a;">'id'</span>\] <span style="color: #676867;">=</span> <span style="color: #9872a2;">array</span>(<span style="color: #9aa83a;">'NEQ'</span>,<span style="color: #6089b4;">$id);
$up_id</span> <span style="color: #676867;">=</span> <span style="color: #6089b4;">$Article->where($up_where)->order("created_at desc")->getField('id');
// 获取下一篇id
$down_where</span>\[<span style="color: #9aa83a;">'created_at'</span>\] <span style="color: #676867;">=</span> <span style="color: #9872a2;">array</span>(<span style="color: #9aa83a;">'EGT'</span>,<span style="color: #6089b4;">$created_at);
$<span style="color: rgb(96, 137, 180);">down_where</span></span>\[<span style="color: #9aa83a;">'id'</span>\] <span style="color: #676867;">=</span> <span style="color: #9872a2;">array</span>(<span style="color: #9aa83a;">'NEQ'</span>,<span style="color: #6089b4;">$id);
$down_id</span> <span style="color: #676867;">=</span> <span style="color: #6089b4;">$Article->where($down_where)->order("created_at desc")->getField('id');
获取到两个id之后;
传到前台当作get参数传递即可;
前台view代码:
<empty name="up_id">
没有了
<else />
href="__ACTION__/id/{$up_id}">
上一篇

empty>

<empty name="down_id">

没有了

<else />

 href="__ACTION__/id/{$down_id}">

下一篇

empty>
这样就可以不受id约束了;

木点点博客
请先登录后发表评论
  • 最新评论
  • 总共1条评论
木点点博客

安稳:以后以为学长没有个人博客,如今发现做的这么好,值得好好学习!

2018-09-06 09:43:04 回复

木点点博客
  • 木 点点 i 回复 安稳:相互学习!
  • 2018-09-06 19:36:14 回复