Admin 发表于 2005-3-31 15:28:00

[分享]建一个简单的论坛-DIY版

大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。<br>
<br>
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 <br>
<br>
一、建立文件! <br>
最简单的论坛也要有几个必要的文件,就是: <br>
<br>
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb <br>
<br>
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp <br>
<br>
3、发表帖子的文件----命名为:say.asp <br>
<br>
4、保存发表帖子内容的文件-----命名为:save.asp <br>
<br>
5、显示帖子标题的文件------命名为:index.asp <br>
<br>
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp <br>
<br>
建立文件是可以先建立文本文档,他的格式为&quot;文件名.txt&quot;,我们只需把它改为&quot;文件名.asp&quot; <br>
<br>
二、各文件的主要内容 <br>
<br>
1、bbs.mdb <br>
<br>
打开这个数据库,建立一个表,命名为bbs <br>
<br>
该表中有几个字段: <br>
<br>
id(自动给帖子编号),他的数据类型设为“自动编号” <br>
<br>
name(用来储存发表的作者),数据类型为“文本” <br>
<br>
title(用来储存帖子的主题),数据类型为“文本” <br>
<br>
body(用来储存帖子的内容),数据类型为“备注” <br>
<br>
2、conn.asp <br>
源代码为: <br>
&lt;% <br>
Server.scriptTimeout=&quot;10&quot; <br>
connstr=&quot;DBQ=&quot;+server.mappath(&quot;═bbs═.mdb&quot;)+&quot;;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};&quot; <br>
set conn=Server.CreateObject(&quot;ADODB.connection&quot;) <br>
conn.open connstr <br>
%&gt; <br>
<br>
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! <br>
<br>
3、say.asp <br>
<br>
源代码为: <br>
&lt;form method=&quot;POST&quot; action=&quot;save.asp&quot;&gt; <br>
&lt;p&gt;大名:&lt;input type=&quot;text&quot; name=&quot;name&quot; size=&quot;20&quot;&gt;&lt;/p&gt; <br>
&lt;p&gt;标题:&lt;input type=&quot;text&quot; name=&quot;title&quot; size=&quot;91&quot;&gt;&lt;/p&gt; <br>
&lt;p&gt;内容:&lt;/p&gt; <br>
&lt;p&gt;&lt;textarea rows=&quot;11&quot; name=&quot;body&quot; cols=&quot;97&quot;&gt;&lt;/textarea&gt;&lt;/p&gt; <br>
&lt;p&gt; &lt;/p&gt; <br>
&lt;p&gt;&lt;input type=&quot;submit&quot; value=&quot;提交&quot; name=&quot;B1&quot;&gt;&lt;input type=&quot;reset&quot; value=&quot;重置&quot; name=&quot;B2&quot;&gt;&lt;/p&gt; <br>
&lt;/form&gt; <br>
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 <br>
不过要注意这一句&lt;form method=&quot;POST&quot; action=&quot;save.asp&quot;&gt;,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! <br>
<br>
4、save.asp <br>
<br>
源代码: <br>
&lt;!--#include file=&quot;conn.asp&quot;--&gt; <br>
&lt;%name=Replace(Request.Form(&quot;name&quot;),&quot;'&quot;,&quot;''&quot;) <br>
title=Replace(Request.Form(&quot;title&quot;),&quot;'&quot;,&quot;''&quot;) <br>
body=Replace(Request.Form(&quot;body&quot;),&quot;'&quot;,&quot;''&quot;) <br>
%&gt; <br>
&lt;%if name=&quot;&quot; or title=&quot;&quot; or body=&quot;&quot; then%&gt; <br>
请&lt;a href=&quot;****:history.go(-1)&quot;&gt;后退&lt;/a&gt;填写完整资料,你才能发表帖子! <br>
&lt;%else%&gt; <br>
&lt;%set savebbs=conn.execute(&quot;insert into bbs(name,title,body)values('&quot;&name&&quot;','&quot;&title&&quot;','&quot;&body&&quot;')&quot;)%&gt; <br>
发表成功!&lt;a href=&quot;index.asp&quot;&gt;查看帖子&lt;/a&gt; <br>
&lt;%end if <br>
set savebbs=nothing <br>
%&gt; <br>
<br>
第一句:&lt;!--#include file=&quot;conn.asp&quot;--&gt;,意思是插入conn.asp文件,即与数据库进行连接! <br>
asp语句必须用&lt;% %&gt;这个格式包含起来,而插入文件的语句就不用, <br>
接下来几句: <br>
name=Replace(Request.Form(&quot;name&quot;),&quot;'&quot;,&quot;''&quot;) <br>
title=Replace(Request.Form(&quot;title&quot;),&quot;'&quot;,&quot;''&quot;) <br>
body=Replace(Request.Form(&quot;body&quot;),&quot;'&quot;,&quot;''&quot;) <br>
<br>
“Replace(Request.Form(&quot;name&quot;),&quot;'&quot;,&quot;''&quot;)”意思是接收表单中名为name的文本框发来的数据, <br>
而“name=Replace(Request.Form(&quot;name&quot;),&quot;'&quot;,&quot;''&quot;)”则是把发来的数据储存在name变量中, <br>
如果你这样:“abc123=Replace(Request.Form(&quot;name&quot;),&quot;'&quot;,&quot;''&quot;)” <br>
就是把表单中名为name的文本框发来的数据储存在abc123变量中 <br>
<br>
接着:if name=&quot;&quot; or title=&quot;&quot; or body=&quot;&quot; then <br>
判断name、title和body变量中是否没有填写内容,即为&quot;&quot;,如果这样,就执行这一语句: <br>
“请&lt;a href=&quot;****:history.go(-1)&quot;&gt;后退&lt;/a&gt;填写完整资料,你才能发表帖子!” <br>
该语句属于html语法,大家都看得懂的! <br>
<br>
&quot;&lt;%else%&gt;&quot;就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: <br>
“&lt;%set savebbs=conn.execute(&quot;insert into bbs(name,title,body) values('&quot;&name&&quot;','&quot;&title&&quot;','&quot;&body&&quot;')&quot;)%&gt; <br>
发表成功!&lt;a href=&quot;index.asp&quot;&gt;查看帖子&lt;/a&gt;” <br>
<br>
&quot;set save=conn.execute&quot;属于固定的语句,不过savebbs可以自己修改,&quot;=&quot;后面的就难解释了: <br>
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) <br>
中的name,title,body字段插入,插入什么呢?看接下的values('&quot;&name&&quot;','&quot;&title&&quot;','&quot;&body&&quot;')&quot;) <br>
values是“值”的意思 <br>
就是插入向量name,title,body,向量用格式'&quot;&name&&quot;'表示 <br>
<br>
最后:end if就是结束if……then <br>
set savebbs=nothing可以说是关闭掉: <br>
set savebbs=conn.execute(&quot;insert into bbs(name,title,body) values('&quot;&name&&quot;','&quot;&title&&quot;','&quot;&body&&quot;')&quot;) <br>
<br>
<br>
5、index.asp <br>
源代码: <br>
&lt;!--#include file=&quot;conn.asp&quot;--&gt; <br>
&lt;b&gt;&lt;a href=&quot;say.asp&quot;&gt;发表帖子&lt;/a&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt; <br>
&lt;div align=&quot;center&quot;&gt; <br>
&lt;center&gt; <br>
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse; &quot; bordercolor=&quot;#000000&quot; width=&quot;100%&quot; height=&quot;26&quot;&gt; <br>
&lt;tr&gt; <br>
&lt;td width=&quot;17%&quot;&gt;&lt;b&gt;作者&lt;/b&gt;&lt;/td&gt; <br>
&lt;td width=&quot;83%&quot;&gt;&lt;b&gt;主题&lt;/b&gt;&lt;/td&gt; <br>
&lt;/tr&gt; <br>
&lt;/table&gt; <br>
&lt;/center&gt; <br>
&lt;/div&gt;&lt;hr size=&quot;1&quot;&gt; <br>
&lt;%i=1 <br>
set showbbs=conn.execute(&quot;select*from bbs order by id desc&quot;) <br>
do while not showbbs.eof <br>
%&gt; <br>
&lt;div align=&quot;center&quot;&gt; <br>
&lt;center&gt; <br>
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse; &quot; bordercolor=&quot;#000000&quot; width=&quot;100%&quot; height=&quot;20&quot;&gt; <br>
&lt;tr&gt; <br>
&lt;td width=&quot;17%&quot;&gt;&lt;%=showbbs(&quot;name&quot;)%&gt; &lt;/td&gt; <br>
&lt;td width=&quot;83%&quot;&gt; <br>
&lt;a href=&quot;show.asp?id=&lt;%=showbbs(&quot;id&quot;)%&gt;&quot;&gt;&lt;%=showbbs(&quot;title&quot;)%&gt;&lt;/a&gt;&lt;/td&gt; <br>
&lt;/tr&gt; <br>
&lt;/table&gt; <br>
&lt;/center&gt; <br>
&lt;/div&gt;&lt;hr size=&quot;1&quot;&gt; <br>
&lt;%i=i+1 <br>
if i&gt;50 then exit do <br>
showbbs.movenext <br>
Loop <br>
showbbs.Close <br>
set showbbs=nothing <br>
%&gt; <br>
<br>
这个文件就不一句一句的讲了 <br>
主要讲精华部分: <br>
set showbbs=conn.execute(&quot;select*from bbs order by id desc&quot;) <br>
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, <br>
还有这么一句:&lt;%=showbbs(&quot;name&quot;)%&gt; <br>
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs <br>
代码中的i=1和i=i+1 <br>
if i&gt;50 then exit do <br>
showbbs.movenext <br>
Loop <br>
showbbs.Close <br>
set showbbs=nothing <br>
<br>
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! <br>
if i&gt;50 then exit do中的50可以修改 <br>
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 <br>
还有一句很有用的: <br>
&lt;a href=&quot;show.asp?id=&lt;%=showbbs(&quot;id&quot;)%&gt;&quot;&gt;&lt;%=showbbs(&quot;title&quot;)%&gt;&lt;/a&gt; <br>
里面的超连接:show.asp?id=&lt;%=showbbs(&quot;id&quot;)%&gt;,注意:这里的超连接把帖子的id包含了, <br>
等一下在show.asp文件中就有用了 <br>
<br>
5、show.asp <br>
源代码: <br>
<br>
&lt;!--#include file=&quot;conn.asp&quot;--&gt; <br>
&lt;%id=request.querystring(&quot;id&quot;)%&gt; <br>
&lt;%set show=conn.execute(&quot;select*from bbs where id=&quot;&id&&quot;&quot;)%&gt; <br>
&lt;a href=&quot;index.asp&quot;&gt; <br>
&lt;b&gt;回到首页&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;b&gt;&lt;a href=&quot;say.asp&quot;&gt;发表帖子&lt;/a&gt;&lt;/b&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt; <br>
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse&quot; bordercolor=&quot;#111111&quot; width=&quot;100%&quot; height=&quot;180&quot;&gt; <br>
&lt;tr&gt; <br>
&lt;td width=&quot;21%&quot; height=&quot;22&quot;&gt;&lt;b&gt;作者:&lt;/b&gt;&lt;%=show(&quot;name&quot;)%&gt;&lt;/td&gt; <br>
&lt;td width=&quot;79%&quot; height=&quot;22&quot;&gt;&lt;b&gt;主题:&lt;/b&gt;&lt;%=show(&quot;title&quot;)%&gt;&lt;/td&gt; <br>
&lt;/tr&gt; <br>
&lt;tr&gt; <br>
&lt;td width=&quot;100%&quot; colspan=&quot;2&quot; height=&quot;158&quot; valign=&quot;top&quot;&gt;&lt;b&gt;&lt;br&gt;内容:&lt;/b&gt;&lt;%=show(&quot;body&quot;)%&gt;&lt;/td&gt; <br>
&lt;/tr&gt; <br>
&lt;/table&gt;&lt;%set show=nothing%&gt; <br>
<br>
劲语句---精华语句: <br>
id=request.querystring(&quot;id&quot;) <br>
在讲解index.asp文件的后面已经说到:show.asp?id=&lt;%=showbbs(&quot;id&quot;)这一句, <br>
id=request.querystring(&quot;id&quot;)就是把地址栏中的id的值读取下来, <br>
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, <br>
所以show.asp使用id=request.querystring(&quot;id&quot;)语句把数字读取下来 <br>
于是接着使用:set show=conn.execute(&quot;select*from bbs where id=&quot;&id&&quot;&quot;) <br>
向数据表查询id为这时读取下来的数字的帖子,即where id=&quot;&id&&quot; <br>
最后&lt;%set show=nothing%&gt; <br>
<br>
好了,一个简单的DIY论坛就这样完成了

流水剑客 发表于 2005-3-31 16:38:00

高手不看也懂,我不懂
页: [1]
查看完整版本: [分享]建一个简单的论坛-DIY版