日期:2011-07-07  浏览次数:20996 次

  2、构建文章显示模块

  前面说过,一片具体的文章是分属在看板和主体之下的。因此显示文章也要经过看板列表和主体列表这两页面后,才能得到特定主题下文章的列表。

  (1)板列表的显示页面:


< html>
< head>
< title>看板列表< /title>
< meta http-equiv="Content-Type"content="text/html; charset=GB2312">
< /head>

  (2)打开连接,显示看板列表


< %Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
sql = "select * from 看板列表"
set rs=conn.execute(sql)
%>

  注:简单的SQL查询,把所有的看板有关讯息传回到纪录集RS中。下面的任务就是显示纪录记得内容,并在相应的看板名称上建立显示看板主题的连接。


< body bgcolor="#FFFFFF">
< h2 align="center">看板列表</h2>
< table width="60%" border="0"cellspacing="0" cellpadding="0"align="center">
< tr bgcolor="#FFFFCC">
< td height="35" width="25%">看板名称</td>
< td height="35" width="21%">板主</td>
< td height="35" width="23%">主题数</td>
< td height="35" width="31%">板主登陆</td>
< /tr>

  注:这儿一部分是显示出表格中每一列的标题,这儿我没有用一个统一的函数来显示RS纪录记的内容,因为这样可以对表格的外观和风格做更多的控制,使用起来虽然有点麻烦,但是却更为灵活。


< %
do
boardid=rs("id")
boardname=rs("名称")
boardmanager=rs("板主")
response.write "< tr>< td><a href=qBoard.asp?boardid="& boardid& "&boardname=" & boardname& ">" & boardname &"< /a>< /td>"

  注:这一行是重点,当点击了各个板的名称后,可以连接到显示看板主题的页面。程序代码看起来有点麻烦,我分解了给你讲,你就会明白了。在点击之后,浏览器请求使用的是qBoard.asp页面,并带有一个参数boardid,代表要显示看板的ID号,在请求页面和参数之间用问号(?)分隔。Boardid是前面设定了的变量,其中包含的就是对应看板的ID号。这个连接中还带有另外一个参数boardname,用来把看板名称传递给qBoard.asp页面。在多个参数间使用"&"来分隔。这个参数不是必须的,传递过去是为了免得在qBorad.asp中再次用boardid来查询看板名称。一般来说,能够少用数据库操作就应当尽量的少用,这样可以提高ASP页面的性能。因为Response.Write语句使用字符串作为参数的,所以上面的字符串和变量之间使用的是"&"联结符。最后ASP页面解释的结果应该是像这样的


<td>< a href=qBoard.asp?boardid=1&boardname=系统板>系统板 < /a>< td>。
response.write "< td>< a href=qAuthor.asp?author="&boardmanager & ">" &boardmanager & "< /a></td>"
response.write "< td>" &rs("主题数") & "< /td>"
response.write "< td>< a href=managerlogin.asp?boardid="&boardid & ">板务处理< /a></td>< /tr>" 

  注:在这个表中,除了可以由连接来显示看板主题的内容,还有一个斑竹查询部分和板务处理部分,版主查询可以是通过qAuthor.asp来实现的,它只是简单的从数据库中取出作者讯息,并显示出来,这儿就不多说了。而板务处理是由managerlogin.asp页面来处理的。这属于文章审阅模块,我在后面再详说。


rs.movenext
loop until rs.eof
%>

  注:通过一个do … loop循环,把纪录集中所有的讯息都显示了出来。


< /table>
< div align="center"><br>

  点击看板名称可以得到主题列表,点击板主名称可以察看板主讯息


< /div>
< /body>
< /html>
< %
set rs=nothing
conn.close
set conn=nothing
%>

  (3)打造qBaord.asp页面:  


< %
boardid=request("boardid") '取出由上个页面传递过来的看板ID号
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft AccessDriver (*.mdb)};dbq=" & Server.MapPath("bbssystem.mdb")
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = "主题列表"
ReDim param(0) //注:声明参数数组
param(0) = CLng(boardid)//注:CLng 不可忽略
Set rs = cmd.Execute( ,param )
%>
< html>
< head>
< title>主题列表< /title>
< meta http-equiv="Content-Type"content="text/html; charset=GB2312">
< /head>
< body bgcolor="#FFFFFF">
< h1 align="center"><%=rs("看板名")%>板主题列表 </h1>
< table width="80%" border="0"cellspacing="0" cellpadding="0"align="center">
< tr bgcolor="#FFFFCC">
< td width="89%" height="21">主题</td>
< td width="11%" height="21">文章数</td>
< /tr>
< %
do
topicid=rs("id")
topicname=rs("标题")
sum=rs("文章数")
response.write "< tr>< td><a href=qtopic.asp?topicid=" & topicid& "&boardname=" & boardname& ">" & topicname &"< /a>< /td>"
response.write "< td>" &sum & "< /td>< /tr>"
rs.movenext
loop until rs.eof
%>
< /table>
< /body>
< /html>
 

  注:qBoard.asp列出了某个版面下的所有的主题,在点击了主题名称后就会进入相应的主题文章列表。这个列表的是由qTopic.asp这个ASP脚本来实现的。Qtopic.asp的程序代码在本质上几乎和qBoard.asp没有区别,只是在各自的细节上有所区别,这儿也不打算再多讲了。

  (4)在点击了文章列表中的文章标题后,会进入文章内容浏览页article.asp:


< %
articleid=request("articleid")
Set conn = Server.CreateObject("ADODB.