|
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。<br>" c$ X. M, a. n3 B9 Z+ c4 Z: F
<br>2 S; W% s" P: l% p- F5 n
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 <br>4 U" v$ ?& l7 S& k: R2 a" }
<br>$ {" t+ \# [' \9 |
一、建立文件! <br>. u+ ~" |4 D L5 n Q* y6 o
最简单的论坛也要有几个必要的文件,就是: <br>+ E" J3 A3 z1 `8 y5 Y+ }7 \; O: J
<br>% P& s0 ~/ f7 n5 F! {" W. @% k8 E1 T. N
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb <br>
6 o5 G; o: I. J, h* _6 N+ g' H<br>. h( C& e% A7 J; ]7 ^: w
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp <br>
, w( R4 f5 o8 T9 {7 N( U<br>% O) f2 A" X- ~. R" I0 a
3、发表帖子的文件----命名为:say.asp <br>$ h$ E2 i8 P l$ }( ~% }6 H
<br>; T+ v' U7 t8 L( }$ o; |* ~
4、保存发表帖子内容的文件-----命名为:save.asp <br>0 L. D! Z4 ?! V# e$ J! R
<br>
4 s$ w5 c) ~: |. B9 F' J% m8 g; a5 R5、显示帖子标题的文件------命名为:index.asp <br>
& g5 f% B1 K9 U8 |$ V, I" [6 y<br>
: k2 ^. m! B6 Y5 `/ n1 T6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp <br>- n/ \. x6 F; c8 E; {
<br>
2 s7 |, ?" v0 |& R: D2 s建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" <br>
# b8 g0 q8 }# c% k/ w& i<br>
8 `% ^2 x0 l! f0 ^ s二、各文件的主要内容 <br>
( R# G; a0 b8 C1 ^<br>
( `% ]8 e3 G/ `1、bbs.mdb <br>
+ p% G- t" z# r) A, f<br>
& z3 S9 R, ]; e* R打开这个数据库,建立一个表,命名为bbs <br>
) G( @0 v$ [) k/ Q! @( `6 v; P<br>
0 [. I. l* f. w$ O7 a该表中有几个字段: <br>
3 q3 ]* I7 A$ M, _5 ]9 M<br>
2 _2 w% {0 x6 y0 n+ Kid(自动给帖子编号),他的数据类型设为“自动编号” <br> ^" j1 i* g$ v0 I6 n! X' A
<br> P3 g M5 l' Y4 f( B
name(用来储存发表的作者),数据类型为“文本” <br>
- S8 F2 |+ X: t<br>
; b* K8 @$ I: c+ x' l! j) Ltitle(用来储存帖子的主题),数据类型为“文本” <br>
: z! Z+ u+ i* U' i$ e<br>& V4 N5 l' ^7 _+ _ J
body(用来储存帖子的内容),数据类型为“备注” <br>
9 J# S. ~ l2 O! f<br>
. g* R. K/ `1 s2、conn.asp <br>
# k: G; p7 w! B* L源代码为: <br>
- |( f# r1 }% u l% i<% <br>: @# d% N( O0 A E3 {
Server.scriptTimeout="10" <br>/ \9 b2 S4 j; B6 b7 n
connstr="DBQ="+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" <br>5 ?. H8 C* c! y- d* |& y1 j1 u
set conn=Server.CreateObject("ADODB.connection") <br>
! A% e/ t G- L! A% _& |conn.open connstr <br>
# o7 [0 a5 f6 D" O( K) u%> <br>( p/ s' A9 w5 Y. [& J7 g
<br>' T6 p9 a& ~, e& r% @2 C2 E
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! <br>+ {& ]# `1 I( B* L: |. u& P
<br>
" q9 Z1 K8 w% E8 _0 V3 Q, A3、say.asp <br>
4 B; R0 j" R( e9 Q: {' y) o; v<br>4 Q+ s% l& w/ e3 C8 Y
源代码为: <br>/ ~3 l4 s9 j4 U+ \* S
<form method="POST" action="save.asp"> <br>7 q4 V9 V- J" M4 s" t' B: i4 s
<p>大名:<input type="text" name="name" size="20"></p> <br>4 o6 K. Z) v) v" F3 v- J
<p>标题:<input type="text" name="title" size="91"></p> <br>4 U2 `. ?# Z7 Q L8 f4 ~. o
<p>内容:</p> <br>6 `1 Q& V' N% ~" h9 d3 s) q- B
<p><textarea rows="11" name="body" cols="97"></textarea></p> <br>
: {4 j C3 E3 j$ N<p> </p> <br>
1 K/ @- C5 s! J2 O0 Q- G<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> <br>- ? D* F& m* B5 q6 e
</form> <br>
( i$ C$ x$ N: H大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 <br>
" K" a& G7 G5 J. K不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! <br>
' a; w% q# a* R4 J6 c<br>% ]: [ d7 |) y
4、save.asp <br>
: f$ P2 E3 L( x/ f<br>
& q9 l. \2 m) r/ u3 c5 U* p# T/ q B源代码: <br>/ \4 e( i; s7 D4 Y/ ~$ O: w; r9 ~
<!--#include file="conn.asp"--> <br>( q) k0 x2 i3 D
<%name=Replace(Request.Form("name"),"'","''") <br>
$ R$ z3 @, ?! z: [title=Replace(Request.Form("title"),"'","''") <br>* Y2 p! m4 p$ s G6 k3 S& j5 }/ ^
body=Replace(Request.Form("body"),"'","''") <br>
: [; _6 J9 d* E) M7 W%> <br>5 ^: S8 T( P% B' \7 c7 T3 J1 a, r
<%if name="" or title="" or body="" then%> <br>
, @: Y9 r' E# j& Q: G6 T' n请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! <br>9 e* T# i& }& c" D
<%else%> <br>
2 L. L6 c$ X6 l" U<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> <br>9 M7 A. M: j/ E/ _. }
发表成功!<a href="index.asp">查看帖子</a> <br>( ~) M/ d3 ?- b) B5 q Z: L& k
<%end if <br>
' i- U+ q9 R6 A5 A! J& Yset savebbs=nothing <br>
8 j0 n" _$ ?0 p" J# i2 T- Y- ?%> <br># C+ b) N+ r, l# L$ X
<br># n5 x& \& }. U2 d, q6 O+ a
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! <br>
+ L5 ~8 M* h& q' F% |1 a& H8 m# ^asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, <br>
# G1 y# i/ R, |4 H* V; l接下来几句: <br>; U& o# s& r5 b R5 k1 Z
name=Replace(Request.Form("name"),"'","''") <br>5 c% J/ W- g! N+ ~6 n( i
title=Replace(Request.Form("title"),"'","''") <br># t, n% m, m' R7 [
body=Replace(Request.Form("body"),"'","''") <br>& d7 T$ V) A) q, q& u. B
<br>
- y9 X, c0 x" P9 i. O7 o1 o' s“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, <br>
; F8 k$ d" a5 N而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, <br>
) G, d8 N+ ?& [6 e2 y& G! s" h& I9 g8 r如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” <br>
1 d% R+ U$ l/ w) m: a; b就是把表单中名为name的文本框发来的数据储存在abc123变量中 <br>
5 _, O* w% c& \6 K6 k" b9 {" e<br>
' \( Q/ G) s n3 z! G& E7 ^接着:if name="" or title="" or body="" then <br>
8 t# o; L3 z4 \" @1 G* q# r) G判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: <br>
1 j! X1 ]' @6 C“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” <br>% c8 f% l( |) ~8 q3 U* k& u
该语句属于html语法,大家都看得懂的! <br>8 z7 c! M3 |3 O5 s8 F! W" F
<br>
# i, V3 Y9 ^8 B* @4 v2 b' {) E' }"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: <br>
6 z5 _) J6 S2 b$ l“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> <br>
2 d' J! y- u; n- I发表成功!<a href="index.asp">查看帖子</a>” <br>
4 ^* y" i/ a W! D( F7 M* C6 c, z<br>; V6 M& s1 Y5 `, W
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: <br>; D. O2 P/ e" i! ^, m8 a( v
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) <br>
% F2 O, J$ ?- F- H5 O# @! b中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") <br>
+ L$ j4 z& K% l, U4 pvalues是“值”的意思 <br>+ J' y' Z# M2 X- \9 ^
就是插入向量name,title,body,向量用格式'"&name&"'表示 <br>
7 i) v& ~. x+ B9 k) d& o<br>5 I% x- r& R" p/ P) h) d, j
最后:end if就是结束if……then <br>* L$ |4 f0 M( \' H- i* J' G
set savebbs=nothing可以说是关闭掉: <br>4 t3 J( O- I6 L4 L, j
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") <br>" s1 p( J" a8 z, o8 o8 K
<br>" e5 Q8 X* Z) g
<br>( q. ]' T- l# ]3 O8 I) a: r/ j
5、index.asp <br>5 x/ B4 B3 O1 a2 A! m
源代码: <br>4 Z( y2 O, R, k9 Z4 J, X" _
<!--#include file="conn.asp"--> <br>
" T5 x! ?0 E3 h1 l+ S<b><a href="say.asp">发表帖子</a></b><br><br> <br>" U8 M) c" `# p5 R# Y
<div align="center"> <br>$ Z r1 _$ }$ ?
<center> <br>
' P) k. e6 H6 d3 P& b, O# X) b<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> <br>& P# k! y% C4 M
<tr> <br>
+ Q# s# J" B+ I- m. X% c8 `<td width="17%"><b>作者</b></td> <br>
/ g' ?( D' ]; ^8 v, j<td width="83%"><b>主题</b></td> <br>
. z4 W0 @3 `& L0 t( X' ^</tr> <br>2 H! W6 _! f1 M* K7 G% B/ I
</table> <br>
5 h2 j/ b7 g, w9 j' T</center> <br>
& {) g- [, x! U- Q</div><hr size="1"> <br>4 l# v7 J3 p* F" v
<%i=1 <br>- N, E; n/ p5 I+ A: o
set showbbs=conn.execute("select*from bbs order by id desc") <br>
# S' V$ ?9 @! I" ldo while not showbbs.eof <br>+ [5 J5 ]5 F$ m0 y6 X# s0 K
%> <br>
1 ]' s" R' H' b$ ]<div align="center"> <br>
. e* h* M; ^& g1 ^. D3 @& R<center> <br>. l+ T' X* T+ O
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> <br>
3 ^" q2 h( o) D# e' E/ a, R* P<tr> <br>
3 {' D& _3 \. s0 U( Z$ ], B; }" s+ n8 L<td width="17%"><%=showbbs("name")%> </td> <br>4 _0 a; ^" M$ p5 M! \
<td width="83%"> <br>
B+ z, S6 I# l4 _! X<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> <br>3 \% [ l7 B% R2 H; P, B% u3 K
</tr> <br>
, A2 i( A( O. J0 y; v</table> <br>& Y# `& q# r5 v% C
</center> <br>
8 g8 V8 D1 D5 c9 R: l7 s# Q9 ^' f</div><hr size="1"> <br>
. H C [4 V4 d- L: t' ^<%i=i+1 <br>% r2 j# b9 z2 d( U. f6 f/ I0 F
if i>50 then exit do <br>1 I! w( N$ O1 E# h" `
showbbs.movenext <br>
% j9 R( U6 f1 e" m; b+ \Loop <br>( ^# n2 ]4 N7 R1 u
showbbs.Close <br>1 t' g( {. p+ r6 a [
set showbbs=nothing <br>
! T2 W' X& p* w: L- A% e%> <br>
& a3 k0 K* C1 z$ `8 k0 q n<br>
* f+ Q* @( @1 {, g, t) s) p这个文件就不一句一句的讲了 <br>( U& {4 x3 o, Q
主要讲精华部分: <br>
2 y& l; K+ \7 [. n/ q$ s0 Gset showbbs=conn.execute("select*from bbs order by id desc") <br>: Q- V! L7 h* }. S5 Z$ Q& Q
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, <br>
0 `3 E8 ^1 J* f. e8 Z1 }1 P/ H7 m7 k还有这么一句:<%=showbbs("name")%> <br>& p( u. u4 N+ X1 t( f+ n3 J; J) I4 y
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs <br>/ e- e: y+ y* ~. u6 N1 \9 Q* @
代码中的i=1和i=i+1 <br>
: x% Y( h! g! t+ Uif i>50 then exit do <br>/ f! b( q P, [9 T9 S4 L" e" W
showbbs.movenext <br>
2 G! v' ?% ?) F, A( q* ILoop <br>
" U3 H9 w. n; Q+ @showbbs.Close <br>
% t# B- J& R- E, a5 \& r( oset showbbs=nothing <br>
: |3 z V* r5 B* I: U5 L<br>( z( @" h w: H7 `* G" n6 R1 s
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! <br>8 l! Q4 U; B7 S- g3 Q
if i>50 then exit do中的50可以修改 <br>
/ o9 S; U" T1 X6 N+ @! c但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 <br>
: ^2 L* G2 U7 G" ?; p* k+ O还有一句很有用的: <br>& }6 {4 u6 C: [4 N& I5 l
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> <br>
7 ~$ m' A* {+ E( d2 x: O里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, <br>
* s8 }$ L. m) h" _6 z% G等一下在show.asp文件中就有用了 <br>1 I$ a) Q7 t- U# o! s4 h0 A
<br>
( _% n1 a6 A; Q1 j2 h7 @5、show.asp <br>$ \, L9 T D: u8 e4 I' a$ x
源代码: <br>" _) r; ]% b j- ^% R$ q1 |* a
<br>
: }. e. B4 `/ r# }/ t. J9 H<!--#include file="conn.asp"--> <br>
# U5 A9 R; o' M<%id=request.querystring("id")%> <br>8 y5 s- o* G& |
<%set show=conn.execute("select*from bbs where id="&id&"")%> <br>
& P) ?$ g* E$ ?, p. i<a href="index.asp"> <br>" z/ f+ T( z6 @! u$ i/ @
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> <br>- D4 f; R' N* s- p
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> <br>2 W' ^! ?( z! d" l9 q) h4 ]
<tr> <br>- F+ i1 Y9 j6 J
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> <br>
, H& V: Y S9 j! R5 a2 ^0 D' `7 s# x& i# V<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> <br>
3 |% b% F5 z5 E</tr> <br>/ v+ @" I4 @+ a
<tr> <br>
1 P9 U) ~ S' c9 \<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> <br>
: k; g0 c0 }% S% M7 x</tr> <br>
! G; U! [4 g- t+ c( M; r9 b</table><%set show=nothing%> <br>
0 u4 j8 q( |, d# S' j5 K, `, G6 i, O<br>
; a6 o) V/ {' E$ s+ _劲语句---精华语句: <br>
/ a, \6 O* D$ m$ Vid=request.querystring("id") <br>% T4 V1 T4 r# y6 T; e) i+ n9 O
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, <br>
4 n$ V, B( a& w* fid=request.querystring("id")就是把地址栏中的id的值读取下来, <br>4 N9 w7 y$ O0 y1 B' ?5 \) p& a
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, <br>
% ^! }! K8 E) |所以show.asp使用id=request.querystring("id")语句把数字读取下来 <br>
# X' v/ z) W& t; Z于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") <br>' m- S# m5 ?/ t3 }4 ?" f! l6 m
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" <br>
. i5 f, r' W) E6 C+ I最后<%set show=nothing%> <br>
9 |; I7 Q. T+ r<br>
# ]: [, o% A" R# _4 Z0 a5 e. k/ r, T- H好了,一个简单的DIY论坛就这样完成了 |
|