thinkphp5.0 文章详情页 上一篇 下一篇

简介: 博客项目中的文章详情页,上一页、下一页功能的实现。

QQ图片20220425233240.jpg

这篇日志记录下博客项目中的文章详情页,上一页、下一页功能的实现


最开始的想法是根据id,但是后来发现,数据是可以删除的啊,这可怎么办。好了,不啰嗦了,上代码。


博客使用的php框架是thinkphp5


Php部分:


/**
 * 文章详情
 * 查询文章所有信息
 */
public function Detail()
{
  $article = db('article');
  $cate = db("category");
  $artid = input('articleid');
  // 文章详情
  $articleInfo = $article
           ->alias('a')
           ->join("category c",'a.art_cid = c.id')
           ->field("a.id,a.art_cid,a.arttitle,a.artlogo,a.another,a.artdesc,
            a.is_top,a.sort_no,a.status,a.content,a.click_num,a.putime,a.uptime,a.labelstr,c.cat_name")
           ->where('a.id',$artid)
           ->find();
  // 所属标签
  $labelstr = trim($articleInfo['labelstr'],',');
  // var_dump($labelstr);die;
  $labelList = $this->belongLabel($labelstr);
  $this->assign('labelList', $labelList);
  // 上一篇文章
  $front = $article->where('id','<',$artid)->field(['id','arttitle'])->order(['id'=>'desc'])->find();
  // 下一篇文章
  $after = $article->where('id','>',$artid)->field(['id','arttitle'])->order(['id'=>'asc'])->find();
  if(empty($front)){
    $front['arttitle'] = '没有了';
    $front['id'] = '';
  }else if(empty($after)){
    $after['arttitle'] = '没有了';
    $after['id'] = '';
  }
  $this->assign('frontInfo', $front);
  $this->assign('afterInfo', $after);
  $this->assign('articleInfo', $articleInfo);
  return $this->fetch('article_detail');
}


HTML部分:


<div>
   {eq name="frontInfo.id" value=''}
     <p>上一篇:<a href="#">{$frontInfo.arttitle}</a></p>
   {else/}
     <p>上一篇:<a href="{:url('article/Detail',array('articleid'=>$frontInfo['id']))}">{$frontInfo.arttitle}</a></p>
   {/eq}
   {eq name="afterInfo.id" value=''}
     <p>下一篇:<a href="#">{$afterInfo.arttitle}</a></p>
   {else/}
     <p>下一篇:<a href="{:url('article/Detail',array('articleid'=>$afterInfo['id']))}">{$afterInfo.arttitle}</a></p>
   {/eq}
</div>


以上代码就实现了上一页下一页的功能。



目录
相关文章
|
弹性计算 NoSQL 关系型数据库
ECS迁移问题之ECS往本地迁移如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
消息中间件 物联网 网络性能优化
MQTT常见问题之MQTT不支持5.0的协议如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
Java 应用服务中间件 文件存储
使用docker-compose轻松部署FastDFS,高效管理文件存储
在现代互联网应用中,文件存储和管理是一个至关重要的部分。FastDFS是一个快速、可靠的分布式文件系统,广泛应用于各种需要高效文件存储和访问的场景。本文将介绍如何使用Docker轻松地部署FastDFS,以便快速搭建一个可靠的文件存储系统。
516 0
使用docker-compose轻松部署FastDFS,高效管理文件存储
|
JSON 算法 Go
Golang语言使用 jwt-go 库生成和解析 token
Golang语言使用 jwt-go 库生成和解析 token
751 0
|
安全 Linux Shell
Read-only file system 问题分析与解决
Read-only file system 问题分析与解决
Read-only file system 问题分析与解决
|
4月前
|
安全 网络协议 Linux
深入理解Linux内核模块:加载机制、参数传递与实战开发
本文深入解析了Linux内核模块的加载机制、参数传递方式及实战开发技巧。内容涵盖模块基础概念、加载与卸载流程、生命周期管理、参数配置方法,并通过“Hello World”模块和字符设备驱动实例,带领读者逐步掌握模块开发技能。同时,介绍了调试手段、常见问题排查、开发规范及高级特性,如内核线程、模块间通信与性能优化策略。适合希望深入理解Linux内核机制、提升系统编程能力的技术人员阅读与实践。
432 1
|
8月前
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
JavaScript 前端开发
JavaScript / TypeScript日期格式化(dateFormat)
这篇文章介绍了如何在TypeScript中创建和使用一个日期格式化函数`dateFormat`,支持多种日期格式的自定义,并提供了函数的实现代码和使用示例。
769 1
JavaScript / TypeScript日期格式化(dateFormat)
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
编译器 Go
Go中init()执行顺序分析
文章分析了Go语言中`init()`函数的执行顺序和时机,指出全局变量初始化后先于`init()`函数执行,而`init()`函数在`main()`函数之前执行,且包的`init()`函数按包的导入顺序进行初始化。
211 1