用户在帖子回复表单中填写了自己的姓名、信箱及详细回复内容后,再通过一些脚本的验证,就可以完成对帖子的回复。
回复帖子的主题根据回复的对象,在对象主题之前加上re:组合而成。在填写完回复信息之后,将所有信息通过参数传递给帖子回复处理程序backinsert.asp。作为帖子回复的主题,它是在noteback.asp中生成的,并且为了规范起见,同样将主题的长度限制在17个字符之下。同添加新帖子一样,回复的数据也必须按照数据库设置的要求,在处理之前进行一定的检验工作。具体的noteback.asp的程序如下:
〈SCRIPTLANGUAGE=VBScript〉
〈!--
Sub tijiao_OnClick ()
Dim msgstr
Dim userid
Dim email
Dim subject
msgstr=″″
userid=trim(noteback.userid.value)
email=trim(noteback.email .value)
subject=trim(noteback.subject .value)
If userid=″″Then
msgstr=msgstr & ″请输入您的姓名 !″
End If
If email=″″Then
msgstr=msgstr & ,请输入您的 Email !″
End If
If subject=″″Then
msgstr=msgstr & ″请为您的留言加上标题″
End If
If msgstr〈〉″″Then
alert msgstr
exit sub
Else
noteback.submit ()
End If
End Sub
- - 〉
〈/SCRIPT〉
〈%
noteid=Request .querystring (″noteid″)
subject=left (″re :″ & Request .querystring (″subject ″),15)
′Response .write subject
%〉
〈HTML〉
〈HEAD〉
〈TITLE〉回复留言〈/TITLE〉
〈META http-equiv=″Content-Type″content=″text/html ;charset=gb2312″〉
〈STYLE〉
〈!- -
.classl {font :l0pt ;color :#99000C;}
.class2{font :llpt ;}
.class3{background-color :#eeeeee;border-style :solid;border-color :#6666cc :border-width :l;}
- - 〉
〈/STYLE〉
〈/HEAD〉
〈BODY bgcolor=″#FFFFFF″style=″font :l0pt″topmargin=8〉
〈DIV id=″floater″align=″center″style=″left :l5px;top:2px;width:280;font :l0pt″〉
〈TABLE width=360 border=0 cellspacing=″1″bgcolor=″#b0cfef″〉
〈TR〉
〈TD align=center bgcolor=″#D8F3FE″〉
〈B〉〈font color=#669900 class=class2〉回复主题〈/FONT〉〈/B〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD align=center bgcolor=″#ffffff″〉
〈FORM action=″backinsert .asp″ method=″post″ name=″noteback″〉
〈INPUT type=hidden name=noteid value=〈%=noteid%〉〉
〈P align=″center″〉
〈FONT class=classl〉您的昵称〈/font〉 
〈INPUT name=″userid″size=″22″maxlength=20 class=class3〉〈BR〉
〈font class=classl〉您的信箱〈/FONT〉 
〈INPUT name=″email″size=″22″class=class3〉〈BR〉
〈FONT class=classl〉留言主题〈/font〉 
〈INPUT name=″subject″ size=″22″class=class3 value=〈%=subject%〉〉〈BR〉
〈FONT class=classl〉〈FONT color=#FFOOFF〉(*留言主题请 不要超过 17 个字*)〈/FONT〉
〈/FONT〉
〈BR〉〈FONT class=classl〉详细内容〈/FONT〉 〈BR〉
〈TEXTAREA name=″content″cols=″31″rows=″4″〉〈/TEXTAREA〉
〈P align=″center″〉〈A name=″tijiao″〉 〈FONT color=#7070ff class=classl style=″cursor :hand″〉完成 |〈/FONT〉〈/A〉
〈A href=″Java Script :document .forms [0 .reset ()″〉〈font color=#7070ff class=classl style=″text-decoration:none″〉重写 |〈/FONT〉〈/A〉
〈A href=″VBScript :window.close ()″〉〈font color=#7070ff class=classl style=″text-decoration:none″〉关闭  ; ;〈/FONT〉〈/A〉(www.xing528.com)
〈/FORM〉
〈/TD〉〈/TR〉
〈/TABLE〉
〈/DIV〉
〈/BODY〉
〈/HTML〉
回复帖子noteback.asp程序运行结果如图8-9所示。
图8-9回复帖子noteback.asp程序运行结果
如果用户的回复信息完全规范并且通过了脚本程序的检验,这些数据被传递到backinsert.asp,并把这些回复性数据插入到数据库中。
插入的程序很简单,重要的就是如何计算回复的文章的编号。首先,判断所回复的原文编号,然后在数据库中找到当前已经存在的所有该原文的回文中编号最大的一个,并把这个最大的编号加1,作为此次回帖子的编号。具体的backinsert.asp程序如下:
〈!--#Includefile=″config.inc″--〉
〈%
回复留言
noteid=Request.form(″noteid″)
subject=trim(Request .form(″subject ″))
email=trim(Request .form(″email″))
userid=trim(Request .form(″userid″))
content=trim(left (request .form(″content″),17))
notetime=now()
readnum=0
status=-1
Set conn=Server .createobject (″adodb .connection″)
Conn.open connstring
Set Objnoters=Server .createobject (″adodb .recordset″)
Set Objnoters2=Server .createobject (″adodb .recordset″)
Ssqll=″select * from notetable″
Application.lock
′计算机回复留言的编号表达式
noteid=left (noteid,6)
ssq12=″select * from notetable where noteid like ′″& noteid & ″%′″Objnoters2.open ssg12,conn,1,3
If objnoters2.eof Then
Response.write ″您正在回复的帖子已被 除,请〈A href=″″vbscriptwindow.close ()″″〉返回〈/A〉″
Response .end
End If
Objnoters2.movelast
If len (objnoters2 (″noteid″))=6 Then
noteid=objnoters2 (″noteid″)&″-001″
Else
temp=cint (right (objnoters2 (″noteid″),3))
temp=cstr (temp+l)
For length=l to 3-len (temp)
temp=″0″&temp
Next
noteid=left (objnoters2 (″noteid″),7)&temp
End If
Objnoters2.close
Set Objnoters2=nothing
Objnoters .open ssqll,conn,1,3
Objnoters .addnew
Objnoters (″noteid″)=noteid
Objnoters (″subject″)=subject
Objnoters (″userid″)=userid
Objnoters (″email″)=email
Objnoters (″notetime″)=notetime
Objnoters (″content″)=content
Objnoters (″readnum″)=readnum
Objnoters (″status″)=status
Objnoters .update
Application.Unlock
′关闭数据库连接
Conn.close
Set conn=nothing
Set Objnoters=nothing
%〉
〈HTML〉
〈HEAD〉〈TITLE〉回复成功〈/TITLE〉〈/HEAD〉〈BODY〉
〈FONT style=″font :10pt″〉回复成功 ,请〈A href=″vbscript :window.close ()″〉返 回〈/A〉
〈/FONT〉
〈/BODY〉
〈/HTML〉
backinsert.asp 运 行 结果如 图 8-10 所 示 。
图8-10backinsert.asp运行结果
至此,该论坛的程序编制工作全部完成的。本节介绍的论坛比较简单,只是给大家一个基本的轮廓,有兴趣的同学可以在此基础上实现更多的功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。