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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
. N* U4 ]: x" e真NB..佩服ing .....
+ f4 s8 i: l  Z, z8 [大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
% b: m  T4 x1 M% R5 B. Z& O' |$ ]- }$ n' U
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ) t) K: B$ d( d
8 }# b, V( C3 z9 l' h& P7 F- }- p6 J
一、建立文件! 2 `' p# l2 ^7 }" A: \) q
最简单的论坛也要有几个必要的文件,就是: & Q1 ?2 z+ \3 P! z+ L$ {! K, _
0 h3 }8 u  [5 e
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
0 c! \' t4 R% T2 m1 R
% i1 _6 d: z/ [; k2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
/ @8 ?& K" U/ h. N7 j8 f/ j
0 \. D; W1 p, v3 _- ~2 H% t3、发表帖子的文件----命名为:say.asp
. Q7 q" J4 K* t# l3 g) l, l' [
4、保存发表帖子内容的文件-----命名为:save.asp
- [8 e2 q9 F  P1 C1 v+ T; B
. `5 i2 W% M! L+ ^1 \, V* K5、显示帖子标题的文件------命名为:index.asp 3 h( ]- e6 U7 }( e0 d% z

5 t% }+ W+ H+ Y! O, V! J$ t6 j9 V6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
/ \" D; p' R" B( X* C5 y, x- K( U' {. ~
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 1 O! W6 t& n; h  K7 Q

; X5 ^# m) `0 E% n% |二、各文件的主要内容 8 }: F6 Y) u) k+ f) Q( f
$ Z- j' E: d  |" Y7 z# y+ z+ h. m& [  f
1、bbs.mdb
7 h0 y, F& g3 x2 w% }/ I* E; X& u  f' r7 A5 g8 y% w' [
打开这个数据库,建立一个表,命名为bbs # {' M/ T" |- Z9 t$ K( r
5 v) g; H- S- ^8 ~
该表中有几个字段: % a: i* F% X# J. g0 h

. b+ f! I" i- ]8 ~" R( }$ xid(自动给帖子编号),他的数据类型设为“自动编号”
% Z2 h- P/ n4 k6 s- m+ t# M1 }1 D& P: g8 v5 ]  @& s7 Z' E: F4 [- x  o
name(用来储存发表的作者),数据类型为“文本” # @& v$ _) J7 G0 z7 ]* A

4 V2 x6 y- j$ r' q2 ?( ?1 Vtitle(用来储存帖子的主题),数据类型为“文本” 6 Y2 O1 M" G0 D9 k7 l% l1 C
+ {, c- ^1 K" q7 S# S# u
body(用来储存帖子的内容),数据类型为“备注”
/ R, m6 s* L  N
" l- t" \$ j% T/ B- U: Z2、conn.asp 8 }5 s0 l; A9 W1 B' M/ Q
源代码为: ) C8 _# t: P& b/ _- Y% J
<% ; m" T  |. b- a% ]4 L. q
Server.scriptTimeout="10" , [+ p; S3 ?+ A. J. e
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 2 c  D5 E5 X  V$ {$ h
set conn=Server.CreateObject("ADODB.connection")
3 a3 Z- g  x* `& p0 Y8 ]conn.open connstr 6 b0 x! g3 T! O8 I
%> 4 @# b. m, c1 H1 }  G0 v

0 s+ r) p4 B( w/ x  J/ X+ @6 N这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
3 j4 }' z. I( @+ X3 I8 q( X4 ?( K1 P, n) c3 f
3、say.asp 9 @0 ^, W! V1 l* r0 a6 X8 r
+ W8 i; ]8 O% c6 v
源代码为:
3 t! G3 c* A0 H5 d7 ?0 W( p( j3 X; P<form method="POST" action="save.asp"> : N% D( g5 p1 g: Q
<p>大名:<input type="text" name="name" size="20"></p> / N" @. l4 w2 b0 a, e' A) y
<p>标题:<input type="text" name="title" size="91"></p> . q5 Z# b4 O* X" m
<p>内容:</p> 3 M$ g5 J2 z9 @' ~
<p><textarea rows="11" name="body" cols="97"></textarea></p>
$ ]. c+ {. E$ }9 ]1 f" s& F) y6 V* v- S<p> </p> ( |* A0 m& Z9 ?' g2 Y
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
8 E' g* s# l2 f* E</form>
; M8 w7 u2 u& A* Y5 ?大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
' U9 \. [8 P/ s  n  k4 G- o不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 9 S& `0 A" p( h' T

" t( a$ D3 n  K1 v4、save.asp $ v. B: R* V% F4 L
" V3 V) t  b& D
源代码:
) T5 T5 q9 W0 e* s  m<!--#include file="conn.asp"-->
  Q+ g1 b- D1 a6 ]5 I: u, \/ ^<%name=Replace(Request.Form("name"),"'","''")
/ V+ ?2 h. e+ x( Btitle=Replace(Request.Form("title"),"'","''")
; p3 D' |- C! |+ k% ?- {" Mbody=Replace(Request.Form("body"),"'","''")
8 y; m+ R6 {1 J5 e+ S, f( O  M# G%> $ S" [. R3 J* T7 b& T
<%if name="" or title="" or body="" then%> 9 a3 {3 ~- x3 O4 h6 L- l
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 9 P9 h" ^$ R8 O/ i$ E. Q
<%else%>
( B, t2 `7 s+ \5 I) L. g3 Q<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
1 h" G9 L  w# w2 q6 E0 Y4 b- P( T发表成功!<a href="index.asp">查看帖子</a> 1 @+ l0 [# f7 {7 {% X5 C
<%end if
- K& a3 m, Z( `set savebbs=nothing
* C5 g0 Y3 X& j6 }3 D%>
+ q5 I! t" e: ?& N5 u1 C* S+ ?
9 V9 B9 h; o, O9 S第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
) l3 v) b1 v2 kasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, + x8 ^. U" `, O% w% @
接下来几句: % G# e* t: ^4 O1 X' J
name=Replace(Request.Form("name"),"'","''")
' P4 N  X, o; z- I$ Ttitle=Replace(Request.Form("title"),"'","''")
7 t1 T9 {! A9 A4 l( F- F- Vbody=Replace(Request.Form("body"),"'","''") + O% e+ b" \+ j& H. s7 j) |0 a9 n

- I% N1 k+ L6 H, N. ^& N4 c“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ) H( @) o; q6 D5 }
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 3 K" {+ f2 E; b# v( \) R- S
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
; {. r) I9 u+ y: `. v就是把表单中名为name的文本框发来的数据储存在abc123变量中 : U+ ^  @& F4 [: V% J
4 X! t# e$ _& \- B$ A! @7 P
接着:if name="" or title="" or body="" then ( o3 `- V7 [& X, V
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
# j6 ]" o- y, L1 W/ w“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
8 t7 B+ |) V: G' H. O6 K该语句属于html语法,大家都看得懂的!
  }& g0 T, v+ K8 i" _7 M7 I( T* t. D& ^5 `7 ^/ c" k- \5 n
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
4 P0 m6 q( p1 a“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> + Z& ?1 E5 t' W' T* p
发表成功!<a href="index.asp">查看帖子</a>” 4 e3 r+ D' o' k& ]

$ B2 U5 N# l- ?, f"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
$ j& P2 a! k. x) U! R& z+ @) oinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 6 ~. H. J, q- K" i7 N: w
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ) l- X6 ~* v0 W* \
values是“值”的意思
. d+ G6 w/ l( }- W( q) F就是插入向量name,title,body,向量用格式'"&name&"'表示
! F" Y& t1 q) b: s8 U/ Z/ _2 j2 Z$ z1 F9 s/ W7 R' I* d
最后:end if就是结束if……then
7 I% ~! M8 v; Q2 J. yset savebbs=nothing可以说是关闭掉: ' Q: c# W2 n  I( \# u
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
; I" h" V- r% L
% m3 S+ M; K5 ^" K2 R( W/ c3 `% D% i" L# b" v/ X$ u& ^
5、index.asp
+ s3 H- a8 z! d  M% ^' C源代码: 7 N" ^3 l. ^" K  w
<!--#include file="conn.asp"--> 5 v) [# Q  Y% L' T. G
<b><a href="say.asp">发表帖子</a></b><br><br>
8 e/ O3 k3 A4 m' y" @<div align="center">
2 K; @" C- W0 U8 ~<center> : w: q6 ^+ d1 a; D# ]
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">   H; n; H& k. w: a
<tr> ; r/ |0 }9 r8 w% x
<td width="17%"><b>作者</b></td>
6 h& P: v  q  H<td width="83%"><b>主题</b></td> + T9 L# T8 s% t
</tr> " X7 Q! z: |0 T8 A3 H
</table> 6 ?6 l- F: K& l
</center> # T+ V5 @$ `* j; G+ p, P, d! x
</div><hr size="1"> + r- k+ u6 x* @, g4 ^/ y1 z
<%i=1 + Y8 b+ w8 o. O) S! I% S
set showbbs=conn.execute("select*from bbs order by id desc")
  }1 t) Q0 X2 b/ r/ Z: X& _  ?# ]8 |do while not showbbs.eof . K* D; o- K* S( ?. S$ k
%> 9 g; n+ Z* E3 W7 d
<div align="center"> ) U2 B0 Q8 t% v- a, s! m
<center>
% u$ r# T: N! w0 V* g4 J9 _, h<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 9 t  W' g& b0 Z4 x
<tr> . k( D# O( _7 {7 m
<td width="17%"><%=showbbs("name")%> </td> 0 x# D" A2 e4 i+ g
<td width="83%"> 7 f  h& d2 r4 @
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> * o, ~6 N6 T  V/ }! R
</tr>
  ]5 ]  u7 u/ J2 M3 l% x</table> " Y+ u: V* F5 b6 }, U: O
</center>   ]' _( ]! j% }7 {: N
</div><hr size="1">
( m$ ^  z9 s! g. f<%i=i+1   q+ |6 X* ~: z$ \+ |# J
if i>50 then exit do
3 ^( o; |  _3 E* s8 X( `6 t$ rshowbbs.movenext
3 B+ ^* ]  v* |* w. x' C4 e" B% \Loop
* e/ \# |! Q3 s- |0 u7 j, oshowbbs.Close
4 E. i+ e; R# y* vset showbbs=nothing # z. ?; Q& @5 r; D! u
%>
( }$ ~1 ]. h: b' w; o5 _5 V2 g6 m- b9 [- z0 s: n, u
这个文件就不一句一句的讲了
0 Z/ i4 A( o% H- z  L主要讲精华部分: . m4 @+ L; j6 G6 C
set showbbs=conn.execute("select*from bbs order by id desc") 6 v9 T! r3 y) U) n
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 2 m/ O: \: B& f' C
还有这么一句:<%=showbbs("name")%> 8 w0 E* c, r9 I, k. v5 j
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
- L/ A0 Z( @  P7 C7 s" @: q代码中的i=1和i=i+1
. D) }8 G5 k$ yif i>50 then exit do ) t+ G' p& v) {* b2 g4 t& b
showbbs.movenext * t" O* X/ J$ i9 z" }, ~
Loop 8 C0 p; f3 F$ V( o
showbbs.Close 2 k) H8 e3 r) W: r
set showbbs=nothing 8 G/ g2 B) }+ O  W. u
0 D: z) |0 H; ^% T
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
0 r* \* K  ^7 H  Bif i>50 then exit do中的50可以修改
2 W9 X! H) ^; V; J5 t6 T但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
( H8 G6 l  {4 w+ B. y) O6 a还有一句很有用的: 2 }9 Q6 l. @9 R& X: Y
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> - O2 O% i* @, A$ \8 `' J
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, / v6 K- H' H, S" ^$ F% ~& Y
等一下在show.asp文件中就有用了
- [3 ?1 c$ g' r; o$ k" p/ A3 ^2 M7 R4 M1 k
5、show.asp
9 q9 h* X+ v- y0 b% Z6 H源代码:
; F7 O7 I7 M+ a/ f  O: s3 Z
! v* M5 y/ @. @# D0 T3 T2 A  j<!--#include file="conn.asp"-->
% i7 o& Z) A! D, Q' Y8 T, n<%id=request.querystring("id")%> " y4 k4 i& ?$ T% `: p
<%set show=conn.execute("select*from bbs where id="&id&"")%> 6 m5 ~  T: Z* X% U, I
<a href="index.asp">
) ^1 O6 z! R' F* M1 U$ k<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
: h/ j4 s; u2 ?5 g! R<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ) R$ r3 p) b, Y8 c) z* b( f0 w
<tr> 1 Q' `4 `, H2 k) V* L9 l" O9 v
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> " k" K' h9 x+ @2 x$ n4 j: k
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
5 e. r" y/ q" y; E</tr> % G" A) s$ r& A  F* G4 E' s6 h- f
<tr> 4 X& m4 b1 Q: ?6 ]7 d
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
9 j9 p- f2 w+ ]5 V</tr>
( V8 w( B3 J" M7 X' Q</table><%set show=nothing%>   t6 j  O; u* _% @; F2 f5 r

5 g( S" Z9 W1 N: P4 K劲语句---精华语句:
+ ?2 K, H5 k5 b9 Xid=request.querystring("id") ; \. L- ]) h" k' {. y3 ~
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, + \% j% S7 p9 Y; P  p; w
id=request.querystring("id")就是把地址栏中的id的值读取下来, % w' p/ T8 A  [; I0 q/ d- h
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 9 F9 ?  `2 Z, X+ a- n
所以show.asp使用id=request.querystring("id")语句把数字读取下来
" Q; f& n( F' X于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
* n- q) C+ O4 X9 T7 i向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
7 Y* r" [+ C/ X- U& T. |( {% [最后<%set show=nothing%> ( @, |3 Y3 @8 w7 p) x1 W* m) L( P4 W
9 u, m$ k" |! {& S
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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