ASP动态网页设计第7章.docx
- 文档编号:17230425
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:91
- 大小:40.36KB
ASP动态网页设计第7章.docx
《ASP动态网页设计第7章.docx》由会员分享,可在线阅读,更多相关《ASP动态网页设计第7章.docx(91页珍藏版)》请在冰点文库上搜索。
ASP动态网页设计第7章
第7章设计实例
7.1.3查看主题
在forum.asp文件中实现查看讨论主题的功能。
该页面以分页形式显示当前已有的讨论主题,每页显示5个主题,每个主题以超链接形式显示,可以通过单击某个的主题来查看详细的讨论内容并发表意见,也可以通过单击页面下部的超链接在不同页面之间跳转,如图7.1所示。
如果检测到articles表中不包含任何记录,则显示“当前没有讨论主题!
”,此时可以通过单击页面上部的“发表新帖”链接进入发起主题的页面(newTheme.asp)。
------------forum.asp------------
<%@LANGUAGE="VBScript"%>
--#includevirtual="/adovbs.inc"-->
【
<%
Dimcnn,rst,sSQL,currentPage,rowCount,i
currentPage=Request.QueryString("currentPage")
IfcurrentPage=""Then
currentPage=1
EndIf
Setcnn=Server.CreateObject("ADODB.Connection")
Setrst=Server.CreateObject("ADODB.Recordset")
cnn.ConnectionString="PROVIDER=SQLOLEDB;DATASOURCE=Abc;"&_
"UID=sa;PWD=123;DATABASE=test"
cnn.Open
Setrst=cnn.Execute("articles",,adCmdTable)
'若articles表为空,表示当前没有讨论主题
Ifrst.EOFThen
Response.Write"
当前没有讨论主题!
"Response.End
EndIf
'关闭当前记录集
rst.Close
rst.CursorType=adOpenStatic
rst.PageSize=5
'将SQLSELECT语句存放到字符串中
'按照时间顺序排列记录,使后来发起的主题排在前面
sSQL="SELECT*FROMarticlesORDERBYissue_timeDESC"
'重新打开记录集
rst.OpensSQL,cnn
'设置当前页号
rst.AbsolutePage=CInt(currentPage)
rowCount=0
%>
<%WhileNotrst.EOFAndrowCount
id=<%=rst("art_id")%>'>
<%=rst("theme")%>
<%
rowCount=rowCount+1
rst.MoveNext
Wend
%>
当前主题数<%=rst.RecordCount%>
每页<%=rst.PageSize%>个主题
当前页次:
<%=currentPage%>/<%=rst.PageCount%>页
<%
Fori=1Torst.PageCount
'如果i等于当前页号,则以红色文本显示i的值
Ifi=CInt(currentPage)Then
%>
[
<%
'如果i不等于当前页号,则以超链接形式显示i的值
Else
%>
[ currentPage=<%=i%>"><%=i%>] <% EndIf Next %>
7.1.4发表主题
文件newTheme.asp给出了发表讨论主题时所用到的表单,如图7.2所示。
在查看讨论主题页面(forum.asp)中单击“发表新帖”链接可以进入该页面。
访问者可以在这里输入作者姓名、要发起讨论的主题和内容,并选择自己所喜欢的头像,然后通过单击提交按钮将这些信息提交给文件saveTheme.asp进行处理。
------------newTheme.asp------------
<%@LANGUAGE="VBScript"%>
<%
Dimfso,fld,f,i
Setfso=Server.CreateObject("Scripting.FileSystemObject")
Setfld=fso.GetFolder(Server.MapPath("./Images"))
i=1
%>
TABLE,INPUT,TEXTAREA{FONT-SIZE:
9pt}
VALUE=<%=Request.Form("txtAuthor")%>>
VALUE=<%=Request.Form("txtTheme")%>>
<%ForEachfInfld.Files%>
<%Ifi=1ThenResponse.WriteSpace
(1)&"CHECKED"%>>
<%
i=i+1
Next
%>
<%=Request.Form("txtContent")%>
7.1.5保存主题
访问者发起的讨论主题及其相关信息将提交给saveTheme文件进行处理。
在该文件中,首先检查“作者”、“主题”和“内容”的值,如果其中有任何一个为空字符串,则重新定向到发起讨论主题页面。
如果这些值都不是空字符串,则连接到数据库,并将该讨论主题及其相关信息保存到articels表中。
保存数据后,可以单击链接返回论坛首页,如图7.3所示。
------------saveTheme.asp------------
<%@LANGUAGE="VBScript"%>
<%
Dimauthor,ip_addr,theme,pic_path,content
author=Trim(Request.Form("txtAuthor"))
ip_addr=Request.ServerVariables("REMOTE_ADDR")
theme=Trim(Request.Form("txtTheme"))
pic_path=Request.Form("optPic")
content=Trim(Request("txtContent"))
Ifauthor=""Ortheme=""Orcontent=""Then
Server.Transfer"newTheme.asp"
EndIf
%>
--#includevirtual="/adovbs.inc"-->
<%
Dimid,cnn,rst,sSQL
Setcnn=Server.CreateObject("ADODB.Connection")
cnn.ConnectionString="PROVIDER=SQLOLEDB;DATASOURCE=Abc;"&_
"UID=sa;PWD=123;DATABASE=test"
cnn.Open
sSQL="INSERTarticles(author,ip_addr,theme,pic_path,content,_
view_times,reply_times)"
sSQL=sSQL&"VALUES('"&author&"','"&ip_addr&"','"
sSQL=sSQL&theme&"','"&"Images/"&pic_path&"','"&_
content&"',0,0)"
cnn.ExecutesSQL,,adCmdText
%>
讨论主题保存成功!
【
7.1.6回复主题
为了便于访问者参加针对每个主题的讨论,主题列表中的每个主题均采取超链接形式,单击某个主题,即可查看关于该主题的讨论内容(包括原创帖子和回复帖子),此时可以针对该主题发表自己的意见,也可以通过单击相应的链接来发起新的讨论主题或者返回论坛首页。
当输入作者、主题和内容后,可以通过单击“提交”按钮将回复信息发送给Web服务器进行处理,如图7.4所示。
------------replyTheme.asp------------
<%@LANGUAGE="VBScript"%>
TABLE,INPUT,TEXTAREA{FONT-SIZE:
9pt}
【
【
--#includevirtual="/adovbs.inc"-->
<%
Dimcnn,rstArt,rstRe,sSQL,fso,fld,f,id,i
Setcnn=Server.CreateObject("ADODB.Connection")
SetrstArt=Server.CreateObject("ADODB.Recordset")
SetrstRe=Server.CreateObject("ADODB.Recordset")
Setfso=Server.CreateObject("Scripting.FileSystemObject")
Setfld=fso.GetFolder(Server.MapPath("./Images"))
id=Request.QueryString("id")
cnn.ConnectionString="PROVIDER=SQLOLEDB;DATASOURCE=Abc;"&_
"UID=sa;PWD=123;DATABASE=test"
'打开到test数据库的连接
cnn.Open
'在所选主题的浏览次数上加1
sSQL="UPDATEarticlesSETview_times=view_times+1WHEREart_id="&id
cnn.ExecutesSQL,,adCmdText
'创建原创帖子的记录集
sSQL="SELECT*FROMarticlesWHEREart_id="&id
SetrstArt=cnn.Execute(sSQL,,adCmdText)
'创建回复帖子的记录集
sSQL="SELECT*FROMrepliesWHEREart_id="&id&_
"ORDERBYreply_timeDESC"
SetrstRe=cnn.Execute(sSQL,,adCmdText)
%>
<%=rstArt("author")%> IP: <%=rstArt("ip_addr")%> | <%=rstArt("theme")%> <%=rstArt("content")%> |
当前没有回复!
<%
Else
WhileNotrstRe.EOF
%>
<%=rstRe("author")%>
IP:
<%=rstRe("ip_addr")%>
<%=rstRe("theme")%>
回复于<%=rstRe("reply_time")%>
<%=rstRe("content")%>
<%
Wend
EndIf
%>
VALUE=<%=Request.Form("txtAuthor")%>>
VALUE=<%=Request.Form("txtTheme")%>>
<%ForEachfInfld.Files%>
<%Ifi=1ThenResponse.WriteSpace
(1)&"CHECKED"%>>
<%
i=i+1
Next
%>
<%=Request.Form("txtContent")%>
7.1.7保存回复
针对某个主题的回复被提交给saveReply.asp文件进行处理。
在该文件中,首先检查“作者”、“主题”或“内容”是否为空字符串,若是则重定向到回复主题的页面,若不是则对所提交的数据进行处理。
数据处理的内容包括两方面:
一方面通过更新articles表中的reply_times列使当前主题的浏览次数加1;另一方面将回复者的姓名、IP地址、回复的主题和内容等保存到replies表中。
完成数据处理后,单击页面上的超链接可以返回论坛首页,如图7.5所示。
------------saveReply.asp------------
<%@LANGUAGE="VBScript"%>
<%
Dimauthor,ip_addr,theme,pic_path,content,id
Dimcnn,sSQL
author=Trim(Request.Form("txtAuthor"))
ip_addr=Request.ServerVariables("REMOTE_ADDR")
theme=Trim(Request.Form("txtTheme"))
pic_path=Request.Form("optPic")
content=Trim(Request.Form("txtContent"))
id=Request.Form("id")
'若“作者”、“主题”或“内容”为空字符串,则转移到回复主题页面
Ifauthor=""Ortheme=""Orcontent=""Then
Server.Transfer"replyTheme.asp"
EndIf
%>
--#includevirtual="/adovbs.inc"-->
<%
Setcnn=Server.CreateObject("ADODB.Connection")
cnn.ConnectionString="PROVIDER=SQLOLEDB;DATASOURCE=Abc;"&_
"UID=sa;PWD=123;DATABASE=test"
cnn.Open
'使当前主题的回复次数加1
sSQL="UPDATEarticlesSETreply_times=reply_times+1"&_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP 动态 网页 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)