返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西) T. D2 ?+ t- ?0 z8 a
真NB..佩服ing .....
$ M# Q. h$ u' r" L4 U6 b大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
" F; Y( H; Y& ^7 s$ _  `0 r; I7 T3 R. `& i/ t0 F, N4 Z0 k
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ( i. u  i: c9 ^8 L; j, x

1 }' l" ?( P# b/ l一、建立文件!
6 g$ h' Z4 o6 f0 X. B最简单的论坛也要有几个必要的文件,就是:
5 j& r' y- o" S. G5 W4 J9 C1 u- Y0 @$ t
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
' y$ N, f$ d* M$ J- W
3 `. @' [2 I5 f" `! M2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
; p& F# F. l8 s2 }. o9 e# O1 U) L. @" @! t" [' \% E) V. @
3、发表帖子的文件----命名为:say.asp $ b. y0 v  o$ \* L8 m) V7 i

# {; f. J0 V6 g) w1 O% l7 r. n4、保存发表帖子内容的文件-----命名为:save.asp + Y5 M- {! i- ]: y7 d( t, h

2 d: s  o: J. Q; G- @, k: |5、显示帖子标题的文件------命名为:index.asp
* d! P7 G/ D" E% W1 t$ J
1 q$ B: p( h$ F4 r* s# U* h2 k/ X6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp , i) e6 X# n/ t' U3 e
. h8 d; L( W- l* W2 K3 J, @
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
  E+ U/ r% b- f
4 V8 @$ O% E: t( s9 y% P二、各文件的主要内容 % E0 K: v) k3 t  K5 |* Q1 r# Q0 u7 n. R

2 s' y$ F* @8 \1、bbs.mdb
" m  d$ R9 a' E4 ~
7 H( f5 A/ h! C! \打开这个数据库,建立一个表,命名为bbs ! F- A! |" n" L3 S$ g. W& s/ O2 K

+ V; Q0 z4 x& W: F, T该表中有几个字段: ( ~- ^8 j; E; V) ]5 ~5 p

0 Y; V4 ~6 r- |' O% B6 w: Iid(自动给帖子编号),他的数据类型设为“自动编号” # b% X1 p; i) c

* r8 ^- Y8 U) e0 M* x; L/ dname(用来储存发表的作者),数据类型为“文本” 9 c. G/ C! T! P3 b3 G) f: @
( C1 o7 i; L+ s, |9 @
title(用来储存帖子的主题),数据类型为“文本” 0 C6 H2 A3 q0 U8 E0 ?

. ]% Q  k0 h+ U; I( }) Ubody(用来储存帖子的内容),数据类型为“备注” & }+ `4 m6 _+ G: }" b2 R
+ n; G6 h$ ^" u: m2 z2 s, M
2、conn.asp 3 G& C% t. `0 W/ r! V
源代码为:
$ {( W9 k& X  W4 b7 m<% & d1 X% |% e3 |% Y6 o
Server.scriptTimeout="10"
6 f" T7 N5 B' l( oc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
5 K" v# V; a7 Yset conn=Server.CreateObject("ADODB.connection") ; Z8 I2 O% b! y3 Y; E9 ]2 I+ o) T
conn.open connstr   _; Z8 ~$ ?" V7 G, T9 I
%> + ?7 L' P" c% w" d( @
9 o5 C' a# u  S- ?& W
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 5 M8 `) ^% |6 F) y: }* t

6 y' K' ]* |) i, L. ]3 M3、say.asp " U' D- T1 j& i2 v, S/ q% c! ~

! R6 U; n" A0 c6 v  ?/ G9 v5 {, z. f5 }源代码为:
4 A( B' y4 m. n- a5 L6 E/ _& m% W<form method="POST" action="save.asp"> $ x" n. H  J  q+ ]5 o0 u+ o! w  F
<p>大名:<input type="text" name="name" size="20"></p>
- m3 x2 K; |# \. H- b3 n$ `+ F' @<p>标题:<input type="text" name="title" size="91"></p>
9 t, p; {* \' w: [2 [* d# X<p>内容:</p> ! {& V; f" {, m0 o, t9 c. l
<p><textarea rows="11" name="body" cols="97"></textarea></p> 9 n# J4 Z% ]* T- M' Z1 B$ G
<p> </p>
2 l5 Q' ?8 s4 B( Z# G) Z<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> # {: d3 d1 D  @3 X
</form>
( }0 f) ?$ N8 `5 D% k. M大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 6 |1 h5 f2 E1 d
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! : L! ?6 }  \: ^. p9 ?
: ^+ ^+ }' G% `! ?$ s/ s/ F
4、save.asp * ]6 d7 Y( c6 x- L- V

" u/ ^4 I. _9 L, a0 _" e; {源代码:
3 U: }, F, m' C$ W9 g. W<!--#include file="conn.asp"-->
. p0 V0 ^  |  M9 K5 q4 u# p) b<%name=Replace(Request.Form("name"),"'","''")
: Y+ x, A* L$ g, U* dtitle=Replace(Request.Form("title"),"'","''") 8 a9 Z3 r8 u  S
body=Replace(Request.Form("body"),"'","''")
; Q9 A# b5 p, b, F%> ; s8 G$ J4 ]! k
<%if name="" or title="" or body="" then%> 1 W5 W: b8 c7 ?' `0 X
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
2 j3 Z  ^4 P/ e: i" C( b( W9 a# w0 _. P<%else%>
, r% V9 R& I; }# {<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> - p7 f5 B! l! @; @
发表成功!<a href="index.asp">查看帖子</a> - i5 D7 [5 q, H: H; E, m4 Q0 f
<%end if ; z' g. I( f1 H/ s/ ~$ _
set savebbs=nothing
( B: \9 p0 k# s' k, O) {/ f# U% T* T%> 1 x7 O2 Z9 D6 T. z! Y1 G% W: R
( Z& l) D6 s' Z6 @8 H
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!   _" f; \7 v, G1 v( }0 w$ S2 @2 p
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
) N' J& }- p, p, w接下来几句:
( T# s2 L! S. S! p' Cname=Replace(Request.Form("name"),"'","''") $ s2 W3 D* X9 [& {# n7 q
title=Replace(Request.Form("title"),"'","''") ! \* n$ S. U& F: U  U
body=Replace(Request.Form("body"),"'","''") ; u- C" o& C9 ]& G# M. Z

" ?" P* i! B& @4 u3 M( D“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 3 K: K* U; x" p, Q0 A+ y
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
4 L. l& D' A7 h2 C如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 5 Z' E/ a5 t+ Y5 Z6 w# H* d
就是把表单中名为name的文本框发来的数据储存在abc123变量中 7 N+ K) H+ \* h- L0 ]

+ G. g! t& y( }+ k- b2 q+ i接着:if name="" or title="" or body="" then
5 L% G( j& [, h2 ~* U4 ]) b) E$ E判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
& ?9 a. ~' b' I; c“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” # u; t: u- f* d% v9 ~
该语句属于html语法,大家都看得懂的!
7 R* e& `1 L) ?  ]: J
/ A' R& ~$ Q, W"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: . l& T0 A. e) j$ Y3 w1 a: E
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
6 l' ^2 P' @/ u7 G( N- A: h发表成功!<a href="index.asp">查看帖子</a>”
$ Z# ?# `" k# {, b/ X
" Z( k0 T' p  y. R* o/ u"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
0 v+ B4 H0 G8 Cinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) , b7 a. i' {0 i; u0 z& M
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
& }7 _; }8 [: w: Avalues是“值”的意思 9 T$ }& Z4 a# x; i2 x3 l' p
就是插入向量name,title,body,向量用格式'"&name&"'表示 & D/ P3 R5 B* F* \6 S
) n: ~* u# u4 v  y
最后:end if就是结束if……then
6 c( T4 e7 J2 L. Oset savebbs=nothing可以说是关闭掉:
% Q6 p: b: d8 A8 k" t2 Kset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ' {" @# V, d; N0 |. `8 n

5 H0 z. j; X8 p1 a5 k$ ~- y2 ~2 @4 H: h( e* {" [
5、index.asp * R" Y3 m0 s2 C. @( D( ]5 C
源代码:
3 e' G' n1 A+ N3 n4 g<!--#include file="conn.asp"-->
+ A0 ]' y- s; f7 e4 o5 G1 k<b><a href="say.asp">发表帖子</a></b><br><br> ! D8 ^/ L! {3 u. e: X5 z+ x
<div align="center">
3 c) y! k5 o& `6 a<center> - i% V+ @7 H8 h" t' b1 y( y, |$ Y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
: l( ^- E; @9 j6 H- }: [<tr>
- |7 c/ E% a. w8 Y& K* }<td width="17%"><b>作者</b></td> 4 K( c/ f0 @$ n* f
<td width="83%"><b>主题</b></td>
+ D2 J' h3 F  r& `9 ?8 V8 f</tr>
- x( [$ i) {  b# V* N</table>
" s7 P% r6 [, \# Z" L, d/ ]$ k* d</center>
0 \  U, x9 i+ w/ z4 a</div><hr size="1"> ; I5 U( A1 Q  N/ t1 J
<%i=1
% z6 v( w, }  C8 lset showbbs=conn.execute("select*from bbs order by id desc") ) I6 H+ @9 ?/ A9 Q: g
do while not showbbs.eof
. I/ i, {2 O# ]%> ) B, V/ O, D, k, s3 B
<div align="center">
% G# Z) @0 P# c" }' Z<center> % U8 T- h2 Z, |' k/ T
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 7 t1 S* x, Z, @$ k& n% ~( {+ r
<tr> 9 B5 ?* P( b% ?! q+ N0 ~5 I
<td width="17%"><%=showbbs("name")%> </td> : S" |( j# Z" M8 m7 r
<td width="83%"> ! B9 H* ~! k& Q3 j% _6 F; M! v( n/ _
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
! R9 X8 ~; D6 y6 K$ A8 X6 t: w4 C</tr>
& k3 g$ K* C" w* m& V- w( N</table>
. R6 a! d+ Q3 m+ f</center>
5 O, Z% K$ Q6 K# ~</div><hr size="1"> 4 l8 l+ J% l9 U' d' X) q  N) |
<%i=i+1
* x  ^  V! z; m$ nif i>50 then exit do % f1 }# G! U1 ?" e0 R; |! \. Z
showbbs.movenext 0 M5 t5 L  l* x4 e$ a5 Q2 H; Y
Loop
5 d& {' o0 U% Q+ n2 ^4 Y1 M! Dshowbbs.Close ) y/ {- Z  I' o$ \; q
set showbbs=nothing
6 X% k1 g4 k- Y% @9 ^%> + D3 L! s. ~6 ]3 J+ }
$ r2 O2 ~  w0 D0 `! x2 ~
这个文件就不一句一句的讲了
7 H7 y3 W2 G- l1 t# T主要讲精华部分: ! C$ X6 t2 W6 ^! U
set showbbs=conn.execute("select*from bbs order by id desc") - @, e# n' F0 I* v7 q4 _( V
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, / }) S. R0 e7 f! ?
还有这么一句:<%=showbbs("name")%> ) p3 @7 s$ b& _6 }6 \( G$ j6 M
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
- c+ G1 X: f3 x代码中的i=1和i=i+1 0 c+ J  Y7 n8 Q, d1 _/ D
if i>50 then exit do
# _& D1 k% Z8 H0 `7 }7 x% Vshowbbs.movenext 7 J9 U- g3 F0 u; R3 m9 S
Loop
# d: ?8 U( F$ w7 t& |showbbs.Close 7 H% Z# a& I- E. ~2 m
set showbbs=nothing
2 T9 s( P$ q& U. X# d- V& h5 L0 D3 Z
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
) H  O4 ~; @! _$ Z( f& k* E  |' Pif i>50 then exit do中的50可以修改
1 s( K4 N6 V! `但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
3 ^( f4 m+ D' u& ^& q" p还有一句很有用的:
- x: @$ d; j- I: b( U" R# k<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
6 _) C" l* C, H! |. w  O& B! P7 e里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
' ~7 ~- ^* P/ P, ^: W等一下在show.asp文件中就有用了 ( B7 v' J5 O7 O0 ?- J6 [, L; @2 E
- x6 K+ u+ y; Q* w! I3 _. k  Q
5、show.asp
$ _! U$ {4 V( m  y源代码:
3 I% z' n" G! H7 R5 E6 a) W6 K8 Q- E, y6 i& |, F7 y! b
<!--#include file="conn.asp"--> . w& C% ^* t/ y+ V/ S
<%id=request.querystring("id")%>
8 w/ G! m- z( S, f9 Y5 `* [/ [<%set show=conn.execute("select*from bbs where id="&id&"")%>
6 y  b. h% A1 ^* z+ W' y: `+ A, C<a href="index.asp"> 9 S5 {  t+ g+ [/ h
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
8 u8 H1 {/ l$ g+ _# B<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
8 k; w7 U- G! ^<tr>
* _! N' B! ~, G<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
" Y. D* V1 ]8 t: ]  R7 w' b; b2 C' S<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> " ~% m0 ]" q3 a4 A! C+ f. }
</tr> ' U/ ?: T5 x$ G1 i
<tr> 2 Q; L1 F* Q* e- q/ e
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
) U6 A' Z  B* E% k+ [  ~3 a/ `</tr>
2 N# i# q' m4 f</table><%set show=nothing%> , C+ R9 X1 x% N) Z* M: m' F" }: A3 ?9 a4 o
7 c' M  U, z) R4 ~9 D
劲语句---精华语句:
; O  e* u# c- {+ Rid=request.querystring("id")
# k) m! E5 v3 o/ T9 t' b0 T在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
6 D+ q* Q+ v, Q/ h2 Hid=request.querystring("id")就是把地址栏中的id的值读取下来, 1 T- |6 |  e3 O, u
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ' W' V2 ~0 G' j
所以show.asp使用id=request.querystring("id")语句把数字读取下来 ) \5 y# `2 l# i+ x' W0 ^+ i
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ) M3 T- J) u. C% [+ O3 P/ r0 C
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 3 A5 U, I9 v: f$ c
最后<%set show=nothing%> . E# R- P4 f/ p' c; \$ \/ \1 }: j7 n' N

5 s2 f: n. U% N% o4 J7 y好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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