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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西! U0 t( |# Q+ y) G1 B
真NB..佩服ing ...... z# k+ p. `+ D
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
9 q+ f* n# g  i. j5 `' G) g
9 b3 m/ g' q2 Z/ ?7 M& e同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 8 q9 l7 {3 x6 |9 r$ o, }3 {9 [
' X* c5 ^% e& n6 D/ `
一、建立文件! # f( h: _6 j6 H. z+ \, {& x
最简单的论坛也要有几个必要的文件,就是: # P3 y5 a; Z% J9 I/ M( \( _7 m
1 w7 Z" K1 @! M+ l2 J, X* D
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
8 S8 h! Z+ {; F# A1 b' Q" o* X4 f; b8 K. K9 N( I5 j; t
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
# A  T; l& w8 i4 Y" @2 f' n7 l4 @7 l3 A" |4 ?' g- c4 B
3、发表帖子的文件----命名为:say.asp 4 U! L; H3 ~% u* y$ c, ~/ O

+ ^8 u0 W3 E5 n( T/ G4、保存发表帖子内容的文件-----命名为:save.asp ' ^2 O2 c, |9 M6 a/ x

/ }- U- W/ t- S0 }5 b5、显示帖子标题的文件------命名为:index.asp / d! {7 j0 J7 m4 Q

( C) C) h! j0 t7 n* d6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
4 @1 A  Y1 l4 A" o  @- a) l% O% {& a8 z7 i* L4 P
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ( }5 t5 ]: `" Q) D
( t) ?# t$ k- L8 |' \: T
二、各文件的主要内容 7 V. `0 X- H( i
4 p8 C9 e6 D/ p  _
1、bbs.mdb
" _" A9 o1 X% m: ?. h$ s" i5 x4 }
& W! Z5 c4 a1 g7 x- b打开这个数据库,建立一个表,命名为bbs 2 _: b+ E; N* [) h& y& s

: L5 I1 I$ a# f" n2 r: D/ P该表中有几个字段: $ K$ ^) N* l9 g& R; w

& e9 [/ r. w) P- e9 p( C, c8 nid(自动给帖子编号),他的数据类型设为“自动编号” ! t8 Q: q- m* B

' e8 Q& B& c: \3 v8 \6 ^' Uname(用来储存发表的作者),数据类型为“文本” . D! S. C4 c0 |! Q: i: `

. ]: _1 N8 Z0 n: _3 E* F0 v8 P# {title(用来储存帖子的主题),数据类型为“文本”
, J" W. G# B8 v) N6 c( S
/ G9 ]  w9 M7 n* kbody(用来储存帖子的内容),数据类型为“备注” . Z; b* S- T/ g3 F

2 E- @9 P) v6 g  t2、conn.asp
: Z! _; r. o4 g1 j源代码为:
0 e* O# f9 a! \$ ~" F<% 6 I6 z  B, A  z& N8 z6 J' v" m
Server.scriptTimeout="10"
' d* {: G  v  Y; C2 ]# ^1 |9 zc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 7 r: A$ N& B0 K# L, x' H7 w7 O" U
set conn=Server.CreateObject("ADODB.connection")
/ d1 Q) ~" R% c$ w" m9 v  Pconn.open connstr
3 ^. I% h! C3 s/ h5 u0 X: j%>
1 D  d" q4 Z# w, Y$ o: D4 A
  j0 L8 K' D9 ~6 ~9 V! {) E6 t这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 5 \/ a; U7 p/ t$ L5 `

4 h) c) u0 L: T5 k+ `3 X1 A; [3、say.asp
( G; H. N8 s- j, W' a: T% d5 E
& R2 Z/ O! r" ^& F" ?/ j. U$ E( r+ b源代码为:
; }5 [% P+ E9 j4 c; T- o9 ^<form method="POST" action="save.asp"> 6 g1 y- r! B  s7 p
<p>大名:<input type="text" name="name" size="20"></p>
- o0 u. H6 {' \+ Z( S<p>标题:<input type="text" name="title" size="91"></p>
# {+ W! F/ i# M; g" B: Z8 b  t- w<p>内容:</p> 8 ^7 I1 A+ Z, `. Q
<p><textarea rows="11" name="body" cols="97"></textarea></p> " x! r( x3 @& M" b6 Z
<p> </p>
2 `) ~. L2 l8 v  ^3 q<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
1 S0 [" e. ?4 A+ |+ V</form> * e" s/ l9 O6 w* U
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
; G7 m; V+ C+ W不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 8 u) N2 [2 Q; C& A3 I2 O
# P+ Y! c& R6 `5 F# W1 v, V5 I
4、save.asp ' C: p/ g( Z& U5 P/ T  ~+ }

3 q) q5 J9 n& X, `9 `3 T, N  z- Z源代码:
! {8 O- ?( }8 |" k# p<!--#include file="conn.asp"--> ' n; ~$ |0 o$ O8 ?. x
<%name=Replace(Request.Form("name"),"'","''")
. u* f3 G9 l9 r3 ]- s0 Mtitle=Replace(Request.Form("title"),"'","''") + p; B4 `) {2 W- k- Q  U, E) q& O/ K
body=Replace(Request.Form("body"),"'","''") 2 S1 [5 j; |7 w) J/ X
%>
5 r  E& C3 A, J<%if name="" or title="" or body="" then%> $ t2 Y, x. b2 Z5 l% F
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 4 r9 t6 L) t6 l8 ^+ A4 U  h) B& k
<%else%>
4 N! T1 W0 r# Y: e<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
* P/ T- z+ g6 A3 ]' y: h1 T4 w3 U发表成功!<a href="index.asp">查看帖子</a>
2 V8 G! D& q2 t: B<%end if
6 K6 p' ?! H" g3 b2 vset savebbs=nothing
' G/ _9 |2 J9 w; S6 p%>
* M3 D% x# ~% O+ Q/ d8 q6 m% J9 c7 `  i+ p' f* B
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! . z# v" k5 F! ]6 I
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ( B, F4 F% U. ]/ ~
接下来几句: % q4 e5 Q) X+ w. \' e5 ~' ^; y
name=Replace(Request.Form("name"),"'","''")
; j9 J# X! |% p! {4 {title=Replace(Request.Form("title"),"'","''") ; A/ T: \7 D$ s5 ^( @" e
body=Replace(Request.Form("body"),"'","''") 8 g6 \3 n1 {8 X6 v  l- d
, c, K, q" e- V" L
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, " d5 ~  j9 J' z5 [, }
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
: F. _. h/ n& [2 a- h1 D* ]  L如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 8 w/ c# [6 \! L7 l% l/ T
就是把表单中名为name的文本框发来的数据储存在abc123变量中 : `4 R: y4 `& Y+ r) [# n
& J1 o# B7 Y! |: E! N) y( w" }; f
接着:if name="" or title="" or body="" then * V- u! U. f  D& P) R: }
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
: u2 E) R+ z* |0 e- }- z; I. d“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ' k$ |/ O) D( R* w0 T% Z/ i, `
该语句属于html语法,大家都看得懂的! ; L" k- K6 ^' k9 G1 `7 K

: V* v6 p* D- O% d- v- f% i6 }0 I"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 5 J! ~& k, j2 ^
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
9 M7 y6 H: j7 `5 y3 O8 L发表成功!<a href="index.asp">查看帖子</a>”
* q. G. D% f1 p# [5 Y' I
! c# }6 W% A1 J9 l1 T"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 2 A) r& L9 f7 c2 T' Z" v) r3 r# i: [8 g
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
( P2 e2 @: U; O0 I中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ) W1 `; \( v3 J3 ]) n& W3 t' n3 U' v
values是“值”的意思
1 _8 f- _$ Q9 A: O就是插入向量name,title,body,向量用格式'"&name&"'表示
6 m; N; m& T' L/ [7 l3 b, w( @3 V3 G3 k) \* u' H- T: r- V
最后:end if就是结束if……then 4 S2 F; P/ }  _# G
set savebbs=nothing可以说是关闭掉:
6 u9 P* V2 b+ _% G/ Tset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
" c% f) ^8 q9 K3 @1 t5 H- K6 A- X1 b, d- w6 C, D

" O. f" R& z4 T$ k5、index.asp
7 Z5 {! y0 I& J5 H5 I3 L0 b7 u; }源代码:   P& w! v- o3 y8 O2 \- a6 J, E
<!--#include file="conn.asp"-->
* _7 V) L' d4 u" M<b><a href="say.asp">发表帖子</a></b><br><br>
: Y0 U2 {4 D  o$ o( U# [" {+ g<div align="center"> ' Y, C/ H5 Q: F0 p
<center>
- g8 T% {6 P! z9 U! v& t  U7 E+ a<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ( u  I* l+ I& z1 W* K
<tr>
: D& J4 l: m+ M) g# q* d: C& z9 k<td width="17%"><b>作者</b></td>
3 w6 |6 T& _1 r. T$ S$ @<td width="83%"><b>主题</b></td>
$ d4 P, b/ N( d1 ^</tr>   _1 x+ W) {$ m' G* T
</table> 0 P& \3 w( y4 S; R9 `
</center> / L/ o  A* ~, _
</div><hr size="1"> " J7 ]/ W, V7 ]  W% j9 o  O2 W
<%i=1
! p' E/ G) i" e8 E8 a9 uset showbbs=conn.execute("select*from bbs order by id desc")
, s0 ~+ ~( l2 T) z2 h* @do while not showbbs.eof , C, X# u; D2 e$ P; }4 `1 |3 q0 ]
%>
" ]# w5 G3 B* {" @9 c% d, A<div align="center">
$ P0 J1 t0 @- F$ Q0 N% z( v; ^<center> 3 {" t& D! P* Z2 p; b+ f
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 6 r) ?8 ~  f6 f( ?+ o
<tr> : c! G  R( B, e! M' l
<td width="17%"><%=showbbs("name")%> </td> ) K. \& {- |1 {% `: H
<td width="83%">
+ r( E# C5 Y/ t: ?<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> - \& s/ w  Z; y/ E' U# j2 A% h( x+ `
</tr> & S/ b% [2 n0 V$ @8 z- J
</table> ) {# p2 m2 Y7 x6 D* Y( K
</center>
7 c7 L, S* F0 t) }; c</div><hr size="1"> + V& t# F  q4 M4 ]; v7 z! T3 @
<%i=i+1 ! Y2 r' i" u. ?3 E
if i>50 then exit do # X( I7 l  B/ ]6 w
showbbs.movenext : n: r4 A1 j, x8 S) E. C2 L; `
Loop
% ]7 [* Q& y9 K; x7 Bshowbbs.Close
! A8 u- B& K8 O2 Nset showbbs=nothing
, m9 K% b, @- B" d+ i& @%> & k+ D' E. G# ?& }: a' N

8 C- U8 I8 e# J4 I7 n9 |' w% w这个文件就不一句一句的讲了 . r7 S: ?! l' N: J
主要讲精华部分:
: s% g$ h0 {& |6 Q8 eset showbbs=conn.execute("select*from bbs order by id desc")
+ j3 b& |  T- F意思是:向数据库中的bbs数据表查询数据,并以id排顺序, & ?1 Z" a3 [) J
还有这么一句:<%=showbbs("name")%> # m' }* w% `! g6 y- U; t
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
* x# r  D1 T8 G, o7 e代码中的i=1和i=i+1
9 D# H! K6 L- q) E7 Pif i>50 then exit do
& u4 u9 I! u6 `showbbs.movenext 7 U  u& F4 i5 z! N, \
Loop 9 B& V! M3 d  @( i
showbbs.Close
, }) ^; U) k! Nset showbbs=nothing
* t& m/ ?/ L6 x/ d4 @4 i5 F7 ?& Q! C. {; C5 u
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! ( r# n. a8 t) g% v- N
if i>50 then exit do中的50可以修改
( W: b4 V5 W( n7 l8 q5 t但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
# y# f5 {- r& {! @6 j& A: Y还有一句很有用的: ! f6 @/ Z. B& v
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
- ~/ A, h, M, G  `里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, , J7 t7 x2 _: i: \& E
等一下在show.asp文件中就有用了
; l$ q2 z  V+ L. l$ b- [! j7 s9 c5 r1 p- ^
5、show.asp
" ?) m+ y1 X' l& z1 ^3 t& Z源代码:
8 K8 \' k+ W2 W( `$ q: _6 T
( C" c* K* o3 p<!--#include file="conn.asp"-->
- T  V- C  N: W8 A( Z, C- [<%id=request.querystring("id")%>
) p8 e! W8 p: k2 ?<%set show=conn.execute("select*from bbs where id="&id&"")%> : |/ O# {; q0 G
<a href="index.asp">
7 j  L- ^" N! I0 t' G<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
, t5 C& \6 s$ T: ]<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
; G& w) N' Y- N2 t# E$ V' ~$ Z<tr>
2 ^- m( o- W2 e0 L. d4 }<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
# `: d0 d& }. d+ `+ f<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 9 d( ?9 ~* V  X$ d; U; s; L, C
</tr>
- g0 O  ~' @9 Z7 n* |<tr> & R: d0 t. R8 {4 S& \! L
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
9 p6 I0 l8 H! u) }. }+ s' Q: a4 K4 o</tr> 1 S: a. r1 Q7 }+ V; ]% c" ]% t
</table><%set show=nothing%> 4 d) {" ]  z  U( E: M- t  x  R
: P; h0 @9 m0 [: g6 @
劲语句---精华语句: 0 Z) P( E2 A( K  @4 ?7 E
id=request.querystring("id") ; Q# d# D/ `" e2 K( G  o
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, % ^+ T/ y8 Z- B" Q$ ^
id=request.querystring("id")就是把地址栏中的id的值读取下来, 6 w0 B2 h" s/ z# W6 L' P6 z2 a
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
' H3 R3 \, S9 D) r3 Z# ^$ f2 N- @所以show.asp使用id=request.querystring("id")语句把数字读取下来
  g/ C. J# i& `* I) j于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
' Q6 r; q3 }7 d1 A0 n- w1 f& r向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" , |. a$ o: o! g4 ~
最后<%set show=nothing%>
/ A  M$ U$ D! d" Y2 h# I1 ~# W) f3 I
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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