获得本站免费赞助空间请点这里
返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西  G& ^( F; i# A# s4 ^9 f; M; r
真NB..佩服ing .....1 _# x. E* d& \. w4 d$ @
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。6 C! m. n, I3 W7 `" @

0 V0 z5 T* i% l. S9 f同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 $ E4 ?- r# v+ F# |( ?5 F9 [

% ?6 N1 @/ U3 Z  X9 {9 R一、建立文件!
/ _5 [. I3 r# G% w) h9 k2 y最简单的论坛也要有几个必要的文件,就是: + ^; d4 T$ ^' i+ K

( q! \- F0 y0 i2 _3 x) s) W1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
* w" F& m( t& E9 A) c0 v7 O
0 y" q1 m8 t5 V* ~( J2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 1 @3 K1 m( b$ G: O
- e- k, \( R; a( M* o/ R/ l
3、发表帖子的文件----命名为:say.asp
, H2 ~6 I) C' s8 Z4 G6 G8 B* I) h. w5 x, @( J9 I) N5 L
4、保存发表帖子内容的文件-----命名为:save.asp
5 m' V. U1 ^' Z9 e; }& C( t* v9 y; X0 D6 |3 q7 a
5、显示帖子标题的文件------命名为:index.asp
( z+ J( C" R- ~$ d! ?- T/ \. R7 G/ r. o! G( y  i
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 6 H6 R* e) P9 M5 s# C7 `- S7 `
! W3 ^2 M0 w3 n1 u0 ?. f. l3 y
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 8 Z: D  Y4 x0 s( [# u) ]
$ k3 S+ A: @. b; p) c2 m% s  h/ {
二、各文件的主要内容
; J' c8 L% H6 V! R* F' S6 P5 k$ K2 m" g( H# u
1、bbs.mdb
/ ~0 o4 t( [( N1 A6 `. w) o" g5 o9 @- t/ Q( l* m
打开这个数据库,建立一个表,命名为bbs : I) a2 ]$ Y' Z
& s' H: j" }$ L& W
该表中有几个字段:
0 m; h5 O) h- T& K7 J+ w7 o% [& _7 g: ]7 i& [
id(自动给帖子编号),他的数据类型设为“自动编号”
) I% r) n% h5 j( [; J) x- T1 {2 V3 r+ k* O% X
name(用来储存发表的作者),数据类型为“文本”
+ h0 |7 u3 `6 y5 m" e' M/ T) x( z
- U1 B" y0 B( Z" p* ?: jtitle(用来储存帖子的主题),数据类型为“文本” ' p- x6 B+ U7 \3 [" c1 x  F
) ^5 ]3 N! }) w1 [: U& h
body(用来储存帖子的内容),数据类型为“备注” ( p' d" `# c( T; ]/ x

! `8 R! D9 V, X- D0 ]7 Y2、conn.asp   O9 V$ g5 O5 p( t! w% G% o
源代码为:
. i5 F6 Q  A# G<% ; a+ ~3 y$ V# S& `- c7 S  X
Server.scriptTimeout="10" " Q4 f+ @3 M5 T& w& h# d( E2 L
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 1 [+ U4 L* H+ \+ ]6 D' o
set conn=Server.CreateObject("ADODB.connection")
% O/ T. n& J& F' T  |conn.open connstr : E2 D- G7 j& t3 A8 a+ V+ H
%> : Z! o& Z; d+ h& A
( O+ q9 A- p0 I9 l( N! E
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
9 j3 F% i/ o+ g) F+ z  l# ]# i. \* l2 p1 x; @+ N( N9 s6 {( {
3、say.asp
- {' Q$ C6 n) R: t& s1 Q+ r+ v& E
源代码为: # ]/ V6 t: i5 q7 Q5 A
<form method="POST" action="save.asp">
8 N) N; F' {* d9 Q3 \  b2 Q<p>大名:<input type="text" name="name" size="20"></p>
- f& G& G+ Y5 f7 j! k<p>标题:<input type="text" name="title" size="91"></p>
8 {4 i9 [- k% F$ k- K<p>内容:</p> 2 H& P0 D* n+ ~6 r% e$ W
<p><textarea rows="11" name="body" cols="97"></textarea></p> - r9 r7 O, |, m7 E/ H, N
<p> </p>
8 o( [+ t; n" k7 C  v. o9 u<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> + K' w+ s1 A$ L7 C1 l4 ^7 X
</form>
! l8 ^/ |( k: L1 U5 Y大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
7 a0 o9 ?' n5 a" `, K1 N不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
% O$ t) r4 N: T6 Y% `' [8 t3 Q  ]- }; l1 W1 c
4、save.asp / a3 U- |" U3 M5 l
+ L+ H1 G* L" a
源代码: * W2 z0 G" A* n2 B6 i9 B$ _
<!--#include file="conn.asp"--> 0 I1 I3 a% k; W. m" Y
<%name=Replace(Request.Form("name"),"'","''")
4 |: r6 v0 T7 w6 Jtitle=Replace(Request.Form("title"),"'","''")
) H5 N* _4 \( Mbody=Replace(Request.Form("body"),"'","''")
7 U$ `1 g; V+ h4 \, @%> * q* }0 a4 D: h% J7 e1 w
<%if name="" or title="" or body="" then%> 8 O  [% I' A2 k" b. Z8 c% C8 n5 y! \
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
# y9 u4 k; y7 d4 L* D1 t<%else%> 9 |2 U9 S& K5 \6 @# P  ?( v4 G
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ! K3 T8 K0 X( `8 b
发表成功!<a href="index.asp">查看帖子</a>
) S. ?  \+ r$ O7 p) K4 E<%end if ( ~6 Y' J6 e& }
set savebbs=nothing
9 Z3 y3 Y- E# j' C%> 5 ^" L! m# A, r3 D6 R8 ~$ C! P

. {8 T" L9 d% L& t第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
' l( _  r* u' fasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
- w, I) H1 N7 U" l. R接下来几句:
% h* D' h; A$ l9 ]" c* k7 d! Mname=Replace(Request.Form("name"),"'","''")
$ D( G8 S! }7 n8 ^title=Replace(Request.Form("title"),"'","''") - f/ [: t) J% C
body=Replace(Request.Form("body"),"'","''") ! r2 ^2 S* K3 t0 s
# u( I2 S' G- t' t% Y3 p
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 5 ]! E1 a& \# K9 f, G9 N
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 9 T# ~4 |. W4 O& G& ~
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” / V5 |/ R8 f2 t3 Q: P
就是把表单中名为name的文本框发来的数据储存在abc123变量中 ( D( c  n, [5 J

. K9 L, j9 D; l) D, r8 p% M3 i接着:if name="" or title="" or body="" then
% D7 R6 `' ^& x判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: $ H5 E. M3 f8 b0 v2 f: S
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
* i% U- Q, O. ]# x0 C该语句属于html语法,大家都看得懂的! 5 r; i- I1 ~7 h9 o3 S

8 t4 x, P. W& j  m3 i4 \5 O! C"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ! U& d! n7 p6 S& _7 q
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ) I6 e0 J8 ?$ k
发表成功!<a href="index.asp">查看帖子</a>” ; S3 d6 N/ h2 U- w/ G, \4 p
7 j% P/ Y; l) d, I
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
$ Z* l2 \2 i8 B5 rinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
! I3 \; G1 k6 ^8 _中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
6 N; ]* e: N- i5 x2 K( i4 O1 Vvalues是“值”的意思 4 A3 @9 c0 A! E9 z" I% v
就是插入向量name,title,body,向量用格式'"&name&"'表示
7 v1 [; K3 B: E; _4 ?
% r0 K, }9 `& s* f最后:end if就是结束if……then
: K5 i0 C  b6 x: @. iset savebbs=nothing可以说是关闭掉:
* Y& ~( M8 j6 p& ~- O+ |+ |set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
; Z% N/ ~0 `* ]; Y3 c& {4 E- E# @( D) Z$ s" ~3 e, ?5 V4 E/ U5 I+ l

6 ?* q" b* p7 d5、index.asp
5 z- N2 S1 G8 [, t" J( e' ~7 Z源代码:
& w; C( ?& b# P, V. n<!--#include file="conn.asp"--> 8 L) H* u. M" s6 w
<b><a href="say.asp">发表帖子</a></b><br><br> % {* y6 c+ ^8 M9 [$ {% ^$ n2 @! l
<div align="center">
) D6 r1 d1 o  r& ]" x: V<center>
6 N7 B# B9 m, Z$ K# ?6 n9 ?<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 0 O# w. b, F9 C
<tr> ; U4 [: A. p! [6 e" d3 ^* T1 {2 D
<td width="17%"><b>作者</b></td>
" Q* T2 }: X! q4 x: n<td width="83%"><b>主题</b></td>
" y0 X' m, G- h% q</tr> 7 F5 L# ^+ }" d  Z. J. t; j- H
</table> $ P  w& |1 Z: V" B
</center> ' ~" n  d1 x, H
</div><hr size="1"> 8 a% U% G- P: E5 ^
<%i=1
- e, F4 g* y$ J( Sset showbbs=conn.execute("select*from bbs order by id desc") , v; r: T. \8 Q3 m" s. S& u# ~
do while not showbbs.eof $ `" }0 z, H8 o( N( b6 _
%>
$ L6 ^8 }/ D1 g7 X5 u/ b; T<div align="center"> & y7 q5 t; T6 ]/ E+ b3 P
<center> # R* ^- \  e* s3 w6 ~
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
6 X$ o9 V5 Y2 Y<tr>
* e! F9 b% F+ q! k- O; s1 m1 Y<td width="17%"><%=showbbs("name")%> </td>
- A; X1 H1 w- H7 ?& ]<td width="83%">
/ Z6 D- Z& K* H( y$ ?; s<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
' d4 Z3 u. T# S/ s8 a</tr>
6 o3 ]- }+ ]; @+ W5 Z  P0 `6 v1 V</table>
. e! M! F- l3 P: m2 M</center> ' t) I" H2 Y/ \) T' R6 w, M, S
</div><hr size="1"> 4 h0 S$ c' P1 A
<%i=i+1 * a4 ?  q$ D" W
if i>50 then exit do
$ ]& Z  F. l0 a, U5 r, Z4 W: s, eshowbbs.movenext
8 e4 M: v. @% A7 sLoop
, J+ Y" ]: m( Xshowbbs.Close + d9 \: K; [2 l: ^  L/ v* b3 e
set showbbs=nothing * F" c$ {0 t2 C+ W: e7 u
%> 3 l. {8 l: d& N7 D% B7 [
$ F% g7 b6 G; c
这个文件就不一句一句的讲了
9 s, V* z9 A# G; E& K8 V% g主要讲精华部分: - I; e7 s4 |: B) e% m% J
set showbbs=conn.execute("select*from bbs order by id desc") % T2 q+ w, Q" l* h
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, , z0 W1 r) Q: h' o5 v* n1 K6 g
还有这么一句:<%=showbbs("name")%> ) U+ \# C5 X4 {% a0 O1 U
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs ! F  U; A6 |: v7 N" D$ `+ m5 P& x- r
代码中的i=1和i=i+1 4 j% G* F& F, T4 u
if i>50 then exit do
( T' W9 O, ~0 v( U1 i5 G- S+ mshowbbs.movenext 9 @/ v1 W6 F+ r" m/ C: l
Loop 4 a0 H% i* I  C8 T
showbbs.Close ; s* Y- H1 M) n& A! O2 W2 {
set showbbs=nothing
6 @: a- _& w: S1 R' F) j+ t  [( H% P$ ~0 ?# H7 e3 Q6 U  r
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! ) n) W' |" E% C
if i>50 then exit do中的50可以修改
7 M* s, O% Q2 k! A3 w9 z但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
3 @9 W1 Y( j( {7 l8 |# L6 i) S+ M还有一句很有用的:
1 u' V- E  @0 N+ x: Z: |/ E  w, P7 T<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ! }) M0 E( Z" q
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
% i: U; }9 C* x8 Z5 _6 P5 X等一下在show.asp文件中就有用了
4 ~( L9 r( c' y3 q. K: v8 g2 T. V( M5 U) p# b
5、show.asp / L- R5 I: t& `" g" G/ T
源代码:
: K% A0 I: E; a; ]- }+ \7 i" b4 u/ g/ A, t* Y8 o
<!--#include file="conn.asp"-->
8 n* I$ J9 E3 s# i<%id=request.querystring("id")%>
- H2 ~1 ?" V: ]<%set show=conn.execute("select*from bbs where id="&id&"")%>
5 D0 {- O: ^- \+ w; e<a href="index.asp">
- d- r% J! d2 A( r; G' L; l6 E<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 2 n/ b) C) F5 Y, t9 ^
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> / ?' |, K, ?- w
<tr> 6 b  y- A. r, V5 A. N+ e. ^
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
' p! A: n0 n; h<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>   Q, l; i, m: B3 Q' x
</tr> 6 Y4 X* k/ Y. P, _
<tr> . y7 B1 _& U# d& w1 b! M+ u
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
# _  g- l& O9 R. P6 b  }. }  M6 o: e</tr> ( |7 V& v- J5 e8 s
</table><%set show=nothing%>
0 a! k' K- W0 |. _" }7 T" q( I
% _1 c3 B. s8 y9 l% X+ \劲语句---精华语句:
' P4 {; v+ f: O( f1 [% ]) Did=request.querystring("id")
0 [/ @7 N( ]% f/ n2 P& K$ [在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
. N! H( W! Z9 T* U5 Hid=request.querystring("id")就是把地址栏中的id的值读取下来, 1 h9 C1 K2 e. d, E3 x! T
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ; T, c2 e* M  ^  ]0 `7 p
所以show.asp使用id=request.querystring("id")语句把数字读取下来 # @& h; y! D4 _
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ) h; ~3 b3 z4 k4 ]7 O' x& j
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
5 |; n" ?" k- k1 o7 `0 f) s2 J最后<%set show=nothing%> & J5 |& s. q) Z* E2 K$ P
' v7 C! X5 Z# y
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

返回列表
【捌玖网络】已经运行: