返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西- k- ?, h- i( l4 a* m: R
真NB..佩服ing ....., Q% M. j- M* m) \2 q
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。6 Y% \# C' R# S$ c7 h
$ }! a8 t% r2 @1 Q9 ^6 G6 ?9 z* J4 Y
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ; ~2 f5 S: d3 R7 n3 ^1 z9 j1 [4 y* n
2 O; T. r4 Q8 g$ w5 w2 }  @
一、建立文件! $ V* X" i6 d2 z, w- X
最简单的论坛也要有几个必要的文件,就是:
0 g# l' `) E% j/ L: G2 c: @. C7 x& F6 f' T" h
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb , A, ]% k& W; v) z" x
, A, c: H* K+ e
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
0 p+ M2 a9 X5 t5 }! a( t7 e
4 t- P: M, f. c  f3、发表帖子的文件----命名为:say.asp 4 y  J) h( {& T8 p7 b
/ Q8 O2 K- n4 E
4、保存发表帖子内容的文件-----命名为:save.asp / |+ Q  I$ ~; D
% j7 C0 V$ M( ?9 _% U9 N8 o) a
5、显示帖子标题的文件------命名为:index.asp & X; u$ B+ ]* H8 ~3 ?( `# v) ?& J& D
& f6 L" W% G( C. j1 h
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
. r# \1 G/ Y% [
8 _+ g: M" I- ^3 ]( ?建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
" y* M2 G5 k( ^" G/ C9 w. _+ p
( E4 `! ^2 ?) m1 {) B8 A二、各文件的主要内容 / a$ n& r8 `7 I8 y- g1 s" k4 z

* f& y/ y2 u; G0 `# d- ^1、bbs.mdb " M6 _* r$ l* U9 s
  w$ S! |9 I4 t9 G4 V+ a% c
打开这个数据库,建立一个表,命名为bbs
8 @& D+ K- `! r
/ ^+ ~" F0 `, v+ W2 |该表中有几个字段: # o, Y: t" ?% v. {1 Z' m

( Z+ F* Z4 m& A, k+ d2 }: m  |id(自动给帖子编号),他的数据类型设为“自动编号”
  d* l- C6 q& r- e& h
* Z2 e0 n7 {+ j! I4 M4 _name(用来储存发表的作者),数据类型为“文本” - K; y5 L+ ~4 N, D

3 w7 Z2 v1 I6 _7 _title(用来储存帖子的主题),数据类型为“文本”
" A: s, s2 j9 q
( D5 o2 m/ |: n3 Abody(用来储存帖子的内容),数据类型为“备注” 6 G$ z  y  E/ n. p' }) D
, X3 E" t& l* R! m2 y6 n$ S
2、conn.asp
: c! a) d  y" ~7 k+ [& F3 z! O源代码为: 6 C7 Y- _7 |% r: o* ]0 Y9 D& ?! W
<%
& O: l5 L# a6 I2 ]2 @Server.scriptTimeout="10"
4 _! j" |! D% ^c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
4 O" [5 H) j( P, x! Kset conn=Server.CreateObject("ADODB.connection")
* G( Q3 z( a4 @conn.open connstr
( U! Q" u, w& O%>
# }+ A* j1 t# e+ X7 n
: N* q& R/ Z. e4 B这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 0 M) J! {8 Q) f! d1 X

; X$ r% @7 |4 R! Z3、say.asp
, D; x' j' q7 }. X9 R9 k) I% A1 k( C5 L& ]+ |
源代码为:
, S0 [1 t) H; |<form method="POST" action="save.asp"> 5 W2 T/ R8 L0 B1 k) D
<p>大名:<input type="text" name="name" size="20"></p> 7 ~4 R2 ~1 w! l4 u' j6 ]8 t  z
<p>标题:<input type="text" name="title" size="91"></p>
# \  t' f$ K, n* y, Q9 _8 O: v<p>内容:</p> 8 n) ~3 d4 Z( N, `# L6 y# e
<p><textarea rows="11" name="body" cols="97"></textarea></p> 2 M1 D; `8 j# [. m! ~- @! q) l& z: P
<p> </p>
8 r5 g% P  D5 l: j2 F& \<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
$ ]+ j5 j* _. a, \7 O</form>
: `5 q* n/ n7 }% Y- h" ?( x大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 4 c  L4 X, q. q, v( r6 o
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 2 Q5 N4 `1 k5 N$ j. e0 b( e

2 k: U' C' H- \0 G+ Z, S5 v9 m. d% ]4、save.asp 9 `7 O: A0 t% A2 t6 C: u( G
3 z, D7 k* c/ z! x) c8 i; ~* O2 f
源代码:   r1 S7 Q5 y* |) I) _. E* N# L
<!--#include file="conn.asp"-->
* X+ o3 p( G* I; H<%name=Replace(Request.Form("name"),"'","''")
3 X8 k$ B; z3 U0 \title=Replace(Request.Form("title"),"'","''")
; H# i5 ^/ p3 {$ e8 ubody=Replace(Request.Form("body"),"'","''")
3 K* ^9 _% @; c( A7 S%>
% W0 F: _, W( ^. h<%if name="" or title="" or body="" then%>
0 f+ A' n/ S' z; V4 n. V请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! . f7 ]4 \" Q8 E+ Y5 ~4 H/ b
<%else%> 6 a0 i6 b2 ~- k% G
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
4 a1 B  W3 F5 @% Y发表成功!<a href="index.asp">查看帖子</a>
$ U5 n) `1 i( N! e- J+ \<%end if
$ ]2 h! V8 j" }9 Aset savebbs=nothing 9 ?' o" _2 z. R+ l
%>
& ]$ U; G- U- n/ ^- J& @1 Q  W/ w2 w
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! . a3 U4 w& d6 L* s8 S4 P1 c4 {! v
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
1 W; V! R  u: Z- c& K8 v1 w4 O接下来几句: 6 ]& e! q3 e: T8 y2 b; [$ q: Z3 Z
name=Replace(Request.Form("name"),"'","''") , |) a. a$ \/ c$ J
title=Replace(Request.Form("title"),"'","''") * @& ?; |% a2 W+ o/ x6 R3 h
body=Replace(Request.Form("body"),"'","''") 9 T9 C3 l. k3 j# s
, I0 P' `4 s0 k) ~' ?
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
6 i! K. e9 Y+ b# w4 V3 k# f* b( B而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 7 S& l! Z8 B& M
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 3 f6 Z, X$ ?+ j. ^* z% O
就是把表单中名为name的文本框发来的数据储存在abc123变量中 9 A$ i6 r( y6 W! a
( p7 K) u: ~7 F2 o8 z$ }2 o, e" Z
接着:if name="" or title="" or body="" then 0 Z- J" m$ {: g5 {: `8 Y. J# o
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:   h+ K/ R! [. A( @1 W
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
7 Q+ `5 L0 P- L2 a5 u, x* Y该语句属于html语法,大家都看得懂的! 7 c' k% R4 o* A& P3 v8 R
3 b* v2 @' y$ m# T6 H
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
+ X7 }  c. {( \“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
, f' d2 A$ K  e5 B发表成功!<a href="index.asp">查看帖子</a>” & \1 T4 X7 b, |% ?" O, @; p
+ ]: B% @" Y3 b# Z3 |
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
; e6 N* ^' g3 y* G  s, ~6 f" binsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) / H$ p9 \% ~, t3 F2 W
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") & _$ O! d  @8 p1 [1 z: ]
values是“值”的意思
2 }7 m+ _5 o1 g7 z2 g就是插入向量name,title,body,向量用格式'"&name&"'表示
5 i8 r* Y# G7 ~  I% v
3 F1 ^9 f, V. T& o. j2 X最后:end if就是结束if……then
* U4 Y4 J) u: l  |set savebbs=nothing可以说是关闭掉:
& w' N( }" P8 Z2 y! F( Wset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") $ j! A/ U- c+ A/ D; R

) @+ N4 R6 P. Q3 R, @2 F
3 d5 v5 K, e9 f9 D* {, B; T. X& m5、index.asp 0 Y7 s/ m9 l8 m' x$ B
源代码: ' O! h) B2 _: ^8 A8 ^; F
<!--#include file="conn.asp"-->
0 o: H) B0 `8 v" P- I* Y<b><a href="say.asp">发表帖子</a></b><br><br>
; W: ]# ?4 y5 Z: K2 ~  u; x- Y- D8 s- A<div align="center">
3 C$ S4 N& x/ \7 ~  y; w4 a7 c<center> 3 d' x" P6 s% N) E6 O0 b
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
3 @6 [# \( K/ i<tr> 4 z3 T, w( o: Z: a1 `1 L  F, P
<td width="17%"><b>作者</b></td>
( G8 s3 [6 d7 @2 s7 x+ `<td width="83%"><b>主题</b></td> & t& t/ f5 c3 \/ @8 A# g4 r! |; B
</tr> # x% Y% e! \" \$ d6 T/ X8 V
</table>
9 Y9 N8 Z* v2 F% d: F$ m* Q</center> : M, q+ [8 J  R' Z: @
</div><hr size="1"> 5 |$ j2 t% @: @5 j* f6 {
<%i=1 : {4 C  A6 ]5 x- C, W& j
set showbbs=conn.execute("select*from bbs order by id desc") / ]- A( H5 S" R! k
do while not showbbs.eof
' O, |' O; {# T) p! L%>
. Z) n: n9 m: T2 z% O<div align="center"> * B7 q# z4 c% p( n
<center> ) ?) r- Z- t7 G. h7 A) }! @8 S: e
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
1 {0 J- t- W' {5 V% m( G8 _<tr> 6 n7 D- J+ I5 a. o3 {8 ?1 S0 H
<td width="17%"><%=showbbs("name")%> </td> - z+ s: }* T. A: ~' X  Q/ u
<td width="83%"> 5 t6 I: m3 n! A2 O8 F  q; ?
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
5 @3 M. ]; f$ O! T" \+ J5 U</tr> / H6 I) t. D+ F9 y3 B1 e4 G. a
</table>   l. b* }& h3 d) q1 A* Z: n
</center> & x' t0 m9 Q( R7 D# e
</div><hr size="1">
) f8 g* c( b, j; M' q1 R( q<%i=i+1 4 [3 q8 i' U+ ]
if i>50 then exit do 2 v! t9 o2 B* ?+ m' r
showbbs.movenext % P, t: n8 C; w) q3 Y
Loop ; ?, D' A) m( x1 X( p; o
showbbs.Close ) Z  v+ {4 t) d4 b5 p8 y
set showbbs=nothing 3 U8 h" b" }# P9 x. O9 N( i* ]$ s3 C
%>
% d( v, I1 ~6 E
% j: |5 k+ i4 z* W0 k这个文件就不一句一句的讲了
  g) i6 {3 Y2 [# q& \- P0 `4 `' X主要讲精华部分:
* W# |( I9 \* q* H7 eset showbbs=conn.execute("select*from bbs order by id desc")
0 O' p: Z0 B  a, j  f  T意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 3 n7 ^4 H1 I# n# W/ H
还有这么一句:<%=showbbs("name")%> 6 i6 j1 U/ ]  q0 c
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
0 x* r. C! i- a代码中的i=1和i=i+1 7 {4 B3 h1 o4 w; A7 c! O
if i>50 then exit do 7 U" w# H5 }0 W. J# n. q# |
showbbs.movenext 1 \/ ~! W5 }$ D4 I1 _
Loop + _3 H) S! R' g
showbbs.Close - ?* X6 g4 @, b* [) m$ J* m
set showbbs=nothing 9 r. F. o) X- H
, q- r6 Z4 L& J) ~& l( A# a6 i8 k
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
6 M+ O4 i% {: iif i>50 then exit do中的50可以修改 % V5 r$ M) ~( W' B% ?) u
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄   ~; V/ j" {, x2 i) Q! w
还有一句很有用的: * y, w  u2 ]' y' ^8 r" {  [: V
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
* N% F1 |* s6 [- k4 G& L) Q里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ' v  c% \5 v) n* M
等一下在show.asp文件中就有用了 / o/ V, _! l  G

+ @1 r, v3 S! B9 W% _! m, B5、show.asp - E  e( v1 g! e  e$ D" @6 z
源代码:
' n, Z4 r, c3 o# s2 c3 z7 b, t. ^$ I# l8 F: z
<!--#include file="conn.asp"-->
9 b5 z, I' E% p<%id=request.querystring("id")%> # o- u9 ~5 T: X% x+ u
<%set show=conn.execute("select*from bbs where id="&id&"")%>
+ p6 Y' S' d" F<a href="index.asp"> * X) f* E# V" v4 D/ ^3 `
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 0 O0 I/ w8 K9 r
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
# Z) J0 @. h8 {7 r  y' P  }<tr> ! c& j+ B0 Q5 U  p) T% ~8 l  c, V- p
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
5 c, [5 z3 C. D6 w8 z<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> $ w% [! I* y! |4 f0 ]  ?
</tr> : \4 n( l/ k  o0 R3 s
<tr>
% i  Y0 g# D- T6 B) Z3 ~& i! d<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> % K: g6 l5 r3 F; A" j# s4 r
</tr> ; d' E0 l' _. N8 }' `8 T- w5 D' z( U5 F
</table><%set show=nothing%> . N6 I5 l8 L9 v. S4 x

/ L3 m! h% w+ A' N3 {9 e劲语句---精华语句: / M" [8 I" W2 S2 Y. P6 ]! R
id=request.querystring("id")
8 |) s% C% K4 o" W4 {在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ' W8 Q4 B: J& B; b9 {3 z
id=request.querystring("id")就是把地址栏中的id的值读取下来,
0 \0 b0 ~: z# v9 j& @因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, # P; u. L! e7 y! p9 D) i; l
所以show.asp使用id=request.querystring("id")语句把数字读取下来 / s$ W* z4 ?* z9 V! O
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
* q+ ?" E8 e/ r4 l6 E9 p* a向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 0 L! T  o  [9 p# z! m5 ?
最后<%set show=nothing%>
1 Z5 S9 r' s  E0 ]* r
9 h  ~! w7 m; x9 f- p好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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