显示帖子是将数据库中的所有帖子显示到用户浏览器中,这是用户进入论坛时首先能看到的内容。当然,数据库中的各字段都要有所体现。
显示帖子需要注意以下几点:
(1)根据数据库中的status字段,判断该条记录是原文还是对原文的回复。如果是原文,则在浏览器中显示其留言的顺序号,对回复文章只标记其为“回文”,而并不显示其顺序号。
(2)帖子的详细内容并不是放在该页面中。因为论坛的内容比较多,加上原文和回复文章的交替出现导致帖子内容上比较复杂,因此让用户进一步操作来获得有关帖子的详细内容。
(3)在显示窗口中提供链接到查看帖子详细内容的页面。提供链接的是发言的主题。
(4)在显示窗口中提供链接到帖子作者的信箱。提供链接的是作者的E-mail地址。
显示帖子程序mainnote.asp 的代码如下 :
〈!--#Include file=″config.inc″--〉
〈HTML〉
〈HEAD〉
〈TITLE〉查看讨论主题〈/TITLE〉
〈/HEAD〉
〈BODY style=″font :l0pt ;margin-left :4pt″〉
〈BR〉
〈A style=″color :blue;cursor :hand;font :l0pt;text-decoration:underline″onclick=
″Window.open (′noteadd .htm′,′_blank′,′toolbars=no,scrollbars=yes,width=420
,height=300′)″〉添加新主题〈/A〉
〈HR color=″#999933″ size=l〉
〈FONT style=″font :l0pt ;color :#CC66FF″〉
′如果您看不到 自己的留言,单击刷新按钮,稍侯即可〈/FONT〉
〈TABLE width=570 border=0 cellPadding=O cellSpacing=l bordercolor=#baccff〉
〈%
Dim ipagesize ′每页显示记录数
ipagesize=l0
page=request .querystring (″page″)
If page=″″Then
page=l
End If ′如果是第1次浏览该页,则说明page是空,那么就将它的值设为1
′连接数据库
Set conn=server .createobject (″adodb .connection″)
Conn.open connstring
Set objnoters=server .createobject (″adodb .recordset″)
ssgl=″select*from notetable order by notetime desc″′将最新的留言显示在最前面
objnoters .open ssgl,conn,1,3
′到此完成数据库打开操作
If objnoters .eof Then
Response .write ″目前还没有任何文章信息!″
Response .end
End If
′制作 显 示 留言的表 头
Response .write ″〈TR becolor=#baccff class=classl align=center〉〈TDwidth=50〉
序号〈/TD〉〈TD width=140〉主题〈/TD〉〈TD width=70〉作者〈/TD〉〈TD width=140〉E-mail
〈/TD〉〈TD width=130〉发表时间〈/TD〉〈TD width=60〉阅读数〈/TD〉〈/TR〉″
′输 出所有 留言
Objnoters .pagesize=ipagesize ′设置每页显示记录数
pagetotal=Objnoters .pagecount ′根据 pagesize 计算总页数
Objnoters .absolutepage=page ′转到要显示的页
Response .write ″〈TR〉〈TD colspan=″″6″″〉〈TABLE width=″″l00%″″ border=0
Cellspacing=0 cellPadding=2 becolor=#eeeeee〉″
For position=l to ipagesize
Response.write ″〈tr align=center〉〈td width=50〉″
If objnoters(″status″)=0 then ′表明这个贴子记录是原创文章
Response.write cint(right(objnoters(″noteid″),5))
′打印出此留言的编号(原文编号,没有计回文)
Else(www.xing528.com)
Response.write ″〈FONT color=#FF00FF〉回文〈/FONT〉″
End If
Response.write ″〈/TD〉″ ′下面打印出此条留言的其他部分
Response.write ″〈TD width=150〉″
%〉
〈A style=″cursor:hand;color:blue;text-decoration:underline″
onclick=″window.open(′noteview.asp?noteid=〈%=objnoters(″noteid″)%〉′,′_bla nk′,′toolbars=no,scrollbars=yes,width=420,heigh:=200′)″〉〈%=objnoters(″sub ject″)%〉〈/A〉
〈%
Response.write ″〈/TD〉″
Response.write ″〈TD width=70〉″&objnoters(″userid″)&″〈/TD〉″
Response.write ″〈TD width=140〉″
%〉
〈A href=″mailto:〈%=objnoters(″email″)%〉″〉〈%=objnoters(″email″)%〉〈/A〉
〈%
Response.write ″〈/TD〉″
Response.write ″〈TD width=130〉″&objnoters(″notetime″)&″〈/TD〉″
Response.write ″〈TD width=60〉″&objnoters(″readnum″)&″〈/TD〉〈/TR〉″
Objnoters.movenext
If objnoters.eof Then
Exit For ′已经到了表的尾
End If
Next
%〉
〈/TABLE〉〈/TD〉〈/TR〉
〈/TABLE〉
〈%
Response.write ″ ; ; ;页码:
for pagetemp=l to pagetotal
If pagetemp=cint(page)Then ′如果是当前页面则不予超级链接
Response.write ″〈FONT color=#CC00FF〉【″&pagetemp &″】〈/FONT〉″
Else ′给其他页面提供超级链接
%〉
〈FONT color=#009900〉
〈A HREF=″mainnote.asp?page=〈%=pagetemp%〉″〉【〈%=pagetemp%〉】〈/A〉〈/FONT〉
〈%
End If
next
%〉
〈/BODY〉
〈/HTML〉
config.inc文件是一个初始化文件,其中定义了一些基本常用的变量,这些变量在其他程序中都经常会用到,而把它们集中到config.inc文件中完全是为了节省编程的劳动量,也在一定程度上简化了程序,增强程序的可读性和可维护性,这是一种很好的编程习惯和素质,同学们要认真体会。其内容如下:
〈%
connstring=″DRIVER={Microsoft Access Driver(*.mdb)};DBQ=″&_
Server.MapPath(″aspdb.mdb″)
pagesize=3 ′Total number of prctuct per one page
timeoutsession=5 ′Decide how long customer can stay without making new page
Session.timeout=timeoutsession
Function sqlstr(data)
Sqlstr=″′″&Replace(data,″′″,″′′″)&″′″
End Function
%〉
下面对程序的基本原理讲解如下:
先在mainnote.asp中将数据库中notebook表内的所有发表主题信息分页显示出来。按照时间进行排序,最新的发言排在最靠前的位置。判断每一条发言的状态字段,如果是原创文章则进行编号处理;如果是回复文章则提示该文章为“回文”。在发表帖子主题字段提供链接,链接到帖子查看程序noteview.asp中查看具体的发表主题详情,传递的参数是发表主题的编号。显示效果如图8-5所示。
图8-5 论坛帖子主页面
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。