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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
6 ]* Y* H/ l7 S真NB..佩服ing .....) i. p: a) ^$ z9 @3 i+ @
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
5 L; G3 `. O* u; B. J( q9 U! m; p- K* i3 z, U
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 & c6 G: e6 A7 u: G, a8 P$ z

* Y# f* _( E8 t1 D9 d一、建立文件!
0 O( \! y( ~2 D最简单的论坛也要有几个必要的文件,就是:
$ \* |% |3 g9 r" U9 l2 q# i
7 P% D9 M8 f! F+ ^$ _2 X1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 3 V# @- {5 j) S7 n
! S6 L' k) a& @; d: V: p
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
# Z8 y* ]/ `$ ]) |8 e4 W! ?( H5 L6 W. v  L' T0 z
3、发表帖子的文件----命名为:say.asp
/ B/ @8 j/ ?  i3 G, |7 ]4 R+ P: f
% g& A1 a7 x+ g# k. K4、保存发表帖子内容的文件-----命名为:save.asp 7 ~! t$ {/ S; q! V
. K6 O0 ~- x* |0 L; |
5、显示帖子标题的文件------命名为:index.asp
1 k. x3 l/ x( l" _& o: u$ Z% l( n# z. W. G$ r. L
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 6 Z- u: ?' a7 {( [  q& y* S, j

. ^, A5 Z4 T7 G( ?0 B建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 2 E+ I- s, E+ i1 X
3 F# t9 @  Z" ?
二、各文件的主要内容 $ q2 j/ }; S9 i; h' l7 V/ V4 @
; B" [8 T( ~9 r
1、bbs.mdb
" I! g  G9 F6 {. d9 N7 z4 e
% S; m( S' H5 ~打开这个数据库,建立一个表,命名为bbs 0 q1 x) L8 K+ t3 ^6 H: d
: _. G- m3 |  B, b* q" Y4 r
该表中有几个字段:
  K2 f# r( w6 i4 m1 r3 a
4 `7 P  d' o" V  @8 m  J, Yid(自动给帖子编号),他的数据类型设为“自动编号” 9 i  ^! C& J, K. F0 b

& V7 k( e0 S+ G" r; hname(用来储存发表的作者),数据类型为“文本”
7 g  I1 z" W0 ]0 f, B8 Z# p/ W; s( a
title(用来储存帖子的主题),数据类型为“文本” 2 |- Z. o2 D9 W8 g6 P' a& ^0 z

5 z0 S2 \' b& S- w( ^4 P8 T4 Z) Qbody(用来储存帖子的内容),数据类型为“备注”   w& Y% a9 t6 h0 R
- }/ w3 f, N( H  h3 z, z
2、conn.asp
; K2 E) O: p: [7 O源代码为:
. A7 {6 m( Y. }<%
8 ~! t' \0 i8 K" W, p& Y: i! EServer.scriptTimeout="10"
6 k7 o6 i/ t$ Z# u4 wc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ' d/ L4 F2 b9 T6 }
set conn=Server.CreateObject("ADODB.connection") * R3 R) H3 s9 e: E6 e' o/ t+ O3 e
conn.open connstr * W/ M1 A# W( S% d8 I) K
%> 2 B3 C4 L+ J* D4 V3 d4 \' A
! u( J( x! F1 b) S: K9 D. q
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
; T( r' _7 A8 A+ P8 v
9 W- d. E' \0 p, K& u# x3 u& h! {3、say.asp : x# A: b2 V3 o+ a4 g

, o8 g0 N/ b! Y8 v源代码为: 1 ~# O2 L8 V0 k) R* g: l
<form method="POST" action="save.asp">
0 _, R1 s; {+ t" S7 ]( S0 K+ K<p>大名:<input type="text" name="name" size="20"></p>
+ d  I' ?! s7 l8 N) t* l9 ^$ Q5 y<p>标题:<input type="text" name="title" size="91"></p>
7 r$ y+ i1 ]+ ~2 Q1 j+ @" L<p>内容:</p>
0 l, z0 z4 V0 o% }# {6 d$ A9 H; `<p><textarea rows="11" name="body" cols="97"></textarea></p>
8 ]. T8 r2 F- Y$ Z<p> </p>
1 e( M3 h& P' r/ W- K, f<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> " H7 b. V& C3 X$ }  C8 z
</form> , a2 O! F, g& j
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
) U. Z! F0 B( y/ e9 L不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 0 F5 l6 R  J. I) {7 E
+ U: c6 L: g3 f- |3 R0 [6 ?  c! U
4、save.asp 3 j9 D% O7 `, g% ]
$ j, R8 d  F7 P$ H5 U
源代码:
; E/ f8 R7 G1 S& U* n, U" H<!--#include file="conn.asp"-->
( g* V) a# K+ U6 U6 E! V+ S' @<%name=Replace(Request.Form("name"),"'","''")
* J1 s! E3 S* btitle=Replace(Request.Form("title"),"'","''") + T( E3 _6 E: D, f4 m
body=Replace(Request.Form("body"),"'","''")
" b7 x1 @% A7 y5 W0 B%>
. r& X/ N2 ~, T; W. Z6 I<%if name="" or title="" or body="" then%> & ?7 V) z% i  ~2 n1 f6 c5 Y
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! * N# r; c+ D0 g+ |5 i; ~
<%else%>
- R6 B& _1 M/ X7 z: ~- h$ w<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 8 t3 y; g) l/ P$ }! e, a" p+ ^( J7 p( i
发表成功!<a href="index.asp">查看帖子</a> # S! G: {/ X" w/ f2 Q
<%end if ! q4 Z& C5 R1 C+ i
set savebbs=nothing / a* f2 R1 f+ q9 t, Y/ x. v
%> # E4 t6 n- P4 f* y

$ e. k% s; d4 y# I! J, y4 J; v第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! - I3 ?8 E8 p5 {- v. v5 I2 M* d9 K
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, " d# X% m0 H9 O% F0 I4 p/ v& B( G+ \
接下来几句: ' _( m. s. ?# ?2 r
name=Replace(Request.Form("name"),"'","''") " W* G# U+ M; W/ y3 b
title=Replace(Request.Form("title"),"'","''") $ ]% B/ h* E6 Q7 U4 |
body=Replace(Request.Form("body"),"'","''") / z  K: S0 R$ l9 D
4 Z  F/ ?/ l3 P  k
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, $ N# E2 I5 d, u( f# U; e4 V% ?$ S
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
' [0 B$ ^& @# f如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” / u  {  [4 |8 ]
就是把表单中名为name的文本框发来的数据储存在abc123变量中
: E& T7 k% ]! l* V. I) H9 s- A& D" b- c2 y2 e
接着:if name="" or title="" or body="" then 9 R; @7 G! ?! |& F* y/ j
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 4 p) z# Z, {+ Y, Y, u7 R, H% R$ d  {
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
7 v) y  S8 N0 k1 B3 u0 X4 I  C该语句属于html语法,大家都看得懂的!
7 a! I1 ?7 J: B( q; t; M2 W
$ W6 J- A9 p: s) c' U4 M"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: * ?$ p, v) u% k9 y8 v3 s
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> - C6 Z1 W0 a' G; Y8 ~. H
发表成功!<a href="index.asp">查看帖子</a>” 1 @/ N  R1 h, l
" U9 E" P% j. k
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
2 m+ @" v4 u0 D7 [% x+ Yinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) / `. Q7 H1 S% _6 ^# k2 {
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") : U# E" h5 W3 |0 _7 O
values是“值”的意思 ' A8 K, E9 {7 m/ L) T3 a. H
就是插入向量name,title,body,向量用格式'"&name&"'表示 6 c& O& N2 b" k+ L

: z$ m6 ~' [9 `: ?' W' V最后:end if就是结束if……then
, T1 G4 N/ p" J8 tset savebbs=nothing可以说是关闭掉:
2 q  L9 j: e/ ~* Iset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ) ]! [( J8 K9 E! }1 c  \
, Z/ A! w/ E/ v8 O% O6 v5 J1 t

1 L" _' ~) A& z: v5、index.asp * C  y/ n$ _: a- l" P
源代码:
% b9 r, c. l" P) J<!--#include file="conn.asp"--> 5 u. `& B$ w- F  @6 B- j4 V' V
<b><a href="say.asp">发表帖子</a></b><br><br> 4 v1 J( ^6 ^# g+ k9 y4 _' P& |
<div align="center">
# F; W; w6 [6 l) Y9 `7 H4 ?, B<center> ! }2 {0 p7 C6 C/ D. ?. ]
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
# Y0 A  c! c. l4 x, a<tr>
8 K; K3 c2 u* c# D- {<td width="17%"><b>作者</b></td>
# j. t7 E2 x1 Y8 s1 S- W  k1 ?<td width="83%"><b>主题</b></td> % [5 D- l. ?6 [3 r0 p0 J8 w& |
</tr>
, o% e7 C0 n7 I' \$ H</table>
3 I, P( o! ?# I+ k</center>
' \) j% |+ Y5 v. q8 U) P</div><hr size="1"> . z# C$ g  @; p9 R
<%i=1 2 q: E0 J& ]8 z; V/ u' i
set showbbs=conn.execute("select*from bbs order by id desc")
0 V4 q1 b3 Z; g/ [. [( E4 V  kdo while not showbbs.eof ' C2 O7 U" r5 A3 C+ y2 ?1 O
%>
/ a, B% ?1 h9 |<div align="center">
0 ~( b3 Z% h/ x& h<center> ( I4 P8 D4 w' p
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
+ d. g" |# {! q( I5 E3 i<tr> - l& M: d& \( r! c
<td width="17%"><%=showbbs("name")%> </td>
( T) B, r) F2 F1 m<td width="83%">
% F+ [( Y) W" k- m7 O7 W<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
" v) y  q. h5 E* \7 V</tr> # ?) {5 F/ K& c8 Y/ W* r6 j
</table> & p; ]0 n: g. ~7 W' [
</center>
; V( Q6 V# {3 }& c% t1 m, {' `</div><hr size="1">
+ y% z7 M7 o) H8 a<%i=i+1
; |& S, r2 m9 q! u5 fif i>50 then exit do . f$ A7 I+ |% ?2 j- ]7 z" m
showbbs.movenext " P+ N4 `  i2 C& F
Loop
# @+ f) g' j/ ?$ U' pshowbbs.Close " U# X, b6 l2 t. @) e% e
set showbbs=nothing 9 \4 Y' n) o2 F" F1 q
%>
; G5 k% N8 h' Z6 H% V5 O  ?
* Y- S1 M& ^8 u9 z- E这个文件就不一句一句的讲了 4 s7 v9 e+ G, z- }8 }! G1 w
主要讲精华部分: ; r6 S5 L9 T2 H+ o- \! M& `
set showbbs=conn.execute("select*from bbs order by id desc") . L2 |; s6 |" d. w1 A# l
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, * R$ E+ @, B' ~' Z# R' k
还有这么一句:<%=showbbs("name")%> - v  `# t0 a1 I  j" r  D
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
% b, S4 G) S/ b2 W# l0 H; \* m代码中的i=1和i=i+1 / Y8 s: a! R$ |+ q
if i>50 then exit do 1 F& g, r! K6 ^& S
showbbs.movenext
7 `' i( R8 _8 e8 C5 k( `' LLoop 1 y; ]& s1 F! G; p4 p$ S% ?  q, m
showbbs.Close
  `+ X0 s1 E: W# }+ S9 ~0 Sset showbbs=nothing ' q. ~& t) i" F* }/ @
, f7 m% u+ k/ e9 p$ h
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! ! H, C  w8 ?/ Q, H
if i>50 then exit do中的50可以修改 % T. k$ h7 B/ [3 U$ t+ o1 S
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 + a' d7 i7 d8 v: V  _3 r
还有一句很有用的:
# T% R" ]! R$ Q% L$ c<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 3 [, p7 j; n, D+ _' P
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ; z' B% C+ W, G7 o; g* k- I/ L1 r
等一下在show.asp文件中就有用了 0 Z! Z& I# m  }+ s6 D) m. P0 _
0 w, |) J9 ?. K7 N( o
5、show.asp
% n: T+ ^; M" p9 i6 y源代码: + `# z5 ^; x' k; A

: V+ ?) ?# `( g& U* |; y<!--#include file="conn.asp"--> 3 Y& W! a' t. o5 Z6 l9 Z
<%id=request.querystring("id")%>
+ I1 O8 ]& a  Q! s2 y* Q$ u<%set show=conn.execute("select*from bbs where id="&id&"")%>
0 l3 U8 ]. Y1 _$ f<a href="index.asp">
& K( i( w7 @' U0 }% K; V0 W4 a<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
7 e: ], r$ Y3 t' K) ?) T<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
9 Q* k9 O% L' L& s( ?. }( `* t  G<tr>
4 [5 U! D! a+ u<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 7 ]6 Y( U; t' V  P: J' Y# s+ x
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
- M. n' Y$ J, \( l! u: q: D</tr>
$ J$ s; k3 B/ i9 M<tr>
; T, n  D1 @) x  o- i<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
7 c8 _& [9 J( F$ T- ^1 u! o& R</tr> 7 c' [. y& ^& ]& @: F8 r' V  S5 C
</table><%set show=nothing%>
7 s# ]9 H* i8 r. l6 u9 w
3 J. z( k) {; n7 a! `4 x劲语句---精华语句: 7 b4 E6 r7 y3 _5 i' s1 L3 L
id=request.querystring("id")
; U( o& D) W/ P4 F在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
- [0 M2 ?' E0 a  @/ ^/ Sid=request.querystring("id")就是把地址栏中的id的值读取下来,
8 \& F- U: T+ [* [, ?因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ' f, |( m8 b$ o, K, x
所以show.asp使用id=request.querystring("id")语句把数字读取下来
" z* ~8 F, T! X/ ~* H' F于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") , R3 l% o$ p2 U  _5 }
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" " E! l$ K' y# {" T' b9 U/ X# H! {: t
最后<%set show=nothing%> . v. ~  F0 j9 P& Y0 [( ~9 P

( H7 k7 c% s$ p; z8 N  X- k好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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