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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
, B0 g$ K" ?6 W% s" O2 B( F真NB..佩服ing .....
/ b2 S8 q6 f* J* T5 i) t大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
5 p6 O/ ?  Q6 d
" B, p6 N) T* D# A& {3 E! a同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 4 l7 i) q& }5 W- f$ t" y
: y# ?; l# O2 ~9 l( r6 T
一、建立文件!
7 `* s: |: H4 f( J& I, n最简单的论坛也要有几个必要的文件,就是:
; ]' ~. e8 K9 v; }# O
* R# W- @3 o. G& a2 F% z1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 8 P' y" h1 P& w  b4 E; Y+ b

; A( [1 `' Y8 i: E2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
) M0 P  y( j% r* \$ C! x" A0 K, ~, @' Y' T1 R
3、发表帖子的文件----命名为:say.asp
4 f- G, Q+ m: z- x# V) l
9 ^7 \: u  F' J6 j( g' T) l2 x8 E4、保存发表帖子内容的文件-----命名为:save.asp / @2 b% i; }% w- a9 [4 ^

1 x$ X/ Y) ~, a! O. a# N5、显示帖子标题的文件------命名为:index.asp
) t& J, m+ o8 Y( @# N+ t  I* x
; D7 C/ W+ X0 G7 e6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 2 H! n  t% ~; z9 l8 O1 }% ]( g

5 X4 \+ W& t% L6 T6 ?$ p! S建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
( @2 c4 T5 G2 R9 J+ x. Q
& b/ T- R- _, E二、各文件的主要内容
6 N  w! h- U, x8 b! m+ m# i- `* S( S7 j
1、bbs.mdb 7 d. A/ l% Q+ ]: K% ~

# r- T5 G8 c) H, g: d打开这个数据库,建立一个表,命名为bbs
$ Y/ X; i* A# ?. g# s. D2 |( ]. P3 R% l( X2 h# [1 b8 \
该表中有几个字段: $ r2 f- c* v, t! G3 J

- S  _+ P8 z1 ]# a+ E- f& jid(自动给帖子编号),他的数据类型设为“自动编号”
. I; Y: C) ^5 p1 w( Z
/ z6 c" Q) e8 R' d6 c& }/ j" S0 A# N: t* Zname(用来储存发表的作者),数据类型为“文本” $ K8 b' m2 L5 A6 A. q$ r
. A! t- @- t1 K
title(用来储存帖子的主题),数据类型为“文本” ) B1 b7 m: ^& N( H/ h5 j1 z

/ W: _5 Z% y; ?; Ubody(用来储存帖子的内容),数据类型为“备注”
+ v  H( G5 D% G6 H% a4 _/ V7 e& r5 j6 d
2、conn.asp
7 m6 T( N( O! D! j& j源代码为:
& P! U6 B0 z. S<% - E$ P* V1 P5 b. _, h% K6 h
Server.scriptTimeout="10" $ [. ?5 w* Q, p$ j
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" . o; Y( Z1 S1 ^. W
set conn=Server.CreateObject("ADODB.connection")
% V. x2 K- ~0 F5 {3 Q5 ?; E. Qconn.open connstr 8 V- Y; {. V, G& e
%>
  C9 M8 _8 {1 E. N' H0 z7 T+ H0 n& B; [) J6 m- h
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! % P& i, w& x2 b# N8 ]
7 l5 r- |: @* L
3、say.asp % k" t+ Q9 h5 F/ x

5 j+ r/ `! |2 [源代码为:
- W" g. B$ \# s<form method="POST" action="save.asp"> % w) }3 A9 y2 f$ k9 L
<p>大名:<input type="text" name="name" size="20"></p> 8 p2 e2 e9 _# O+ \
<p>标题:<input type="text" name="title" size="91"></p> 1 A$ v1 @) O# s$ r: z7 |' U
<p>内容:</p>
# E3 `, f! [5 b0 U$ s. n' h<p><textarea rows="11" name="body" cols="97"></textarea></p> / T" [, T! L- d3 h5 ~4 ?9 F
<p> </p> 8 G7 O) ~# U5 c+ H0 _4 K
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
  Q# r& M4 l! B6 d</form> ' h; u% y  {& U/ J$ ~
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
4 k8 g. I9 V5 I' z! |) m不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 5 D5 ~4 ~$ Z& x- C" m0 V% k( f/ i

: M; A) ~! O! [8 F1 I5 o# P! v4、save.asp - h9 x1 s4 I& _, V& @( G( f& L
  T' H) c1 e4 r2 _( `& h6 D3 T
源代码:
. n3 ^* t8 F5 |0 M4 t' ^<!--#include file="conn.asp"-->
" z, O; |$ r: f5 A<%name=Replace(Request.Form("name"),"'","''") 1 r- R8 y/ e5 I+ n/ c% R/ s
title=Replace(Request.Form("title"),"'","''") " J; v/ F! [3 O( j$ B: r) x( e
body=Replace(Request.Form("body"),"'","''") ) o6 d' }3 R; F/ Y
%> / ^/ c/ W8 H& g$ b" h1 V
<%if name="" or title="" or body="" then%> - n* |0 G0 D6 s3 ~
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! : A) ?, ~7 q0 W
<%else%> & {8 O$ I) s1 c  l7 ]  R
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 1 s1 R4 j# X: C
发表成功!<a href="index.asp">查看帖子</a> 4 t+ |7 q1 b- t* h3 c' k
<%end if 6 u9 i: a8 h$ j) y- q  W- Y
set savebbs=nothing 8 r# `# u4 a& q2 J/ Z, c- f1 {
%> - a4 ?) \4 l9 g4 ~* E% S$ B2 x

8 _1 m7 [" @& j7 Q第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
5 A5 I3 K: S: }  yasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
4 `3 {* |; ^  S' q$ `5 V. T接下来几句: # T% I  C' a) o( J; `; N
name=Replace(Request.Form("name"),"'","''")
' O5 @. L1 ~) g- {" B. l  }title=Replace(Request.Form("title"),"'","''") - ]- d( J) v" q0 s: |4 m, H
body=Replace(Request.Form("body"),"'","''")
$ G6 j6 A: C" b$ I" H, w% @; o7 L8 Z
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, + ]. c" `  z# c4 T1 r+ [
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
) y! \' w& {: v% O如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 2 G  [+ E8 y# n/ n0 ^( ]. Q
就是把表单中名为name的文本框发来的数据储存在abc123变量中   k, k# u* s% I3 I& J; R/ n

5 M  P5 _% M" w2 L接着:if name="" or title="" or body="" then
/ H# z& v) A& b! e+ `2 f判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
( m, M" r& Q$ b  }“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
5 s7 L, b6 U( _9 ]) F. {/ U( m该语句属于html语法,大家都看得懂的! ( `4 r7 I3 M, f( X7 r
' T0 r9 M5 @( n& D; A: S, T
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
7 ^* o6 m; l- }, B5 {+ P; [“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> + R* l3 r4 L$ H
发表成功!<a href="index.asp">查看帖子</a>”
4 ^- q) T  {8 U
& C5 c+ L6 O' {- ~, ^' B3 o& z"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: ) `5 p* {3 a$ x; f* C, r
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) " U: F0 S# F0 T7 d2 M! ]3 f
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
/ e3 M; `/ T$ v9 ?) {+ Z9 l" ~values是“值”的意思 & ~+ Q" v( p) S8 w4 W
就是插入向量name,title,body,向量用格式'"&name&"'表示 4 z( B& d0 z; J  O1 |) s  t

/ T8 Y1 ^) T) x1 \2 [/ t# p: i最后:end if就是结束if……then - K2 d: C' z) A7 y  h8 k
set savebbs=nothing可以说是关闭掉: " R1 d  T. }* o- E) l2 y
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") + u$ R$ f+ U( t3 d, F  v

/ V$ o: A  [! O$ K0 m$ p
$ U  W) ]1 _; I1 I( k5、index.asp   H# I5 g% r5 S) f
源代码: + S' N6 B: H4 Q$ W- ~8 H
<!--#include file="conn.asp"-->
) c% T& c* \) K) g. m$ c<b><a href="say.asp">发表帖子</a></b><br><br> + w. K. @( }- n8 t# K
<div align="center">
8 Z# I% q) \4 f& }. t4 P, K<center> / G! T, @4 I4 r$ g- b
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ; g/ [; }: z7 o5 J, x
<tr>
. V8 a7 r; K! Q<td width="17%"><b>作者</b></td> 6 o; S5 f  R9 b- _: _: {( u
<td width="83%"><b>主题</b></td> 5 ^6 R. A0 q; b. L8 B3 X
</tr>
) S% d  L1 b# j$ T9 |/ O3 x( m5 j. Z</table>
" [+ `1 ^, o" C</center>
% y, _9 T7 e0 ?+ @& c" q</div><hr size="1"> 2 t/ {/ D8 G% f6 W/ H
<%i=1
( U/ M, k% ]3 {7 C1 qset showbbs=conn.execute("select*from bbs order by id desc")
: u+ k+ C* G6 D1 O! Ddo while not showbbs.eof
9 j" g6 a% P& g/ w8 R5 c%>
+ c6 @, M* k6 Z" ?<div align="center"> $ Q# o8 d4 a; \. Z8 @/ N/ _# l
<center> 9 {5 D8 Q4 [7 u  b/ X  i& u
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
% P2 v9 N* s" r+ W- O, Q1 b<tr>
# I9 r/ E" _. p<td width="17%"><%=showbbs("name")%> </td>
1 g0 F2 h7 u+ v7 M2 R, W) ]<td width="83%">
7 b- g; h5 z6 T3 A+ C<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
+ ]# ?) |8 ]1 B2 F& t  k</tr>
8 K3 Z( \# x) G1 R: P2 h</table>
" K# ]2 v0 Y' t+ a7 |* [: [</center> ( T/ m7 R! d6 M# I: S1 n6 s  U" C
</div><hr size="1"> 8 Q! p, P& B- T: G8 J7 V5 H( V
<%i=i+1
0 |! M& E6 n" S4 G8 |9 T( zif i>50 then exit do
$ A' u0 K% a) Cshowbbs.movenext
: C  ~+ e( s% ~  s) A% ?7 oLoop
9 c4 }. q% z1 L  ~7 y1 ^showbbs.Close " [$ [" o/ @& S1 [( L9 v: `% y9 S1 h
set showbbs=nothing
$ ^% q4 O7 z4 h9 R4 u: c%> # H* ~/ {/ W6 `- e% L# N

9 d" ^. S6 e, W这个文件就不一句一句的讲了
$ s7 v0 c/ f4 r: Y主要讲精华部分:
/ [5 e4 y' M7 z8 F: P! Mset showbbs=conn.execute("select*from bbs order by id desc") , }% d6 S. q9 e: `6 V  s
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
+ M3 h& D- W9 P$ j还有这么一句:<%=showbbs("name")%>
1 s' e; H/ N- `3 X& O  U# @就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 1 h1 [( F; X, d9 c7 j& r: T
代码中的i=1和i=i+1
4 U* l: I5 k3 f: T0 Y# q. P1 V. Kif i>50 then exit do
2 T2 l( ]/ z4 ~, wshowbbs.movenext 0 l* }+ z/ \+ z; T" h5 m( Z5 o
Loop
6 d. p3 b- q2 U! Tshowbbs.Close
1 ^5 p. Y7 s2 d3 Bset showbbs=nothing 8 ]3 I/ \; h& R! u. V" T! l; l
: J% Y9 e3 W% Z: F* a& J2 z
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
$ V$ {( w% K! U$ N9 K5 Xif i>50 then exit do中的50可以修改 0 i/ z0 Z. k0 a) x6 O
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
5 ?; u7 s$ u$ M  m! \还有一句很有用的: 9 n$ V& _+ ^$ b, |
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 1 R. Q9 k7 N: X) W+ M$ S- z
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ' v2 f) L, S" [  U6 \1 R6 H- I# c- I
等一下在show.asp文件中就有用了
$ S- z; v( b& o" D
5 Z: x. Z& L: s% [) {5、show.asp   \1 u* I  M; M! T; h+ h
源代码:
  R) y$ ~5 D4 r( d- {4 u$ Q$ m% F- k- m) X" n; Y2 _+ X
<!--#include file="conn.asp"--> ! @" a* j) T3 v, B6 i
<%id=request.querystring("id")%>
* W+ A  L; l' r# Y<%set show=conn.execute("select*from bbs where id="&id&"")%>
: `" ~. N  Y- ^8 s/ K5 W<a href="index.asp">
6 O" X1 B; f9 |<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> - Y# C& a8 `/ [
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
4 [* y+ K6 `# D  F2 W<tr>
3 p  R. u! u0 b0 |8 a7 L) y  H<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ' C3 _3 N% e4 n3 }( [0 t
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> , W/ R0 Y9 r$ F8 v/ a- {' ]
</tr> % R) s1 ?6 c9 v; ?
<tr> " A4 o1 l7 P# R* v( E# `7 S' k
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> " o1 `$ t7 D' k1 Q& |+ ~0 ?
</tr>
# A1 Y. e- n, @/ O6 T+ p* l</table><%set show=nothing%>
$ @6 V0 t) o% [- R4 w7 W. X- ?
劲语句---精华语句: ; a0 B$ G2 ^* }% N) I7 W
id=request.querystring("id")
0 I3 L/ S( ^+ d! U! ], [在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ( Y7 e6 U+ n9 B: }& Q
id=request.querystring("id")就是把地址栏中的id的值读取下来, $ ^# x  p4 c. t6 B3 G6 f& @7 X
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ) b6 w! m3 J4 z6 W
所以show.asp使用id=request.querystring("id")语句把数字读取下来 % i4 n  C5 t9 A7 W. g, o
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 4 S$ A4 q( W8 S& O1 D: Z* i1 h6 |
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
0 ~  V" d3 `) m0 E$ ?最后<%set show=nothing%> : y9 N5 Z3 d+ W& n# P1 }
! ~9 E& U( V# x3 a. w' z
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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