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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
" `$ Y" ~: z+ P& ^真NB..佩服ing .....
: w# V2 I4 [: h1 N大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。9 s# i8 t' G* F

; |# V4 E* f6 J3 y7 a同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 # ^2 ~7 S; r) b, O6 J6 g

) s7 a5 @2 h: l4 r& P: J3 P* P0 G1 J一、建立文件! & o& l4 V0 Y+ P, D0 Z! l; _
最简单的论坛也要有几个必要的文件,就是: ( K# l8 A. T% R# s7 M
8 o* A. N: g; M. e5 }; }
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
2 G" e1 K5 n' B4 E
7 [9 g# }/ X6 ~2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
; ?" z7 k; W; e* W0 a3 z2 K$ C, I; v& n$ {2 l  \
3、发表帖子的文件----命名为:say.asp : R8 K0 D* c7 e: q/ ]' v# ^  z

" y& h( m2 N* p" I9 I3 U+ X/ J8 y6 y4、保存发表帖子内容的文件-----命名为:save.asp ' o) H) L, y2 o# O: u  a
/ e( j/ _7 x' A& Y; X  k+ K
5、显示帖子标题的文件------命名为:index.asp
9 `# w1 ~2 Z1 _% z  G$ ^7 q6 `: Y6 B% S
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ( d; l# d* X1 y3 D$ o0 h

" j6 R3 b; q! B: D+ I& C6 S" @建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"   e1 ^9 }1 m+ L, x2 b1 o
1 i2 H1 o% F# t* q
二、各文件的主要内容 % @* K5 l1 F9 _

; |2 H: M3 ]9 u: O# m1、bbs.mdb
3 b$ A' z+ d9 V) x1 H9 w4 R8 |) K1 d" [! m& T
打开这个数据库,建立一个表,命名为bbs
" q& n/ d, D9 C  A# q6 t5 n1 v& `& `9 D% ~9 o% i
该表中有几个字段:
; K, b6 B2 K2 {. u! y. O0 w2 X5 x/ h# Z3 ]* ?
id(自动给帖子编号),他的数据类型设为“自动编号”
. `1 m) F/ N1 S$ @$ l. D9 r( W/ ]& x
name(用来储存发表的作者),数据类型为“文本”
: A2 k/ c# n- y. u6 m2 W
1 z* v2 x! q! N% X* |! I- {title(用来储存帖子的主题),数据类型为“文本” * ?  H* a0 ~, h$ S: Q, t
! a* p/ i7 d7 @+ K
body(用来储存帖子的内容),数据类型为“备注” ) v- s9 c! ?8 u# |0 r! t

3 @4 Q: z  V/ ?$ ~2、conn.asp
( l# g- y+ b0 G/ V/ z4 U源代码为:
! f& A- q* c4 f9 `0 o7 W0 W<%
3 f. f/ s: P' Z, T9 O1 b, A- Y$ S# \Server.scriptTimeout="10" / l0 a! k4 E4 u& b
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 1 h' z8 i3 n- V8 A
set conn=Server.CreateObject("ADODB.connection") + b4 C$ a/ |  r2 T( P# x
conn.open connstr 9 W+ e  u+ d' L
%> / m+ p  O7 J/ _  g0 z- E1 r2 O2 [

2 g: b5 m6 B6 h# M: V这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
; m8 Z% q0 ~7 j+ K
2 M: _! n1 k$ v: m+ h( O. H9 N3、say.asp
; [" e8 X# g4 D8 f5 K  i0 y5 Y! \, I% f; ^; @
源代码为:
0 U0 l$ V  P. x- n9 z8 m<form method="POST" action="save.asp">
( a5 j6 w' M- O$ F$ J3 j. D% a<p>大名:<input type="text" name="name" size="20"></p>
* {; ^8 @) I+ p<p>标题:<input type="text" name="title" size="91"></p> 2 C+ b, i3 ?- E; N
<p>内容:</p>
, J- e, A7 O0 q<p><textarea rows="11" name="body" cols="97"></textarea></p>
3 H4 g4 E% Y: E7 A<p> </p>
$ ~2 D; W' c& w/ c% l<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 6 l( D+ b$ S* t
</form> ; d7 h7 r) y- F0 W( m
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 1 {6 }  H) T, t% U. h0 R
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! # X0 A. b+ g& X. M# Y& _

- K) G0 X, M1 c: l) Y7 b9 ^4、save.asp . a! |, S+ l% m" z* W3 z8 \

, ]+ Q! I7 y3 |+ r- X( D  H7 Z源代码: 2 x; c: l$ E' i4 {6 \+ A/ j
<!--#include file="conn.asp"-->
! ?; m4 G8 M( t! m7 k7 r<%name=Replace(Request.Form("name"),"'","''")
1 D1 U+ _0 ^, w) O7 rtitle=Replace(Request.Form("title"),"'","''") - l" O* x' r7 w
body=Replace(Request.Form("body"),"'","''") / _4 f! s% X+ u& \) F- c
%> + ?3 ~) N( H1 d# T9 |7 Y% _$ L1 S6 s
<%if name="" or title="" or body="" then%> - N% E( s, X5 \; k; w
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
  W. Z; t- w; r( I, J<%else%> ! y$ v% J% }2 u9 C. l/ T
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
5 S3 @$ A/ f4 L& ?2 r, [发表成功!<a href="index.asp">查看帖子</a>
/ |# {( [3 H. i( O+ ^6 x( u* ]- i<%end if % U7 D4 h+ L% x( Z( N+ x6 B
set savebbs=nothing 6 E3 s( a/ R- n1 |. ?4 D7 }, Z
%> ( U4 ]6 c2 U' y. i

, s0 ?& q" J2 @9 Z0 N' ?第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 0 d' e; j7 o; e& B
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 3 M% z4 F$ t3 X- n. b
接下来几句: + P: o1 W* p) L5 Z/ [  H
name=Replace(Request.Form("name"),"'","''") ) D7 `' n6 S" u; Y# L
title=Replace(Request.Form("title"),"'","''")
& f1 ]+ f4 z" i( A1 [+ n: Hbody=Replace(Request.Form("body"),"'","''")
8 P* ^, X. [$ B+ c$ T* F
  F" X( V$ ?% W1 d3 s“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ) y. Y5 L3 \* F/ T
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, & Y, b( d& r0 e0 `" i
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
# o8 O+ m1 E2 u就是把表单中名为name的文本框发来的数据储存在abc123变量中
. M6 _/ ?3 g6 i- ~, i0 f
9 m8 w2 o5 P% J3 `+ @接着:if name="" or title="" or body="" then * b, {; J# u( p$ S% |5 J
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
/ f  k- {* }) D“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ( U* Q2 K$ U, _' V7 P4 p; m6 T
该语句属于html语法,大家都看得懂的! 1 \3 o* c! q$ j# F( g% b* w! u
8 e' l' v0 ~. [6 S: H/ p% X
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: $ I' o+ y6 i6 U; r/ F  h( d* @& U
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
9 G3 K" r, j+ a! A. ^* y1 K发表成功!<a href="index.asp">查看帖子</a>”
( U2 a6 g- C7 U) o7 t
1 V1 g( D8 B+ b) {1 V) s, |"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
& m8 g7 V: |0 t3 G0 D% P( F% w: Uinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
8 k0 H; t: w0 f, j0 h% o5 A/ w中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ) k5 Q+ N7 z) p
values是“值”的意思
* _' c! a7 p8 I' I, t7 i就是插入向量name,title,body,向量用格式'"&name&"'表示 : Z4 P+ a( {5 s% `4 c
& z  {# X+ V5 L, w/ D
最后:end if就是结束if……then 9 u: V0 x0 S  S) H, L
set savebbs=nothing可以说是关闭掉:
  Q$ m0 T3 i; r4 Jset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ; C& g5 Y) c# e, E) y' z; `; D
5 S% K1 n3 B2 M4 r+ |

+ I/ [0 E6 T' d% {6 C5、index.asp
1 v/ v- i# p& w4 t/ a/ t源代码:
  g/ R8 e5 i2 Z- M: n, v, L+ t<!--#include file="conn.asp"-->
( n$ y# o& U* k/ G' w' G0 u" |! {, W2 q<b><a href="say.asp">发表帖子</a></b><br><br>
8 n- i+ @$ m& Z! D' J<div align="center">
5 o* Y; c- L- m* k3 G$ C<center> 5 _+ X" P' H! R
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 6 A7 P! r+ t' T+ ~* O8 w
<tr> 6 e% \+ V7 k2 b; e  I
<td width="17%"><b>作者</b></td>
8 f2 T; ^4 o+ q4 O<td width="83%"><b>主题</b></td>
3 f/ F, ?6 B4 B</tr>
3 W7 A: R( [" d# j</table>
* E, W0 E0 Y( ]</center> 8 q  B7 E9 _" R9 ?$ |3 S, L1 ^
</div><hr size="1">
  k9 w+ ~$ [. C6 d<%i=1 " v. f3 e% ]8 e& Q$ @
set showbbs=conn.execute("select*from bbs order by id desc") 0 I. R9 y( P- I, r
do while not showbbs.eof
. E+ e; r. r) ^5 J5 q3 u- L5 n%> ) K7 r' D, x% B4 E/ a+ H$ L2 ^
<div align="center">
6 [; b+ j/ v* W) i5 g1 `1 X<center>
! r5 V/ j# I, r7 B<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
# \# T, E+ t- Y5 ~<tr>   Y8 t/ j- K" T' P' r) i+ T  |& ?1 s
<td width="17%"><%=showbbs("name")%> </td>
) M( q9 i4 \8 A1 |# c* t, x<td width="83%">
- e' S0 h: `4 q+ y  `0 c<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 1 s6 D! u4 n0 ]7 x, r: ~6 ~
</tr> 5 d' u9 ?9 @' R) S/ w9 s! z: x
</table> 0 M# i+ ^1 |& M9 v  E
</center> / q: {1 E& U- g5 R5 Q1 B4 e! j$ S
</div><hr size="1"> # j5 Q" d8 b& ^* t7 A# b& d
<%i=i+1   G/ Q# i4 ]# l+ f) X  W' E# f
if i>50 then exit do
/ d. C: F3 ~2 I2 \4 tshowbbs.movenext
$ T9 ?, t  T1 B+ l! w* V3 h) rLoop
; Y/ l9 g0 `  S; d$ m  f' Z/ Q4 }showbbs.Close
6 \5 B  ?! u6 w. G9 M6 }set showbbs=nothing " l# d* D5 [) k1 i; p
%>
: ]6 I% |, t" S/ d, ?
5 x! u! O5 P; b$ o% G这个文件就不一句一句的讲了 2 \$ q1 d3 |" i4 }0 o
主要讲精华部分:
- L4 g4 [5 n$ J" \; c2 E0 Uset showbbs=conn.execute("select*from bbs order by id desc") 2 Q' Y7 }* ^+ D. G
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, * Y' n( ~' |# W0 O
还有这么一句:<%=showbbs("name")%>
" _: J4 r1 K% J5 a7 U就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 6 K6 ]' z5 P& [8 J3 d
代码中的i=1和i=i+1
0 e4 M9 g/ f- U5 W( T/ V* \8 fif i>50 then exit do ! w: F! t8 L: j1 K& y6 D% O$ R
showbbs.movenext
. V7 t% F; u7 n% h) Q( B+ ^, O1 tLoop
7 t4 x" m$ u/ m( R, \- c3 vshowbbs.Close
4 q" @7 l+ ]" Q* {6 H0 J" Kset showbbs=nothing
8 p8 T+ C( w% R6 u0 R' I' p
! r5 T8 p  r$ i  G6 h3 w& _% M这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
* o1 v& g7 e4 l- _8 Oif i>50 then exit do中的50可以修改 ! A; t+ L  R( ]7 {9 ?
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 # {3 w- R$ \7 X' e5 ?! h0 E
还有一句很有用的:
9 c1 g7 v% m( }<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
9 O1 F0 y& m" g; J! t里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 5 @, X0 u  v" F- o& ?
等一下在show.asp文件中就有用了 * q& v) J* O4 W. P9 ^
5 Q  g8 ?( }2 N* S" ?9 O
5、show.asp 5 O7 n+ E4 W: |8 t- R& J: q
源代码: 0 q3 }" v# v; G4 g8 {& W, M: @

+ D7 o1 i4 q, y( [<!--#include file="conn.asp"--> 3 p% J5 ^' r$ w2 w' }1 Q3 |3 d
<%id=request.querystring("id")%>
8 X  X2 J; j/ d/ a$ N8 ~7 x<%set show=conn.execute("select*from bbs where id="&id&"")%> 9 S6 n. {. k( I8 r
<a href="index.asp">
, y8 L+ x- Z3 @! G5 }* `( d* G<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 4 V& h) e- R1 ^0 m3 y
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> & P( I5 ^4 V1 h. P- x
<tr>
; Z% d; ?0 l) Z7 h- p/ a<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 7 w8 }5 A1 `& ]2 M& N+ r/ L9 |
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
7 z! s! P: \$ ^! z</tr>
3 V, ~) V( u2 e' E3 I<tr>
2 _1 L1 I- H/ M9 \0 ~<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 9 c( \% O' [  P5 D9 a. O
</tr>
8 e9 n' o2 @" C</table><%set show=nothing%>
% |) F- S: e* L) N/ [7 k, j
* e  A* {) e2 u- F4 E劲语句---精华语句:
2 f# q! B6 k: f* L5 c* Aid=request.querystring("id") 9 [( O8 K8 d- P2 |- c5 E, @0 v
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
% x8 q5 u* P: w( oid=request.querystring("id")就是把地址栏中的id的值读取下来,
4 f- w2 v. |+ e2 B; y8 _4 m因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ; Q! Y. B* L; u, C$ U% u5 E
所以show.asp使用id=request.querystring("id")语句把数字读取下来
5 E, A/ V0 E, x9 Q于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ' d2 Z' F. r/ Z3 U/ G1 i+ N
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
7 T+ r( B; M% o  ?6 X最后<%set show=nothing%> 2 D8 d% x, x6 X( j2 G& M
) Q$ n$ o2 H6 g
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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