文章教程

3.6管理系列网络内容

9/17/2020 9:43:31 PM 人评论 次浏览

3.6 管理系列网络内容

大家有看很多技术手册(PHP在线技术手册等)和网络章回小说的经验。一般在网页的上方或下方有“前一页”“后一页”的链接。在大多数情况下,这些链接是固定的。如果想在那些网页中插入一页新的内容,或者调整网页的顺序,必须修改相关静态链接。如果能在数据库中管理这些内容,就自由地进行内容编辑,调整网页的顺序更是小事一桩。本节将实现一个用数据库管理系列网络内容的应用,如图所示。

alt

本例要点

本节利用关系数据库(RDB)的“自结合”的特性来进行数据的检索,最后实现数据在画面的正确显示。

“结合”是数据库应用的一个重要特征,在RDB中,表内的记录根据被称为“主键(primary key)”的表中保持唯一性的键来管理的,通过与主键一致的外部表的列(外键foreign key)的连接,可将多个表结合在一起。主键和外键可由一列或多列组成。这样,通过各个独立表间的结合,抽出必要信息的特征,是这种数据库之所以称之为“关系”数据库的由来。

关系数据库里有各种结合方式,如“交叉结合”、“左结合”、“右结合”、“联合结合”等,可以参照各种介绍数据库的书籍理解这些概念。下面介绍一下本节所用的“自结合”。根据上面介绍的主键、外键及结合的概念,其实自结合没有多少奥妙之处。首先自结合的表中不仅有主键列,同时又自结合用的外键。其次自结合时,将对象表“重复使用”:一个作为主表,另一个作为外部表。

本节应用中用到的连接表(link),有主键id(连接ID),同时有外键nextId(下一页的连接),由主表的连接ID结合外部表的下一页的连接,完成数据的检索。

表link的数据结构如表3-12所示。

表3-12 表link的数据结构

alt

目录结构

alt

数据库的表结构

表3-13 文档连接表(link)

alt

本例代码

alt

DocNavi.php脚本根据当前的URL以及link表中的数据,生成前(后)页的导航。前(后)页不存在时,将链接到首页(下一节的index.php)。

alt

由表的自结合取得前后页的URL。请参照本节要点中的关于自结合的解说。

请注意WHERE语句里设定的检索条件,由basename函数除去了除文件名外的绝对路径部分,因为表中只登录了文件名,如果不剔除文件名外的绝对路径将搜索不出结果。

alt

判断结果记录是否存在,存在时11到26行生成导航条,否则不生成。

alt

生成前一页的链接,数据不存在时链接到首页(index.php)。

alt

生成后一页的链接,数据不存在时链接到首页(index.php)。

alt

教程类别