返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
* h5 t( Q4 v, C7 w% m4 g真NB..佩服ing .....$ z# u$ a/ ~! r
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。; Z2 L+ [6 o2 E1 o: k

  Y- W  V8 Q' e/ P* U1 N  J同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。   S7 [# N. Z1 q- B+ X0 I- h0 _

9 `8 X$ D! o- W2 m% a1 Y7 _一、建立文件! 7 z/ ~4 Q7 ^9 |  W) |
最简单的论坛也要有几个必要的文件,就是: ' x% k# W) W  M; Q- a" b
# _& i5 ?2 c0 s% S, P) [1 H
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 2 V  T7 Z8 F, @1 A* U4 D

, ~8 |5 `" v7 G3 M9 |5 |, T2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp * B# S1 w* _4 T' \4 ~* A
; Q% |$ E  {8 X" a. _: b6 u6 x
3、发表帖子的文件----命名为:say.asp
8 |- I, U$ R8 c- h0 n/ \) A
. x' J  K1 w# E  y- _4、保存发表帖子内容的文件-----命名为:save.asp
2 r; Y( A, N3 g* M+ v# k1 m* j4 |  Q) \+ n
5、显示帖子标题的文件------命名为:index.asp
6 D1 o/ X6 B: N" Q2 N  M+ \3 _: Z' T) ^/ q9 Q/ N
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
0 p, k1 P. d" @, K# F+ f% v3 W4 \7 `
( i/ x! B4 F2 b* L. ?0 p建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 2 U+ \6 A. P- Q# X' h! E% O$ U: `6 r
) {! ?* l; |; H, B. `8 m8 d
二、各文件的主要内容
7 i& v  I- r- U! q  q
) C* Y& `7 m! n) m- l1、bbs.mdb 4 k7 a8 Z8 B6 i, B9 V0 r

% B% q$ v* M" f6 I& ]5 C+ g4 ?打开这个数据库,建立一个表,命名为bbs 4 \9 R! T; H' D

& A9 D. Q1 ~3 c, b0 n8 s. e6 O该表中有几个字段: 6 L0 k; q5 {" k' K+ \

9 K" {1 n; q6 did(自动给帖子编号),他的数据类型设为“自动编号”
; ?" @% @1 o. K6 Y# t6 B8 q
6 a3 U  n- a) D/ Y6 Cname(用来储存发表的作者),数据类型为“文本”
$ i; w, e5 J- M6 b7 ~9 T/ ?8 r# t
title(用来储存帖子的主题),数据类型为“文本” ; ^8 J- `& P* z1 f
" ~3 F4 D# Y: [1 @' M* d" N; Z
body(用来储存帖子的内容),数据类型为“备注” + y0 ?* O' V" P" L, W* h4 {( y
9 b. Y, V. O* ~  C& }7 \. \5 d
2、conn.asp ! e# E* G5 `* _+ Q, Y4 _" H, j5 K
源代码为:
* }6 V6 o& a% M7 L; h<% ) V! ]* j0 v( ~; L) D* ^
Server.scriptTimeout="10" ; O* V# v. h- {* ], [  i! A: V& y
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ; m0 L3 A7 J) s% `
set conn=Server.CreateObject("ADODB.connection")
9 R, [& o* B  ~& ~% ?6 K( Dconn.open connstr
2 u# S( E+ h5 p9 Y& }' u) D, F, _%>
) X& D; v# p/ C9 M( ?& K/ ?. S2 g8 ?9 B1 K& O
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 5 c- A6 W: ?. ^. F; C0 v

0 V% L! _! ^2 n$ v6 n: r3、say.asp ) l' U7 w# ]2 _9 \1 B# I

$ Y* Y/ Q) d  ~+ y* j源代码为: : j- J2 ?" G0 Z' w9 q) M
<form method="POST" action="save.asp">
! W( Y& M/ K* Y! Z* `<p>大名:<input type="text" name="name" size="20"></p>
1 b2 `& ]9 [8 y  S& h' L9 u<p>标题:<input type="text" name="title" size="91"></p>
& Y: L, d; a& c) ^6 Q<p>内容:</p>
3 Y- b( S! _2 @! P# @6 s, g<p><textarea rows="11" name="body" cols="97"></textarea></p> * U. f- E8 d: v8 q& Q* o- r/ x
<p> </p> ) P9 @, n1 U0 U1 N9 N
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
% ^$ Q/ I5 T) v" p</form>
: ]  b1 Q( j& c+ r% F大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 8 b3 s- K2 a  K( O
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ( Y/ D4 `. E/ s1 N, Z, V/ w$ N

9 Z& [# W/ ~3 Z1 j7 \4、save.asp 6 A( P5 o. r% q8 t. u

+ ?9 z, c: d; C1 n  o源代码:
. P+ T9 e* B! c2 c/ t: N<!--#include file="conn.asp"--> & j1 U( o* A9 h7 l
<%name=Replace(Request.Form("name"),"'","''") # ]) L1 y7 U+ q) y# {  ^
title=Replace(Request.Form("title"),"'","''") 6 F4 J9 X+ l; O1 J- ]$ P
body=Replace(Request.Form("body"),"'","''")
* c4 m) Q; b" Z$ b( Y$ X%> * u5 e/ {9 ]/ @2 x/ B( p
<%if name="" or title="" or body="" then%>
; X9 z. r2 P8 {  ]请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! % A4 o" O. b% o5 T9 z& v$ \* |
<%else%> 0 r. g# \: \  d2 F  e# l! E" |
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
3 h( S4 A# T' Y8 g发表成功!<a href="index.asp">查看帖子</a> # b4 @) G+ Y% q- E; M& ~2 d- B
<%end if
& U. r+ _5 M7 V" K5 c2 h. kset savebbs=nothing ) b* g# f  f( I* s) c( g' ^
%>
( t0 y% z/ @4 ]' `4 ^9 s
! F# z: L: q4 k  J) \1 J& D3 @第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
. R5 F# Y2 W4 A& J* P' gasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 3 N- p8 s5 W4 j/ V7 o* ^
接下来几句: ; f2 b5 S# L( N+ z; J
name=Replace(Request.Form("name"),"'","''")
9 v5 y- }4 h% qtitle=Replace(Request.Form("title"),"'","''") ! O0 ]. [; M0 f% {0 Q( S: Z- {
body=Replace(Request.Form("body"),"'","''")
( s$ D3 _& C6 W$ Q% t
) U+ D$ u% t) s) \“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, % r  e% K* K  W  @
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
3 b0 S7 i2 ]7 R' o如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” - d4 E. x; M/ o& w
就是把表单中名为name的文本框发来的数据储存在abc123变量中
; D& ?% L( }) I1 {0 H: a3 a- j6 Z8 i# Y4 k7 f
接着:if name="" or title="" or body="" then " x! x7 j0 C* y6 c% E3 F# `3 D: Z
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
# r, G( [0 a7 y$ r& H“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
! L9 A/ X9 P+ u该语句属于html语法,大家都看得懂的! % u; `4 v0 A1 R2 B" [) c

2 v- h6 V9 \" W" f9 D/ O"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ) O8 i7 ?# t+ V" }  `: h0 M1 e
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
- t, y8 ^# ]/ D& N% {. U/ l( P* y2 `发表成功!<a href="index.asp">查看帖子</a>”
- Q; g: E( r3 P+ o& ?. `3 w/ V. j6 h. M+ I) P7 p
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
! I* m: {1 Q' vinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
4 f* v# A6 a3 u0 m3 J- V0 C7 X中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
5 g0 |8 H, \( K; B; M; {values是“值”的意思
  b+ z9 R) O8 s$ b就是插入向量name,title,body,向量用格式'"&name&"'表示 ( R5 Y/ E* I* K% K" I  m0 t

& E5 n. a* s5 T, D最后:end if就是结束if……then $ H8 V) ^, f3 X% j/ x0 d2 K
set savebbs=nothing可以说是关闭掉:
' q2 P& N% {* E! aset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
- |$ C5 G1 K: ]8 b5 M- V! w* T
0 c+ p8 U' \! K7 r% C
" Y; l4 R- R3 f  l5、index.asp 0 ]  f5 y* ^* X5 b$ T; X
源代码: / I( ~0 c9 E) c8 O7 p
<!--#include file="conn.asp"--> / {2 H- _8 o+ R/ c9 f1 r
<b><a href="say.asp">发表帖子</a></b><br><br> . B% z, \" F# ?. n/ ~0 v
<div align="center">
: w3 b, o# ?& H$ @' c8 [3 W<center> 3 t' X% R( W& j/ }7 ?& S4 b
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> " b+ S# \5 \* b6 h
<tr> 7 M/ D% s! S6 ?- N
<td width="17%"><b>作者</b></td> 7 l4 E% x6 _6 o! r* T, {
<td width="83%"><b>主题</b></td> * Q& u7 a9 a+ |7 _8 u1 k
</tr> 9 o7 X# u- a& S/ W. R( n: J
</table>
. Y4 \$ e( T, P) c/ M</center> , W4 r" S; Q* B# M5 i5 m2 O
</div><hr size="1">
7 l$ b6 Q3 M7 W- X" l  B8 z<%i=1
+ N1 N7 X% y0 m  e4 Jset showbbs=conn.execute("select*from bbs order by id desc") : o% z3 O: e& W' q( N
do while not showbbs.eof 6 z1 u% x& }6 n0 b% r& l
%> : l/ @5 b  H5 o6 E0 F* h3 k
<div align="center">
" r: ], E1 H! C  ?8 V<center> - D" G; }1 {  k' E: r
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
4 B5 E( F# C7 j6 ]7 ~1 t6 V<tr> 4 |8 }) C5 N; i0 y6 s1 d0 \, d
<td width="17%"><%=showbbs("name")%> </td> 4 ?$ ^, T( h8 O9 e
<td width="83%"> 3 t; ?2 e/ h2 a; I* g1 [4 U% o5 t
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 5 \; m- B/ @2 X; ], x% {
</tr> - @1 L. z  E; Q! i8 x
</table>
- j. F, F' c3 n& h# h</center> " F2 w" M# v! Q" t* w, X
</div><hr size="1">
/ N/ k+ j" ]3 L0 V<%i=i+1
% s8 @( n  ~7 Q/ W/ fif i>50 then exit do 3 u9 v) @4 o; J
showbbs.movenext " T: p5 N/ o& t# I. X* W
Loop + n& R$ M% S' z' M$ u* x; l
showbbs.Close 0 C* }" F! Y* v- {6 E. Y
set showbbs=nothing
; J$ U8 ?0 G, L, o; d) e( t7 Q  E%> 2 |# d" I* S- E; E/ K8 `

; {5 }7 x8 @: u0 R3 y2 W! N& _+ U0 ?: U这个文件就不一句一句的讲了
& A: D- {9 i) c8 i" i; E" i主要讲精华部分: ' o! K  m4 S2 K
set showbbs=conn.execute("select*from bbs order by id desc") * O* ]8 n) I: E, B
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
4 j; G0 j8 w8 H+ G1 n还有这么一句:<%=showbbs("name")%> $ U' t/ [/ G9 v% |( w3 p
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
5 ~9 M- v( [. B9 l2 y代码中的i=1和i=i+1 0 a# H3 \7 v) m1 U2 @
if i>50 then exit do 5 w: \2 _) |) [! C: s5 }5 N
showbbs.movenext : V0 l. v' L" `3 b) F
Loop 5 h6 ]5 @2 g# ]+ R: d( a: j: f" p
showbbs.Close
8 X. h1 {8 Q9 q* Aset showbbs=nothing : s% @" d4 y3 I$ M: j2 k
4 s3 y* `2 J" w* k' X8 N
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
3 X, [6 {( l5 Q2 N3 B# s: yif i>50 then exit do中的50可以修改
( Y% j. ~/ O' [9 E' u但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 1 h1 h' n# x' Q# r( P) L
还有一句很有用的:
6 ^: U: @) S; d- \7 B<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 0 G# s! h% `8 i
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 4 m; u, v* r6 F7 @* O2 c1 ?
等一下在show.asp文件中就有用了
! Q% H' y# C( E0 |
5 x; T* I% M' D5 J! {6 P# t5、show.asp
# j; c- y" s+ p7 `源代码: * I' n8 z% h' x6 i' L

% ]) D. D# ]$ l& g. H5 s<!--#include file="conn.asp"-->
* V9 p1 D# V, h. r) h<%id=request.querystring("id")%> , t5 y" f. l0 u) H
<%set show=conn.execute("select*from bbs where id="&id&"")%>   w! }* x3 ~5 W2 r% p+ Z8 k, q
<a href="index.asp">
9 p' Y  W: z  H. N* k* o% I: m<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
. [% v) O; K7 Z0 E" n<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
( D2 F$ U* M8 \" D% [- B<tr>
. J; u+ `$ X: @0 p' C: @: S<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
4 ^2 P% X, |) j) e1 Y1 I- y. E& m<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
# R9 S8 _) J3 M& @7 H: Q</tr>
/ w( ~. V7 O, J3 S$ \<tr>
9 }6 h7 [6 q$ b# s3 z<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> ' c: O1 s& F" B: P3 c4 Y: h; q
</tr> ; P  h; [5 x$ e' b
</table><%set show=nothing%>
) i3 }; J- {3 ^3 W& p8 }$ O( k# ~
劲语句---精华语句:
% v+ s( s' ~0 B% V/ F& T9 R6 nid=request.querystring("id") $ X5 Y# T( P7 b1 E' k
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
# P6 E8 V  A) G5 yid=request.querystring("id")就是把地址栏中的id的值读取下来, 4 b( U6 [! j5 u, X& R' P* \
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
5 @' q5 C# k. V& c% ?所以show.asp使用id=request.querystring("id")语句把数字读取下来
, y4 M; V# }; q' y3 o# X" M于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ; _* f7 m3 c$ k* ]
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 6 p* C8 }& x- p3 _
最后<%set show=nothing%> - Q; J5 M- ?( n# `7 r

" ?2 C2 P$ [+ h0 S好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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