|
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。<br>1 S' u" g0 Y" Y8 f: x/ P
<br>0 U6 `1 L6 W2 [, u! B6 n
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 <br>
0 o% Q6 L9 |1 |8 @<br>8 M8 d* B4 z1 s* _2 v
一、建立文件! <br>
9 J' r6 Z2 O4 h. A% Y5 O: {最简单的论坛也要有几个必要的文件,就是: <br>4 e0 S" W8 q. p, S! o/ Y
<br>
k6 |- B. E; N; Z1 g/ C z& u1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb <br>
. |9 b: b% R$ d, I5 q4 ~<br>$ b3 x! E q" \* q" ?) x
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp <br>/ w# P8 I! x) H) I5 X% G( i% d' I
<br>- s, D3 K' [8 E* y9 m" g
3、发表帖子的文件----命名为:say.asp <br>0 l. N6 R: u2 k$ e( z
<br>* t6 L! N# t: e4 T
4、保存发表帖子内容的文件-----命名为:save.asp <br>2 R# e' B9 @% K
<br>
, Q" w2 C+ e3 F4 {. K4 j3 r5、显示帖子标题的文件------命名为:index.asp <br># s$ h- }3 S3 q5 ~6 U9 S0 ~
<br>0 W2 n4 `% ]! l! P" ]) i' [. r+ f- x
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp <br>
( H3 L; E5 n1 l% [<br>$ `9 K2 b+ k- H! H( w: U5 U
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" <br>
: t* E' S+ i8 y. B<br>
. D) |4 N( f# C3 W' [0 Z二、各文件的主要内容 <br>- M8 j( J! g" @1 j8 `
<br>, \6 r" Z; M( t8 X f
1、bbs.mdb <br>: b. T/ w% D/ G8 R+ ^( {$ a" w
<br>2 v" Z7 F- X+ Y7 O
打开这个数据库,建立一个表,命名为bbs <br>. s9 e1 t) M* G: c2 `0 e# y
<br>
% U- Z7 x: A8 D该表中有几个字段: <br>
! n% ~* X/ ?: v4 b& }$ }<br>
( Q* } Z( q+ l1 @' Eid(自动给帖子编号),他的数据类型设为“自动编号” <br>: J U4 Q: F$ a3 }) I) k$ w( T
<br>* n3 l3 B8 E8 S6 P) t0 J0 ~: T
name(用来储存发表的作者),数据类型为“文本” <br>
W3 J9 K, s, [4 W# o0 B$ |<br>3 I) _. }9 n2 d X" c
title(用来储存帖子的主题),数据类型为“文本” <br>9 P" E" _4 \9 k+ W
<br>$ v; Z7 x* N4 G1 B8 T+ v2 `* K8 e+ G) n
body(用来储存帖子的内容),数据类型为“备注” <br>1 Z5 C! ~; u& W R
<br>+ x; L; L9 L$ [, l9 y
2、conn.asp <br>- A, ^& I& z! v a5 ^* j
源代码为: <br>0 S( N1 [! H2 `% P; b
<% <br>
- }2 A; J) O: I5 \- v7 i U# o; j ZServer.scriptTimeout="10" <br>
3 g2 Z! E0 c! r( u3 yconnstr="DBQ="+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" <br>, M' `3 s1 [5 H/ w1 d- X) u
set conn=Server.CreateObject("ADODB.connection") <br>
; l) Q0 E) e/ p# l9 X; bconn.open connstr <br>4 x$ V9 o8 G2 O7 E+ A0 Z
%> <br>, | F3 @! Y7 T1 c8 x
<br>
& X: V' H% ]& ~ s# ]7 f$ I; \, ?这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! <br>' d- t) L1 r' V" P' L
<br>3 T7 H, R( ?+ O, _ `8 Y' a
3、say.asp <br>
1 r+ ]7 N/ I# U$ |" N<br>, V; K) I4 j6 j1 V
源代码为: <br>1 H0 n& D! l' M* U$ x1 y
<form method="POST" action="save.asp"> <br>+ d W7 s8 A0 S+ s8 w3 @: J" Q6 ^; d
<p>大名:<input type="text" name="name" size="20"></p> <br>, `5 i0 X' T) R4 ?
<p>标题:<input type="text" name="title" size="91"></p> <br> v9 i1 K5 g9 j
<p>内容:</p> <br>3 v) C. S. I% w) _9 V
<p><textarea rows="11" name="body" cols="97"></textarea></p> <br>
$ u; ^9 l% A# H2 D6 J) ?$ Y<p> </p> <br>9 l- |: b" D2 H
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> <br>' N/ t# c+ J1 d1 D, y# A% {$ c: S
</form> <br>
1 s# L3 T& Y0 ^8 S大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 <br>
7 N0 Z: Q4 Y. \# S6 x; q3 C不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! <br>5 b [4 C8 L% h
<br>* M/ t5 y ]; m
4、save.asp <br>8 n) Q# P$ X2 e9 `
<br>6 d+ h& z% m# X) i1 N0 o% s) @
源代码: <br>
4 d# W% ~( M9 I6 }% Z<!--#include file="conn.asp"--> <br>- m. r' I1 k# }" I8 D7 r
<%name=Replace(Request.Form("name"),"'","''") <br>
+ F# ]1 O" c* v5 Rtitle=Replace(Request.Form("title"),"'","''") <br>$ x* u8 V2 C+ n9 d& m
body=Replace(Request.Form("body"),"'","''") <br>: i2 j+ U- \, U. R4 M& W
%> <br>1 k6 Q/ ?3 H/ f% w$ B B8 s
<%if name="" or title="" or body="" then%> <br>0 W6 X: I o5 h \7 X3 \
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! <br>
. h/ F5 q3 {2 G: c+ o2 l8 H( b. J<%else%> <br>
* l! S$ |* ]0 D<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> <br>
2 H/ h# y* f/ d, o发表成功!<a href="index.asp">查看帖子</a> <br>6 R r1 W/ X$ C7 _! b) \0 o1 ?
<%end if <br>
2 ?8 v8 X0 [+ c4 n; H V. N9 R: zset savebbs=nothing <br>( h& y3 z6 V; k1 ~0 H
%> <br>
% Q3 q# j+ N4 u: W<br>0 W1 X& k' L" u5 D; q8 ? G- B8 u
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! <br>, V3 o) M' v. Z% ^3 u0 ~5 V+ B
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, <br>. Q( h* Y' A% y( G
接下来几句: <br>
, v* m3 `8 k: P- fname=Replace(Request.Form("name"),"'","''") <br>
& S/ T; j+ T; Z% c1 Ftitle=Replace(Request.Form("title"),"'","''") <br>9 g9 R0 t( Y" T! ~( x
body=Replace(Request.Form("body"),"'","''") <br>
6 g v( q) Y. s, a, O<br>
" M& p8 g( |' G; i N“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, <br>6 K$ F% p+ L. @: K' {* V! H
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, <br>% E4 c/ s, J1 C" Y3 Y2 B
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” <br>: U9 }# f! _3 P# W
就是把表单中名为name的文本框发来的数据储存在abc123变量中 <br>& e" w& [, \5 p: B0 I& F
<br>3 i* K" A% f' N
接着:if name="" or title="" or body="" then <br>; l" N- J9 u6 W/ l' B
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: <br>0 x( P5 O# ?" s7 |% t! R
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” <br>
& S" j- B, |0 w8 x9 W& Q' h V该语句属于html语法,大家都看得懂的! <br>+ Z; k9 R h" _1 T6 Y- t
<br>5 e4 H+ Q2 C* N3 n: s6 e! L
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: <br>
" R1 @# ?' U1 t“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> <br>
7 Y9 b* x1 e$ G) L3 L5 Y% g6 \1 W6 b9 z发表成功!<a href="index.asp">查看帖子</a>” <br>5 v/ X8 `, p- k0 R" u! B5 H% T
<br>8 B% M' W) a# ~) @$ r
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: <br>
" D- x2 q7 F9 y+ Z! n5 Z- n( [insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) <br>6 S' ]% `0 h: y2 t; {
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") <br>
4 o/ x7 n/ U/ e) E8 \ U& dvalues是“值”的意思 <br>
* C7 D4 T$ M: F- s9 h$ ?就是插入向量name,title,body,向量用格式'"&name&"'表示 <br>
+ x8 [& N! { O<br>
% J, m% ]. b1 v最后:end if就是结束if……then <br>% B; o" | P1 D; O7 n; D
set savebbs=nothing可以说是关闭掉: <br> O+ U0 r% U* d1 v2 [) _9 V
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") <br>
7 ~2 @9 g5 D: u1 n+ |1 _% u8 J$ L<br>
6 P. c1 G" O2 G* n7 n. s<br>0 _8 x( X' C; i% ]" }: @' H
5、index.asp <br>0 d3 ~, F0 F4 q+ X# Y
源代码: <br>
e) L5 A; ?2 l, Y9 S" ^5 ^<!--#include file="conn.asp"--> <br>; j! A# B6 @! ]3 s: p) [ R
<b><a href="say.asp">发表帖子</a></b><br><br> <br>
, s8 S7 m" R. b+ T6 z- t<div align="center"> <br>! a& O' ~1 z# w, t, C$ }/ `
<center> <br>* |& d8 r; Q% U A9 n" y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> <br>
' h3 F: V8 I% c5 \- @8 W<tr> <br>
3 N+ A, s# m( g B) f9 c. i" F<td width="17%"><b>作者</b></td> <br>
( I/ B) u% q& \: @6 P( c% S<td width="83%"><b>主题</b></td> <br>
$ b& v( a) i9 o& x</tr> <br>
r, N6 ?* R; o8 w0 T/ L% t</table> <br>
# E. o) |7 w+ Q6 }/ |</center> <br>3 q i+ M, u9 T# Z/ y5 g) C
</div><hr size="1"> <br>* S% x# x3 \% k, ^
<%i=1 <br>
9 S8 r& j6 x$ z4 T1 ?2 D+ Nset showbbs=conn.execute("select*from bbs order by id desc") <br>7 p) }+ D. @/ \1 g: b- Z5 k
do while not showbbs.eof <br>
6 Z6 p- [4 Q; o. p%> <br>; m* j) ?! Y9 M: m
<div align="center"> <br>5 S) u5 k0 n9 s7 X( U
<center> <br>
8 Y2 {/ Y, r6 x1 ^; W<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> <br>
. L" F" \# i0 t<tr> <br>; V4 G& m3 t( [9 J" ?; N
<td width="17%"><%=showbbs("name")%> </td> <br>
* m, ?7 V7 L! a6 h; e<td width="83%"> <br>
7 i7 M; f+ h+ w* j( y<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> <br>
/ k, N7 f/ x* _0 Z" K' Y0 R9 j% o</tr> <br>
5 ?; N: w6 L) ^% L7 [1 t</table> <br>, ?7 U* T& e! u& X" G
</center> <br>
3 }7 `0 C$ H, R: ^/ a</div><hr size="1"> <br> S& s' V0 S/ r" {! \" ]! Z9 R
<%i=i+1 <br>5 B& \: J) ~% ^( L0 e1 r4 U. l+ y
if i>50 then exit do <br>
7 E& `& ]! K2 g# D6 U1 S4 t: yshowbbs.movenext <br>
3 D% }2 ]2 Y- R/ q0 GLoop <br>$ b- G+ ^9 y5 n7 g; n1 \
showbbs.Close <br>7 x+ x ?+ }" m* u
set showbbs=nothing <br>
& d8 N8 S" H! S%> <br>3 h2 ^/ b7 | S( B1 y
<br>7 ]4 A2 }8 W. w6 m# n
这个文件就不一句一句的讲了 <br>; w9 |1 G* O1 `6 ~4 c1 K
主要讲精华部分: <br>, O/ I( k# J. r6 @
set showbbs=conn.execute("select*from bbs order by id desc") <br>- h( [. t, o+ {/ l6 G
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, <br>
+ H8 q( f3 B+ y( B还有这么一句:<%=showbbs("name")%> <br>' ]+ T8 i0 J6 U; @% |/ _ G$ i
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs <br>
2 [% i- a3 K! I+ k3 j* w0 i1 v1 p代码中的i=1和i=i+1 <br>
5 ~; O+ p7 D! E; Wif i>50 then exit do <br># `8 D- w$ Y! q. f
showbbs.movenext <br>* Q; L# s% u$ `% O8 p. }
Loop <br>; V3 x6 k1 T1 j$ U5 u; c [
showbbs.Close <br>
9 m0 U2 }) H+ S. ]. O6 Q" ]! sset showbbs=nothing <br>
+ M9 e( T; f Z. b<br>$ w0 p, j* O! @; P+ s* w! G3 q; R
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! <br>1 M2 J4 k; P; g7 e5 h& M
if i>50 then exit do中的50可以修改 <br>
2 f5 e0 L( V0 b' {1 D9 V但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 <br>0 M& _* D( i( ?+ y1 f: S6 a
还有一句很有用的: <br>
0 I2 m5 g. l5 ]: k$ {" M/ b<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> <br>+ j- I+ n: S6 @
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, <br>
4 f8 D: u A; `. U9 e5 M0 O等一下在show.asp文件中就有用了 <br>1 c- ]" o7 D4 U& Y8 T( K" q( D
<br>
% [- a' c5 W4 {- G- \0 v1 {. G5、show.asp <br>& ?3 r8 J, S( u/ M) w! N" l
源代码: <br>
9 L% T& G& _2 L9 f! [<br>
7 }+ B* V$ o' }! q4 z' k<!--#include file="conn.asp"--> <br>% M4 [" _' k. d: }" Y% v" Z5 r
<%id=request.querystring("id")%> <br>
/ z9 d0 A4 u* y* R9 ]) K* r<%set show=conn.execute("select*from bbs where id="&id&"")%> <br>( ]; X. c& H- k) N( p ~6 |1 c
<a href="index.asp"> <br>
6 F& q* t8 `0 d) w1 a& ]9 H<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> <br>% _6 |& r6 C4 d$ m- ?$ G+ f5 D0 V
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> <br>
$ h# V v1 S& T5 v5 L$ X4 f* M7 w; y<tr> <br>6 e" P% K7 h+ R( a( @( L
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> <br>5 X! v5 s2 t& \0 y
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> <br>* ^% E6 e% a5 G& y* b- a8 K7 P
</tr> <br>6 v+ C0 T0 R" p3 k0 j" G
<tr> <br>' l% `' x# J0 D) m. o. _
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> <br>) }7 N2 S* o+ j
</tr> <br>9 s5 v$ ~' g* o' ]
</table><%set show=nothing%> <br>* {; P# J! D/ O4 h
<br>
: h# a: B, u) |. Y; K( ]2 M劲语句---精华语句: <br>
; ^! o K2 p+ Q( Iid=request.querystring("id") <br>
& b( i6 Z# i! j0 p8 l/ _. t& g在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, <br>
1 x+ V/ r: ?, Sid=request.querystring("id")就是把地址栏中的id的值读取下来, <br>3 q) \4 y) p: C" g2 s
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, <br>5 r# w- Z. M. S* C8 c Q3 t N% d
所以show.asp使用id=request.querystring("id")语句把数字读取下来 <br>+ c( s1 ~4 p. I5 ~9 L7 Y- |7 L: A4 j
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") <br>9 D' Q9 T/ w8 l/ H. ]
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" <br>+ Y$ R+ b( N- y/ o6 W( j
最后<%set show=nothing%> <br>3 v4 o& r$ ]# g3 `; E, Y+ w
<br>8 Z# w4 X) }9 M0 {. ]
好了,一个简单的DIY论坛就这样完成了 |
|