以文本方式查看主题

-  康柏仕电脑学院  (http://combss.com/bbs/index.asp)
--  Dreamweaver网站设计交流区  (http://combss.com/bbs/list.asp?boardid=48)
----  [教程]自己一步一步写论坛《ASP》教程- -~[完结,有实例](转)  (http://combss.com/bbs/dispbbs.asp?boardid=48&id=753)

--  作者:轻轻风聆
--  发布时间:2007/8/24 9:07:32
--  自己一步一步写论坛《ASP》教程- -~[完结,有实例](转)
注意:

BUG还是有的,美化还没有,只要想提高ASP水平的人就可以来看下!

附件1里有#KEY.DB和#M.DB ,但是实际我把他们合并到一个DB里了,所以某些时候写的是#KEY.DB,有时候写M.DB,
M.DB里的只要是贴表,MAIN,而KEY里是UDB用户表!

XEDIT是拣的,能用就行~

开发环境:

Netbox + access + asp

一:准备工作
1.数据库:#key和#m,其实可以合在一起的- -~当时没想那么多就分了两个了!
见附件1里的DATA文件夹,需要OFFICE XP以上级别的 access 才能打开- -~

2.ASP服务器,附件1里有个叫ASP.EXE,这个是NETBOX编写的ASP服务器。
释放附件1里的所有东西到一个位置。注意有IIS的,请自己配置在IIS下虚拟目录,如果用ASP服务器的话会造成端口冲突。

二:[用户管理]
1.登陆
新建网页文件:default.asp或index.htm
内容如下

<form method="post" action="do.asp">
账号<input type="text" name="id" ><br>
密码<input type="password" name="pwd"><br>
<input type="submit" value="提交完成">
<input type="reset" value="我要重写">
</form>
如果要连接到注册网页文件的话,自己用

<A HREF ="register.htm">我要注册</a>
来实现。

2.注册
新建网页文件:register.htm[请和上文红字部分相应]
内容如下

<form method="post" action="do.asp">
用户名:<input type="text" name="id" maxlength=8 alt="最长8个字"><br>
密码 :<input type="password" name="pwd" maxlength=16 alt="最长16个字"><br>
头像地址:<input type="text" name="head"><br>
性别: <input type="radio" name="sex" value="1">男
<input type="radio" name="sex" value="2">女
<input type="radio" name="sex" value="0" checked>未知
<br>
当前位置:<input type="text" name="local"><br>
签名:
<textarea rows="4" cols="40" name="sign"></textarea><br>
<input type="submit" value="提交">
<input type="reset" value="重写">
</form>
3.登陆注册处理 [该部分有BUG,大家可以自己找出来,这样对往后我们继续学习做论坛有好处,其实很简单]
新建网页文件:do.asp[请和上文蓝字部分相应]

<%
session.timeout=5 '不动的话最多活5分钟,用于保持服务器性能
dbpath="data/#key.mdb"'数据库连接地址
Set conn=Server.CreateObject("adodb.connection")
db="provider = Microsoft.Jet.OLEDB.4.0;Data Source ="&server.mappath(dbpath)
conn.open db
set rs=server.CreateObject("adodb.recordset")

’以上为连接数据库必用
'由注册[register.htm]和登陆页面[index.htm]接受来的数据
session("d")=request.form("id")
session("P")=request.form("pwd")
session("i")=Request.ServerVariables("REMOTE_ADDR")
session("h")=request.form("head")
session("x")=request.form("sex")
session("l")=request.form("local")
session("s")=request.form("sign")
'重复ID查询
session("SQLpd") = "select uid,id,pwd from udb" '建立查询语句,关于表请自己看数据库,里面有备注
rs.open session("SQLpd"),conn,0,1 '打开并查询
rs.movefirst '移动到查询返回结果的第一行,查询结果包含在rs里面
session("Sqlt")=0 '设定默认值0,此为未注册模式
while not rs.eof '如果没到表尾就循环
if rs("id")=session("d") then
session("Sqlt")=1 '假如查到ID的给值1,表示有该ID存在
if session("Sqlt")=1 and rs("pwd")=session("p") then '该ID对应的密码和登陆密码是否比较对应
session("Sqlt")=2 '对应为登陆成功
response.cookies("key")("uid")=rs(0),'把ID写入COOKIES,这里的rs(0)和rs("ID")是一样效果,因为0列名是"ID"
end if
end if
rs.movenext '到一下条
wend
rs.close '关闭
'结果如下:
'session("Sqlt") 为0则不注册
'2为已注册帐号并且密码正确
'1为已注册帐号但密码不正确
'0为未注册帐号


select case session("Sqlt")
case 1
response.redirect "error.htm" '跳到出错提示页面
case 2
response.redirect "main.asp" '跳到主体页面
case 0
rs.open "udb",conn,2,3 '没注册就注册吧!
rs.addnew
rs(1).value=session("d")
rs(2).value=session("p")
rs(3).value=0
rs(4).value=session("h")
rs(5).value=session("x")
rs(6).value=date()
rs(7).value=date()
rs(8).value=session("i")
rs(9).value=session("l")
rs(10).value=session("s")
rs(10).value=12
'以下为#key数据库中的udb表的列名
'0:UID,1:ID,2:PWD,3:LEVEL,4:HEAD,5:SEX;6:RDATE,7:LDATE,8:IP,9:LOCAL,10:SIGN,11:integral
rs.update
response.cookies("key")("uid")=rs(0)
response.cookies("key")("id")=session("d")
response.cookies("key")("pwd")=session("p")
'顺便写入cookies
rs.close
response.redirect "main.asp" '跳到主体页面
end select
session.abandon
'强行释放
%>
4.出错页面error.htm

<table align="center">
<tr><td> 您的操作出错.......</tr>
<tr><td> 原因可能是以下几种:</tr>
<tr><td> 登陆时发生:账号或密码有错误</tr>
<tr><td> 注册时发生:账号已经被注册</tr>
<tr><td> 9秒后跳转到列表........</tr>
<tr><td>如果您的浏览器没有跳转,请点击这里<A href="index.htm">手动跳转</a></tr>
</table>
<script language=javascript>
setTimeout("location.replace('\')",5000)
</script>
5. 控制面版[只写了50%,既Read Only,修改部分参照注册会员那里]cp.asp

<%
codepage="936"
dbpath="data/#key.mdb"
Set conn=Server.CreateObject("adodb.connection")
db="provider = Microsoft.Jet.OLEDB.4.0;Data Source ="&server.mappath(dbpath)
conn.open db
set rs=server.CreateObject("adodb.recordset")
session("SQLpd") = "select uid,id,level,sex,rdate,ldate,local,sign,money from udb where id=1" 'request.cookies("key")("id")
session("SQLpd") = "select * from udb" + " where uid =" + request.cookies("key")("uid")
rs.open session("SQLpd"),conn,0,1
%>
<%
response.write rs("uid")
response.write rs("id")
response.write rs("level")
response.write "<img src=" & rs("head") & ">"
%>
<%
select case rs("sex")
case 0
session("X") ="妖"
case 1
session("X") ="男"
case 2
session("X") ="女"
end select
response.write session("X")
%>
<%
response.write rs("rdate")
response.write rs("ldate")
response.write rs("local")
response.write rs("sign")
response.write rs("money")
%>
<%
session.abandon
'强行释放
%>
修改部分:

rs.open "SQL语句",conn,2,3 '没注册就注册吧!
rs(1).value=session("d")
rs(2).value=session("p")
rs(3).value=0
rs(4).value=session("h")
rs(5).value=session("x")
rs(6).value=date()
rs(7).value=date()
rs(8).value=session("i")
rs(9).value=session("l")
rs(10).value=session("s")
rs(10).value=12
'以下为#key数据库中的udb表的列名
'0:UID,1:ID,2:PWD,3:LEVEL,4:HEAD,5:SEX;6:RDATE,7:LDATE,8:IP,9:LOCAL,10:SIGN,11:integral
rs.updatebatch '这句是更新数据库~
rs.close
好了,我们现在来写 主界面
三.主界面,

1.[main.asp]
代码:

<%
session.timeout=5
dbpath="data/#m.mdb"
Set conn=Server.CreateObject("adodb.connection")
db="provider = Microsoft.Jet.OLEDB.4.0;Data Source ="&server.mappath(dbpath)
conn.open db
set rs=server.CreateObject("adodb.recordset")
'主区:
session("SQLpd") = "select * from main where MListID=ListID and part=1 and YoN=1 ORDER BY ldatetime desc" '查询语句
rs.open session("SQLpd"),conn,0,1 '开始查询
response.write "<a href=view.asp?pr=1>主区</a>" &"<br>" & "<a href=view.asp?pr=1&ml=" & rs(0) & ">" & rs(3) & "</a>" &"<br>" '输出查询,以下雷同,因为我有3个区,分别是part = 1,2,3,既主区,水区,管理区
rs.close
%>
<br>
<%
'水区:
session("SQLpd") = "select * from main where MListID=ListID and part=2 and YoN=1 ORDER BY ldatetime desc"
rs.open session("SQLpd"),conn,0,1
response.write "<a href=view.asp?pr=2>水区</a>" &"<br>" & "<a href=view.asp?pr=2&ml=" & rs(0) & ">" & rs(3) & "</a>" &"<br>"
rs.close
%>
<br>
<%
'管理区:
session("SQLpd") = "select * from main where MListID=ListID and part=3 and YoN=1 ORDER BY ldatetime desc"
rs.open session("SQLpd"),conn,0,1
response.write "<a href=view.asp?pr=3>管理区</a>" &"<br>" & "<a href=view.asp?pr=3&ml=" & rs(0) & ">" & rs(3) & "</a>" &"<br>"
rs.close
session.abandon
'强行释放
%>
这个很简单吧,后面的也如此!

2.查看界面[view.asp]

<%
session.timeout=5
session("pr")=request.querystring("pr") '接受又MAIN来"区号"的数据
session("ml")=request.querystring("ml") '接受又MAIN来"楼号"的数据
dbpath="data/#m.mdb"
Set conn=Server.CreateObject("adodb.connection")
db="provider = Microsoft.Jet.OLEDB.4.0;Data Source ="&server.mappath(dbpath)
conn.open db
set rs=server.CreateObject("adodb.recordset")
if session("ml") = empty then 'ML为空就显示主题,ML(MLISTID)是主贴的LISTID,如果不是顶楼的贴的话,MLISTID是不等于LISTID的.
'主题列表
response.write "<a href=addedit.asp?ed=2&pr="& session("pr") &">添加新贴</a><br>" '注意session("pr") 表示区,新贴发在那个区
'->view.asp?pr=1&ed=2
session("SQLpd") = "select * from main where MListID=ListID and part="+ cstr(session("pr"))+" and YoN=1 ORDER BY ldatetime desc" '查询主题语句
rs.open session("SQLpd"),conn,0,1
rs.Movefirst '转到查询结果的第一行
while not rs.eof '不是尾就循环
response.write "<a href=view.asp?pr=" & session("pr") &"&ml=" & rs(0) & ">" & rs(3) & "</a>" &"<br>" &"UID:"& rs(6) &"<br>"& rs(9) &"<br>" &rs(4)&"<P>" '输出
'rs0=[listid],rs1=[mainid],rs2=[part],rs3=[main],rs4=[fdatetime],rs5=[ldatetime],rs6=[uid],rs7=[yy],rs8=[yon],rs9=[id]
rs.movenext '转到下一行
wend
rs.close

else '如果ML不为空既代表指向某贴
'主题内容
session("SQLpd") = "select * from main where mListID=" & session("ml") & "and part=" &session("pr") & "and YoN=1 ORDER BY ListID" '查询主题语句
rs.open session("SQLpd"),conn,0,1
rs.movefirst '以下雷同
while not rs.eof
session("X")=session("X")+1
response.write rs(3) & "<br>UID:"& rs(6) &"<br>"& rs(9) &"["& session("X") &"楼"&"#"&rs(0)& "#"&rs(1)&"#]<br>发帖时间"
response.write rs(5)&"<br>"&"内容:" & rs(7) &"<br><right>"&"最后修改时间:"&rs(5) &"<br>"
response.write "<a href =addedit.asp?pr=" & rs(2) & "&ed=1&ld="&rs(0) &">编辑"& "</a><p>"
'->view.asp?pr=1&ed=1&ld=1
'view->?===>pr[分区],ml=[主贴ID],
'rs0=[listid],rs1=[mainid],rs2=[part],rs3=[main],rs4=[fdatetime],rs5=[ldatetime],rs6=[uid],rs7=[yy],rs8=[yon],rs9=[id]
session("pr")=rs(2)
session("ml")=rs(1)
rs.movenext
wend
rs.close '以上雷同

response.write "<a href=addedit.asp?pr=" & session("pr") & "&ed=0&ml="& session("ml") &">新回复"& "</a><p>"
'->view.asp?pr=1&ed=0&ml=1
%> '以下用于快速回复
<form method="post" action="edo.asp">
<div style="display:none">
<input type="radio" name="ed" value="3" checked>
<!--回复,修改,新贴,快速回复的标志是 "ed",其分别为0,1,2,3-->
<input type="radio" name="pr" value=<%=session("pr")%> checked>
<input type="radio" name="ml" value=<%=session("ml")%> checked>
<input type="radio" name="uid" value=<%=request.cookies("key")("uid")%> checked>
<input type="radio" name="id" value=<%=request.cookies("key")("id")%> checked>
</div>
<textarea rows="3" cols=50 name="YY"></textarea>
</textarea>
<br>
<input type="submit" value="快速回复">
</form>
<%
end if
session.abandon
'强行释放
%>
这样就完成了,接着我们来写 ADDEDIT.ASP
3.编辑界面:
[addedit.asp]
首先这里我们要调用外部程序 XEDIT,它是一个[JS]编辑工具!
他的主要内容如下:

<form method="post" action="edo.asp">
标题:<input type="text" name="main" maxlength=49 size=50><br>
<div id="YY"></div>
<script type="text/javascript">
function init() {
et = new word("YY","", 0);
}
if(window.Event) {
window.onload = init;
} else {
init();
}
</script>
<input type="submit" value="提交" >
</form>
以上代码提交EDO.ASP2个值,MAIN和YY,分别是标题和内容!

继续,我们现在写代码:


<%
session.timeout=5
session("uid")=request.cookies("key")("uid")
session("id")=request.cookies("key")("id")
session("pwd")=request.cookies("key")("pwd")
session("ed")=0
session("ed")=request.querystring("ed")'是否是新回复
session("pr")=request.querystring("pr")'分区
session("ld")=request.querystring("ld")'主ID
session("ml")=request.querystring("ml")'主题ID

%> '以上收数据
<%
'测试用,不写也可以的!
response.write session("uid") &"--uid<br>"
response.write session("id") &"-- id<br>"
response.write session("pwd") &"--pwd<br>"
response.write session("ed") &"-- ed<br>"
response.write session("pr") &"-- pr<br>"
response.write session("ld") &"-- ld<br>"
response.write session("ml") &"-- ml<br>"
%>

<!--'新回复 -->
<% if session("ed")=0 and session("pr")<>empty and session("ml")<>empty then %>


<!--
'新回复需要的参数有:ed,pr,ml,必要参数有:uid,id,输出参数MAIN,YY,最后所有参数要提交给edo.asp
大家看想一下,回复只需要识辨操作[回复]ED=0,区的位置[PRAT]pr=?,以及主贴ID[MLISTID]ML就可以了
-->

<form method="post" action="edo.asp">
标题:<input type="text" name="main" maxlength=49 size=50><br>
<div id="YY"></div>
<script type="text/javascript">
function init() {
et = new word("YY","", 0);
}
if(window.Event) {
window.onload = init;
} else {
init();
}
</script>
<div style="display:none">
<input type="radio" name="ed" value="0" checked>
<input type="radio" name="pr" value=<%=session("pr")%> checked>
<input type="radio" name="ml" value=<%=session("ml")%> checked>
<input type="radio" name="uid" value=<%=session("uid")%> checked>
<input type="radio" name="id" value=<%=session("id")%> checked>
<!-- 数据:ed=0,pr,ml,uid,id,main,YY -->
</div>
<input type="submit" value="提交" >
</form>
<%
end if
%>



<!--'修改主题或回复-->
<%
if session("ed")=1 and session("pr")<>empty and session("ld")<>empty then

dbpath="data/#key.mdb"
Set conn=Server.CreateObject("adodb.connection")
db="provider = Microsoft.Jet.OLEDB.4.0;Data Source ="&server.mappath(dbpath)
conn.open db
set rs=server.CreateObject("adodb.recordset")
session("SQLpd") = "select * from main where part="+cstr(session("pr"))+" and listid="+cstr(session("ld")) '要把要修改的贴找出来
rs.open session("SQLpd"),conn,0,1
%>




<!--
修改主题或回复需要的参数有:ed,pr,ld,必要参数有:uid,id,输出参数MAIN,YY,最后所有参数要提交给edo.asp
大家看想一下,回复只需要识辨操作[回复]ED=0,区的位置[PRAT]pr=?,以及主贴ID[LISTID]LD就可以了,修改是针对某个贴的,所以是LISTID

如果是针对某一个主题的,请用ML[MLISTID]
-->


<form method="post" action="edo.asp">
标题:<input type="text" name="main" maxlength=49 size=50 value=<%= rs(3) %> ><br>
<div id="YY"></div>
<script type="text/javascript">
function init() {
et = new word('YY',<%= "'"+rs(7)+"'" %>, 0);
}
if(window.Event) {
window.onload = init;
} else {
init();
}
</script>
<div style="display:none">
<input type="radio" name="ed" value="1" checked>
<input type="radio" name="pr" value=<%=session("pr")%> checked>
<input type="radio" name="ld" value=<%=session("ld")%> checked>
<input type="radio" name="uid" value=<%=session("uid")%> checked>
<input type="radio" name="id" value=<%=session("id")%> checked>
<!-- 数据:ed=1,pr,ld,uid,id,main,YY -->
</div>
<input type="submit" value="提交" >
</form>
<%
rs.close
end if
%>






<!--添加新主题-->
<% if session("ed")=2 and session("pr")<>empty then %>
<form method="post" action="edo.asp">

<!--
新主题需要的参数有:ed,pr,必要参数有:uid,id,输出参数MAIN,YY,最后所有参数要提交给edo.asp

大家看想一下,回复只需要识辨操作[回复]ED=0,区的位置[PRAT]pr=?就可以了


但是新主题和新回复有一个区别:

新主题必须是 只要 分区PR,并且要LISTID=MLISTID的!表示主题ID[MLISTID]为ID[LISTID]的子项!.[也可以说是自己的子项]

新回复必须 要有 分区PR和主题ID ML,而且是LISTID不等于MLISTID,他的MLISTID表示他是 ID[LISTID]的贴 的子项!
-->



标题:<input type="text" name="main" maxlength=49 size=50 ><br>
<div id="YY"></div>
<script type="text/javascript">
function init() {
et = new word("YY"," ", 0);
}
if(window.Event) {
window.onload = init;
} else {
init();
}
</script>
<div style="display:none">
<input type="radio" name="ed" value="2" checked>
<input type="radio" name="pr" value=<%=session("pr")%> checked>
<input type="radio" name="uid" value=<%=session("uid")%> checked>
<input type="radio" name="id" value=<%=session("id")%> checked>

<!-- 数据:ed=2,pr,uid,id,main,YY -->
</div>
<input type="submit" value="提交" >
</form>
<% end if %>

<% session.abandon %>


4.编辑处理界面
edo.asp
看了addedit.asp我们现在知道EDO.ASP应该怎么写了,按ED来分4个写!

<%
session.timeout=5
session("ed")=request.form("ed")'是否是新回复
session("pr")=request.form("pr")'分区
session("ld")=request.form("ld")'主ID
session("ml")=request.form("ml")'主题ID
session("YY")=request.form("yy")'内容
session("uid")=request.form("uid")'UID
session("id")=request.form("id")'ID
session("main")=request.form("main")'主题
session("pwd")=request.cookies("key")("pwd")
'response.write "YY:"&session("YY") &"main:"& session("main")&"ed:"& session("ed")'测试用
'以上接受数据,没问题



'用户检测
dbpath="data/#m.mdb"
Set conn=Server.CreateObject("adodb.connection")
db="provider = Microsoft.Jet.OLEDB.4.0;Data Source ="&server.mappath(dbpath)
conn.open db
set rs=server.CreateObject("adodb.recordset")
session("SQLpd") = "select * from udb"
rs.open session("SQLpd"),conn,0,1
rs.movefirst
session("Sqlt")=1 '识别代码,为1表示未知
while not rs.eof '循环查询
if rs("id")=session("id") and rs("pwd")=session("pwd") then '是否有这个人,密码对不对
session("Sqlt")=2 '识别代码,为2表示有这人,密码对
session("id")=rs("id")
if rs("level")=1 or rs("level")=2 then session("MM")=1 '用户管理级别是1[斑竹]/2[管理员]的,特别识别代码=1
end if
rs.movenext
wend
rs.close
response.write session("MM")
%>


<% if session("Sqlt")=1 then response.redirect "error.htm" %>
<!--识别代码 SQLT=1的不允许执行代码-->


<!--编辑 -->
<%
if session("Sqlt")=2 and session("ed")=1 and session("pr")<>empty and session("ld")<>empty then
session("SQLpd") = "select * from main where listid=" + cstr(session("ld"))
rs.open session("SQLpd"),conn,2,3 '查讯
if cstr(rs(6))=cstr(session("uid")) or session("MM")=1 then '只有发贴本人和有特别识别的人[斑竹/管理员]可以修改
rs(3).value=session("main")
rs(5).value=date()
rs(7).value=session("YY")+"<br><font color=#ff0000>"+"最后编辑于"+cstr(now)+"</font>"
'rs0=[listid],rs1=[mainid],rs2=[part],rs3=[main],rs4=[fdatetime],rs5=[ldatetime],rs6=[uid],rs7=[yy],rs8=[yon],rs9=[id]
rs.updatebatch '更新
end if
rs.close
response.redirect "main.asp"
end if
%>


<!--新回复 -->
<%
if session("Sqlt")=2 and session("ed")=0 and session("pr")<>empty and session("ml")<>empty then
rs.open "main",conn,2,3
rs.addnew '新加回复
rs(1).value=session("ml") '要指定主题ID ML
rs(2).value=session("pr")
rs(3).value=session("main")
rs(4).value=date()
rs(5).value=date()
rs(6).value=session("uid")
rs(7).value=session("YY")
rs(8).value=1
rs(9).value=session("id")
'rs0=[listid],rs1=[mainid],rs2=[part],rs3=[main],rs4=[fdatetime],rs5=[ldatetime],rs6=[uid],rs7=[yy],rs8=[yon],rs9=[id]
rs.update '更新
rs.close
response.redirect "main.asp"
end if
%>


<!--新贴 -->
<%
if session("Sqlt")=2 and session("ed")=2 and session("pr")<>empty then
session("mc") = session("ml")+"19861230"+session("uid") '这个为查询做识别
rs.open "main",conn,2,3
rs.addnew
rs(1).value=session("mc")
rs(2).value=session("pr")
rs(3).value=session("main")
rs(4).value=date()
rs(5).value=date()
rs(6).value=session("uid")
rs(7).value=session("YY")
rs(8).value=0
rs(9).value=session("id")
'rs0=[listid],rs1=[mainid],rs2=[part],rs3=[main],rs4=[fdatetime],rs5=[ldatetime],rs6=[uid],rs7=[yy],rs8=[yon],rs9=[id]
rs.update
rs.close
'以上大部分和新回复相同

session("Sqlpd")="select * from main where mlistid="+ cstr(session("mc"))+"and yon=0" '查询ML=MC[紫字]贴
rs.open session("Sqlpd"),conn,2,3
rs(1).value=rs(0).value '把MLISTID 改和LISTID一样的!,因为LISTID是序列生成,我们不知道它实际多少,只能让他生成之后再说!
rs(8).value=1
rs.updatebatch '完成
rs.close
response.redirect "main.asp"
end if
%>



<!--快速回复 -->
<%
if session("Sqlt")=2 and session("ed")=3 and session("pr")<>empty and session("ml")<>empty then
rs.open "main",conn,2,3
rs.addnew
rs(1).value=session("ml")
rs(2).value=session("pr")
rs(3).value=session("main")
rs(4).value=date()
rs(5).value=date()
rs(6).value=session("uid")
rs(7).value=session("YY")
rs(8).value=1
rs(9).value=session("id")
'rs0=[listid],rs1=[mainid],rs2=[part],rs3=[main],rs4=[fdatetime],rs5=[ldatetime],rs6=[uid],rs7=[yy],rs8=[yon],rs9=[id]
rs.update
'和新回复没有差别吧!
rs.close
response.redirect "main.asp"
end if
%>

<%
session.abandon
'强行释放
%>
到这里我们就讲完了谢谢大家的支持!最后送大家2件宝贝!
管理界面和管理处理
管理界面!

<form method="post" action="xasql.asp">
要处理的主题的MID:
<input type="text" name="TSQL-ID" maxlength=72>
<br>
<input type="radio" name="dosql" value="1" >禁止
<input type="radio" name="dosql" value="2" checked>开放
<input type="radio" name="dosql" value="3" >删除
<br>
处理语句:<br>
<input type="text" name="TSQL1" maxlength=120 size=130><br>
<input type="submit" value="提交"><input type="reset" value="重置">
<div style="display:none">
<input type="radio" name="SQLX" value="2" checked>
</div>
</form>
然后是管理处理

<div class=msgbody><div class=msgheader>QUOTE:</div><div class=msgborder>session.timeout=5
session("X")=request.form("SQLX")
session("A")=request.form("TSQL-ID")
session("B")=request.form("dosql")
session("x1")=request.form("TSQL1")
session("x2")=request.form("TSQL2")
session("x3")=request.form("TSQL3")
session("x4")=request.form("TSQL4")
session("x5")=request.form("TSQL5")
dbpath="data/#key.mdb"
Set conn=Server.CreateObject("adodb.connection")
db="provider = Microsoft.Jet.OLEDB.4.0;Data Source ="&server.mappath(dbpath)
conn.open db
set rs=server.CreateObject("adodb.recordset")
if session("A")<>empty then
if session("X")=1 or session("X")=2 then
session("SQLpd") = "select * from main where mlistid=" + cstr(session("A"))
rs.open session("SQLpd"),conn,2,3
rs.movefirst
select case session("B")
case 1
response.write "已禁止以下帖子" &"<br>"
while not rs.eof
rs(8).value=0
response.write "listid: #" & rs(0) & "# mlistid:#" & rs(1) & "# 标题:《" & rs(3) &"》<br>"
rs.movenext
wend
case 2
response.write "已打开以下帖子" &"<br>"
while not rs.eof
rs(8).value=1
response.write "listid: #" & rs(0) & "# mlistid:#" & rs(1) & "# 标题:《" & rs(3) &"》<br>"
rs.movenext
wend
case 3
response.write "已删除以下帖子" &"<br>"
while not rs.eof
response.write "listid: #" & rs(0) & "# mlistid:#" & rs(1) & "# 标题:《" & rs(3) &"》<br>"
rs.delete
rs.movenext
wend
end select
rs.updatebatch
rs.close
end if
end if
if session("x1")<>empty then
session("SQLpd") = session("x1")
rs.open session("SQLpd"),conn,2,3
%>
<table border="1">
<tr height=30>
<%
for i =0 to rs.fields.count-1
rs.movefirst
response.write "<td>"&rs(i).name
next
response.write "</tr>"
while not rs.eof
row = "<tr height=30>"
for i=0 to rs.fields.count-1
row = row&"<td>"&rs(i)
next
response.write row&"</tr>"
rs.movenext
wend
rs.close
end if
%>
</table>


就是这个的实例!谢谢大家!

[此帖子已被 轻轻风聆 在 2007-8-24 9:11:26 编辑过]