第七章 留言板与讨论板的设计与实现
本章主要介绍了留言板与讨论板的数据库结构、程序流程图及功能实现过程。
7.1留言板的设计与实现
7.1.1 留言板程序流程图
留言板的基本功能就是把访问者的意见、建议和问题等信息记录下来,并提供给其他访问者(包括站长和网友)观看,以便人们进行交流。
留言板应该具有一个“留言表单”网页,以便访问者输入留言信息,并把信息传送给服务器处理。留言信息被送到服务器时,ASP程序负责处理留言并将其存储起来,故需在服务器端设置处理留言信息的程序和存储留言信息的数据库。此外,还要设计浏览留言信息的网页。
留言板程序流程如图7.1所示。
输入留言信息 提交留言信息 处理留言(存储、删除) 查看留言 图7-1 留言板程序流程图
7.1.2留言板数据库的设计
建立留言数据库时,需要建主题、姓名、电子信箱、留言内容、留言时间和表情等字段。主题、姓名、电子信箱和表情等字段是信息比较少的字段,可采用文本数据类型,留言内容会占用较大空间,宜采用备注格式数据类型。而对于时间字段,我们把时间字段设为“日期/时间”类型,并设置默认值为NOW(),这样在创建新的记录时,系统自动填入建立该记录的时间,保存了留言者的留言时间,由于浏览的留言信息以时间顺序排序,故该类型设置索引项为“有(有重复)”。留言板数据库结构如图7-2所示。
1
图7-2
7.1.3 留言板功能的实现
根据留言板程序流程图可看出,完成一个完整的留言板系统,需要设计提交留言表单、留言表单处理程序和浏览留言信息三部分内容。下面对设计中的关键技术作一说明。
1. 提交留言表单的设计
利用Dreamweaver的表单元素设计主题、姓名、电子信箱、留言内容、留言时间和表情等字段。留言信息可能不只一行,采用文本区域框,其它输入项采用文本框即可。在这里要注意的是:
(1)所有的输入项都要放在一个表单框内。 (2)设置表单的发送对象为ASP程序,同时指明服务器端处理留言程序的ASP程序地
址,即
4.留言板程序功能
留言板的程序有两个,一个是liuyanban.asp,该文件主要用于显示留言记录和输入留言。当提交留言时,程序转向chuliliuyan.asp,由该文件将输入的留言记录写入数据库中,然后返回liuyanban.asp,显示留言,并准备输入下一条留言。
留言板程序功能的实现如图7-4所示。
图7-4
5.分页功能参数说明
ASP中的分页功能就是将数据库的查询结果分页显示。实现步骤:首先将数据库中所有符合查询条件的记录一次性(或分批)读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及 AbsolutePage( 绝对页 ) 来管理分页处理。
进行 ADO 存取数据库时的分页显示,其实就是对 Recordset 的记录进行操作。Reordset 对象的属性和方法如下:
? BOF 属性:目前指标指到 RecordSet 的第一笔。 ? EOF 属性:目前指标指到 RecordSet 的最后一笔。 ? Move 方法:移动指标到 RecordSet 中的某一条记录。 ? AbsolutePage 属性:设定当前记录的位置是位于哪一页 ? AbsolutePosition 属性:目前指标在 RecordSet 中的位置。 ? PageCount 属性:显示 Recordset 对象包括多少“页”的数据。 ? PageSize 属性:显示 Recordset 对象每一页显示的记录数。 ? RecordCount 属性:显示 Recordset 对象记录的总数。 下面就与分页相关的属性进行说明。 (1)AbsolutePage 属性
AbsolutePage 属性设定当前记录的位置是位于哪一页的页数编号;使用 PageSize 属性
4
将Recordset 对象分割为逻辑上的页数,每一页的记录数为 PageSize(除了最后一页可能会有少于 PageSize 的记录数)。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。与AbsolutePosition 属性相同,AbsolutePage 属性是以1为起始的,若当前记录为 Recordset 的第一行记录,AbsolutePage 为1。可以设定 AbsolutePage 属性,以移动到一个指定页的第一行记录位置。
(2)AbsolutePosition 属性
AbsolutePosition 属性用于确定指针所指记录的确切位置,AbsolutePosition属性的数值为当前指针相对于记录集顶部的位置,由1算起,即第一条记录的 AbsolutePosition为1。注意 ,在存取RecordSet 时,无法保证 RecordSet 每次都以同样的顺序出现。若要启用 AbsolutePosition,必须先设定为使用用户端cursor(指针),asp码如下:rs2.CursorLocation = 3
(3)PageCount 属性
PageCount 属性确定Recordset 对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于 PageSize 属性的设定,即使最后一页的记录数比 PageSize 的值少,最后一页也算是 PageCount 的一页。
(4)PageSize 属性
PageSize 属性是决定 ADO 存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用 AbsolutePage 属性移到其它逻辑页的第一条记录。PageSize 属性能随时被设定。
(5)RecordCount 属性
RecordCount 属性可以找出一个 Recordset 对象包括多少条记录。如: < % totlerecords=RS.RecordCount %>
7.2 讨论板的设计与实现
7.2.1 讨论板程序流程图
讨论组一般用于各个小组在网上上就共同的主题进行讨论。有时也可称它为BBS,它是网
上最早流行的栏目,为大家提供了发布信息、自由抒发情感、讨论问题的空间。本讨论组在设计时,是由管理员发讨论主题,然后在每个讨论主题里可以就主题进行讨论。其程序流程图如图7-4所示:
登录
发主题
回复主题
显示讨论信息
图7-4 公告板程序流程图
5