发表帖子是该论坛的基本功能之一。发表帖子的页面如图8-6所示。该页面只是一个纯HTML页面,但在用户填写帖子单击“发表”按钮时,对3个必须要填写的字段进行一定的检查,要求数据不能为空;否则要求用户重新填写。
图8-6 发表帖子程序noteadd.htm的运行结果
发表帖子程序noteadd.htm 的代码如下:
〈SCRIPT IANGUAGE=VBScript〉
〈!--
Sub tijiao-onclick()
msgstr=″″
userid=trim(mynote.userid.value)
subject=trim(mynote.subject.value)
content=trim(mynote.content.value)
If userid=″″Then
msgstr=msgstr &″请输入您的姓名!″
End If
If subject=″″Then
msgstr=msgstr & ″请为您的帖子加上标题!″
End If
If content=″″Then
msgstr=msgstr &″请为您的帖子加上内容!″
End If
If msgstr〈〉″″Then
alert msgstr
exit sub
Else
mynote.submit
End If
End Sub
--〉
〈/SCRIPT〉
〈HTML〉
〈HEAD〉
〈TITLE〉发表新帖子〈/TITLE〉
〈META http-equiv=″Content-Type″content=″text/html;charset=gb2312″〉
〈STYLE〉
〈!--
.classl{font:l0pt:color:#9900CC;}
.class2{font:llpt;)
input{font:10pt:background-color:#eeeeee;border-style:solid;border-color:
#6666cc;border-width:1;}
--〉
〈/STYLE〉
〈/HEAD〉
〈BODY bgcolor=″#FFFFFF″style=″FONT:10pt″〉
〈FORM method=″post″action=″noteadd.asp″name=″mynote″〉
〈TABLEwidth=380border=0align=″center″cellspacing=″0″bgcolor=″#b0cfef″〉
〈TR〉
〈TD colspan=″2″align=″center″bgcolor=″#D8F3FE″〉〈B〉发表主题〈/B〉〈/TD〉
〈/TR〉
〈TR〉
〈TD width=″99″align=right bgcolor=″#ffffff″〉〈FONT class=classl〉作者
〈/FONT〉〈/TD〉
〈TD width=″330″align=left bgcolor=″#ffffff″〉
〈INPUT type=text size=24 name=″userid″〉〈/TD〉
〈/TR〉
〈TR〉
〈TD align=right bgcolor=″#ffffff″〉〈FONT class=classl〉email〈/FONT〉〈/TD〉
〈TDalign=leftbgcolor=″#ffffff″〉〈INPUT type=text size=24name=″email″〉〈/TD〉
〈/TR〉
〈TR〉
〈TD align=right bgcolor=″#ffffff″〉〈FONT class=classl〉主题〈/FONT〉〈/TD〉
〈TD align=left bgcolor=″#ffffff″〉〈INPUT type=text size=24 name=″subject″〉
〈/TD〉
〈/TR〉
〈TR〉
〈TD align=right bgcolor=″#ffffff″〉〈FONT class=classl〉内容〈/FONT〉〈/TD〉(www.xing528.com)
〈TD align=left bgcolor=″#ffffff″〉
〈TEXTAREA name=″content″cols=″31″rows=″4″〉〈/TEXTAREA〉
〈/TD〉
〈/TR〉
〈tr〉
〈TD colspan=″2″align=″center″〉
〈INPUT type=button name=″tijiao″value=″发表″〉
〈INPUT type=reset name=″reset″value=″重写″〉
〈/TD〉
〈/TR〉
〈/TABLE〉
〈/FORM〉
〈/BODY〉
〈/HTML〉
程序中采取如下的编号方案:对原文采取顺序编号方案,即从n00001开始,顺序编号;对于回复文章首先在其原文编号的基础上生成回复文章的编号。例如对n00001号帖子的第篇回复文章的编号就是n00001-001,对于该原文的其他回复文章按照这个规则顺序编号。
如果用户的输入通过了该脚本程序的检验,则将各数据送交noteadd.asp处理。
noteadd.asp的代码如下:
〈!--#Include file=″config.inc″--〉
〈%
Set conn=Server.createobject(″adodb.connection″)
Conn.open connstring
Set objnoters=Server.createobject(″adodb.recordset″)
Set objnoters2=Server.createobject(″adodb.recordset″)
ssql=″select max(noteid)as maxid from notetable″
ssgl2=″select*from notetable″
userid=trim(request.form(″userid″))
email=trim(request.form(″email″))
content=trim(request.form(″content″))
subject=trim(left(request.form(″subject″),17))
Application.Lock
Objnoters.open ssgl,conn,1,3
If Objnoters.eof or isnull(Objnoters(″maxid″))Then
noteid=″n00001″
Else
temp=left(Objnoters(″maxid″),6)
temp=right(temp,5)
temp=cint(temp) ′取得当前数据表中编号最大的原文帖子
temp=cstr(temp+l)
For length=l to 5-len(temp) ′帖子的编码位数是5位
temp=″0″&temp
Next
noteid=″n″&temp ′完成对这次帖子序号的计算
End If
notetime=now() ′取得当前时间作为发帖时间
′插入数据库
insertstr=″insert into notetable values(′″¬eid&″′,′″&subject&″′,′″&userid&″′,′″¬etime&″′,′″&content&″′,0,′″&email&″′,0);″
Objnoters2.open insertstr,conn,1,3
Application.Unlock
′关闭这次数据库连接
Objnoters.close
Set Objnoters=nothing
Conn.close
Set conn=nothing
%〉
〈HTML〉
〈HEAD〉〈TITLE〉发帖成功〈/TITLE〉〈/HEAD〉〈BODY〉
〈FONT style=″font:l0pt″color=#9900CC〉发贴成功,〈A href=″vbscript:window.close()″〉
it继续〈/A〉〈/FONT〉
〈/BODY〉
〈/HTML〉
noteadd.asp运行结果如图8-7所示。
图8-7 noteadd.asp程序运行结果
程序的基本原理:首先用一系列的参数接收发表帖子页面的表单传递的信息;然后根据数据库中的已有信息计算这次帖子的帖子编号,获取系统时间作为发表时间,最后将这一系列的参数值插入到数据库中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。