留言板与公告板的设计与实现_第1页
留言板与公告板的设计与实现_第2页
留言板与公告板的设计与实现_第3页
留言板与公告板的设计与实现_第4页
留言板与公告板的设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 留言板与讨论板的设计与实现本章主要介绍了留言板与讨论板的数据库结构、程序流程图及功能实现过程。7.1留言板的设计与实现7.1.1 留言板程序流程图 留言板的基本功能就是把访问者的意见、建议和问题等信息记录下来,并提供给其他访问者(包括站长和网友)观看,以便人们进行交流。留言板应该具有一个“留言表单”网页,以便访问者输入留言信息,并把信息传送给服务器处理。留言信息被送到服务器时,ASP程序负责处理留言并将其存储起来,故需在服务器端设置处理留言信息的程序和存储留言信息的数据库。此外,还要设计浏览留言信息的网页。留言板程序流程如图7.1所示。输入留言信息提交留言信息处理留言(存储、删除)查看

2、留言图7-1 留言板程序流程图7.1.2留言板数据库的设计建立留言数据库时,需要建主题、姓名、电子信箱、留言内容、留言时间和表情等字段。主题、姓名、电子信箱和表情等字段是信息比较少的字段,可采用文本数据类型,留言内容会占用较大空间,宜采用备注格式数据类型。而对于时间字段,我们把时间字段设为“日期/时间”类型,并设置默认值为NOW(),这样在创建新的记录时,系统自动填入建立该记录的时间,保存了留言者的留言时间,由于浏览的留言信息以时间顺序排序,故该类型设置索引项为“有(有重复)”。留言板数据库结构如图7-2所示。图7-27.1.3 留言板功能的实现根据留言板程序流程图可看出,完成一个完整的留言板

3、系统,需要设计提交留言表单、留言表单处理程序和浏览留言信息三部分内容。下面对设计中的关键技术作一说明。1 提交留言表单的设计利用Dreamweaver的表单元素设计主题、姓名、电子信箱、留言内容、留言时间和表情等字段。留言信息可能不只一行,采用文本区域框,其它输入项采用文本框即可。在这里要注意的是:(1) 所有的输入项都要放在一个表单框内。(2) 设置表单的发送对象为ASP程序,同时指明服务器端处理留言程序的ASP程序地址,即中的action参数值。 2.留言表单处理程序留言表单处理程序主要是把留言表单送来的留言信息存储在数据库中。读取留言表单的内容用Request对象,通过Request对象

4、把读取的值赋给变量,存入数据库中。若要求留言板中有访问者的的IP地址,在此可用命令Request.ServerVariables()找出访问者的的IP地址,把得到的IP地址赋给变量。另外,还需用一个地址转向语句,以便用户能看到自己的留言信息。3.浏览留言信息的设计设计思想是打开数据库,逐一取得每个记录各个字段的值,并以一定的格式提供给访问者。当信息过多时,就要给数据分页,故要设定每页显示的信息条数;与此同时,网页要为访问者提供交互功能,即访问者能够决定显示第几页信息,可用文本框输入页数,然后调用Request对象读取输入值并显示留言信息,涉及到的部分程序如下:rs.pagesize=page_

5、size (设置一页显示的留言条数)Page=Clng(Request(“Page”)(获取要显示的页数)If Pagers.PageCount then Page=rs.PageCount (若输入的页数大于最大页数,则强制设为最后一页)Showonepage rs,pageShoeonepage是一个显示留言的子程序,它根据RS和Page两个参数显示具体的页面,其设计思想利用参数传递过来的值,打开数据库的表的记录集RS,并显示Page指定的页面。上述的提交留言板信息和显示信息在进行页面处理时放在一个页面上,一页显示10条留言。这样可以减少文件数,也方便显示和写留言。在留言板代码设计时,比较

6、难的是分页功能的实现。该留言板在显示留言下方设计了“上一页”、“下一页”、“第一页”、“最后一页”的功能。如图7-3所示。图7-3相关代码如下: 返回留言窗体% if page1 then response.write 第一页 response.write 上一页 end if if pagers.pagecount then response.write 下一页 response.write 最后一页 end if % 页次:/ 4.留言板程序功能留言板的程序有两个,一个是liuyanban.asp,该文件主要用于显示留言记录和输入留言。当提交留言时,程序转向chuliliuyan.asp,

7、由该文件将输入的留言记录写入数据库中,然后返回liuyanban.asp,显示留言,并准备输入下一条留言。留言板程序功能的实现如图7-4所示。图7-45.分页功能参数说明ASP中的分页功能就是将数据库的查询结果分页显示。实现步骤:首先将数据库中所有符合查询条件的记录一次性(或分批)读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及AbsolutePage( 绝对页 ) 来管理分页处理。进行 ADO 存取数据库时的分页显示,其实就是对 Recordse

8、t 的记录进行操作。Reordset 对象的属性和方法如下:n BOF 属性:目前指标指到 RecordSet 的第一笔。n EOF 属性:目前指标指到 RecordSet 的最后一笔。n Move 方法:移动指标到 RecordSet 中的某一条记录。n AbsolutePage 属性:设定当前记录的位置是位于哪一页n AbsolutePosition 属性:目前指标在 RecordSet 中的位置。n PageCount 属性:显示 Recordset 对象包括多少“页”的数据。n PageSize 属性:显示 Recordset 对象每一页显示的记录数。n RecordCount 属性:

9、显示 Recordset 对象记录的总数。下面就与分页相关的属性进行说明。(1)AbsolutePage 属性AbsolutePage 属性设定当前记录的位置是位于哪一页的页数编号;使用 PageSize 属性将Recordset 对象分割为逻辑上的页数,每一页的记录数为 PageSize(除了最后一页可能会有少于 PageSize 的记录数)。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。与AbsolutePosition 属性相同,AbsolutePage 属性是以1为起始的,若当前记录为 Recordset 的第一行记录,AbsolutePage 为1。可以设定 A

10、bsolutePage 属性,以移动到一个指定页的第一行记录位置。(2)AbsolutePosition 属性AbsolutePosition 属性用于确定指针所指记录的确切位置,AbsolutePosition属性的数值为当前指针相对于记录集顶部的位置,由1算起,即第一条记录的 AbsolutePosition为1。注意 ,在存取RecordSet 时,无法保证 RecordSet 每次都以同样的顺序出现。若要启用 AbsolutePosition,必须先设定为使用用户端cursor(指针),asp码如下:rs2.CursorLocation = 3(3)PageCount 属性PageCo

11、unt 属性确定Recordset 对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于 PageSize 属性的设定,即使最后一页的记录数比 PageSize 的值少,最后一页也算是 PageCount 的一页。 (4)PageSize 属性PageSize 属性是决定 ADO 存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用 AbsolutePage 属性移到其它逻辑页的第一条记录。PageSize 属性能随时被设定。(5)RecordCount 属性RecordCount 属性可以找出一个 Recordse

12、t 对象包括多少条记录。如:7.2 讨论板的设计与实现7.2.1 讨论板程序流程图 讨论组一般用于各个小组在网上上就共同的主题进行讨论。有时也可称它为BBS,它是网上最早流行的栏目,为大家提供了发布信息、自由抒发情感、讨论问题的空间。本讨论组在设计时,是由管理员发讨论主题,然后在每个讨论主题里可以就主题进行讨论。其程序流程图如图7-4所示:登录发主题回复主题显示讨论信息图7-4 公告板程序流程图7.2.2公告板数据库的设计 BBS中涉及两个数据表,一个是主题数据表,另一个是与主题相关的讨论帖数据表。主题数据表和相关讨论帖数据表如图7-5和图7-6所示。这两张表以TitleID为关键字进行关联。

13、关联图如图7-7所示。图7-5 titles数据表图7-6details数据表图7-7 titles和details关联图7.2.3 讨论板功能的实现讨论主要由输入主题、提交主题、显示主题和回复主题四个部分组成。网页文件主要有4个。其中xuexi.asp用于显示讨论板首页,包括讨论主题和提交主题功能,titlenew.asp用于将新主题写入数据库,detail.asp用于显示某个主题下的讨论内容,detnew.asp用于将讨论内容写入数据库。讨论板程序调用的实现,如图7-8所示。图7-8724程序设计要点在Xuexi.asp中,显示的日期是主题创建日期到最后一条讨论内容的更新日期,是一个时间段

14、,与titles数据表所一定的字段不一致。如图7-9所示。图7-9相应的程序如下: 日期 工作站小组名称 则数 主题 a HREF=Detail.asp?TitleID= 在显示记录的“主题”(subject)字段时,为主题设置了一个超级链接,以便进入detail.asp页面。超级链接的建立方法如下:a HREF=Detail.asp?TitleID=detnew.asp文件用于保存讨论内容。当进入某一个讨论主题,并发表意见之后,detnew.asp除了要将讨论内容保存于details数据表之外,还需要同时更新titles数据表的以下两个字段:LastNewsDate字段:最后被讨论的时间,更

15、新后的内容为系统时间(取now()函数)。Number字段:参与讨论的则数,更新后,在原数的基础上加一。上面两个字段的更新代码如下: set cmd=server.CreateObject(ADODB.command) set cmd.activeConnection=rsData.ActiveConnection sql=update titles set lastNewsDate=now(),number=number+1 where titleId=&titleId cmd.CommandText=sql cmd.execute实验 留言板与讨论板程序设计实例本章实验主要针对留言板和讨论

16、板进行设计,根据本章提供的数据库及源程序,设计出有特点的留言板和讨论板。下面的界面及源程序仅供参考。一、留言板程序设计1、界面设计留言板首页比较简单,如图7-2所示。上部是留言显示部分,下面是留言添加表单,留言填写完毕后,单击“送出留言”按钮后传送到chuliliuyan.asp去处理,处理完后再引导回首页。如图7-10所示。图7-102Liuyanban.asp代码 %page=Clng(request(page)if pagers.pageCount then page=rs.pagecountshowonePage rs,page% %sub ShowOnePage(rs,page) r

17、s.AbsolutePage=page for ipage=1 to rs.pageSize rsTobook rs rs.movenext if rs.EOF Then Exit For nextend subsub rsTobook(rs) memo=replace(rs(留言),vbCrLf,) if len(rs(图标)0 then picHtml= else picHtml=end if% 留言者: 主题: 时间: E-mail:a href=mailto: 返回留言窗体% if page1 then response.write 第一页 response.write 上一页 end

18、 if if pagers.pagecount then response.write 下一页 response.write 最后一页 end if % 页次:/ 请在这里留言 姓名:     E-mail:     主题:     留言:     心情图标:         3处理留言文件chuliliuyan.asp Untitled Document二、讨论板程序设计1.讨论板首界面设计首界面包含显示主题和输入主题,在显示的主题上点击链接,进入某一个主题讨论区。如图7-11所示。图7-112.首界面源代码(xuexi.asp) 日期 工作站小组名称 则数 主题 a HREF=Detai

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论