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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西2 T5 b1 d/ D- W6 K+ z9 ~$ F" f
真NB..佩服ing .....; Z0 a  W; f. T% I+ z
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
9 ^+ w& |9 a; R6 }
( z" j7 q' i! m' u3 g同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 3 F7 H% o5 ~/ R* l8 ]1 \, K
7 ^. ?! Y' p3 G0 E8 ~6 Z* z
一、建立文件!
) D  G* |5 B+ m3 C最简单的论坛也要有几个必要的文件,就是:
9 @$ f  a  k) E7 z/ i. }0 l% T' J
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb + d8 I+ f2 {/ h& [/ |

, t4 e' ^! J2 o3 B7 E8 L2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 1 p. k' t) j6 }' R% p
* z! e7 Y# I  k- R, r% b+ n
3、发表帖子的文件----命名为:say.asp 4 R1 H9 g& {- Z: T$ m% G' U0 P8 z0 F

2 e: }9 p' k0 x; @& `2 M" f4、保存发表帖子内容的文件-----命名为:save.asp
# a1 j2 U9 a- F' v5 C2 f7 r8 }/ j' i. K
5、显示帖子标题的文件------命名为:index.asp / n8 j7 i, H$ d0 L, t- v
+ T/ ~6 C4 o. p# \$ ^6 u
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 6 _4 Y6 O1 |8 @8 r' r8 {$ S
, [$ z8 d6 ], {6 x
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
5 A% Q7 }8 z1 x5 A- B+ Q/ ?) Z  J$ o+ ~
二、各文件的主要内容
" [, g% _3 o5 ]4 A0 f- o  u* i6 @/ C1 u" p1 `7 {: l
1、bbs.mdb % i4 n: K( o/ h) p. |3 C
$ ~7 Y$ Z$ g, ^
打开这个数据库,建立一个表,命名为bbs 5 ]( C8 F9 d5 t( ?6 b6 g' \

! U; t* a8 t3 j/ }+ c/ E- A该表中有几个字段: 6 n) j; u/ g; I2 X

( h3 Z9 z% e; ]# `: |id(自动给帖子编号),他的数据类型设为“自动编号” 3 _3 L1 I# u( t- V9 q+ U
9 M/ C! r' N: _6 b# i
name(用来储存发表的作者),数据类型为“文本”
& p+ d6 }$ h1 G  ^
, r4 Y( v. ]& U. v% ^# S' Dtitle(用来储存帖子的主题),数据类型为“文本”
# p2 W  }. ^4 {7 o- j& S$ }$ J  M5 @$ g1 w
body(用来储存帖子的内容),数据类型为“备注”   c$ H9 D1 O# Z" o: t" x
' t. c5 e* p+ Q# E# O( f
2、conn.asp
. j! T$ O+ L% }7 f: @, U源代码为:
# K- R5 ^7 {  P4 V$ p6 u<%
8 J3 k9 t  G2 ]# m* x+ ^# j3 F# vServer.scriptTimeout="10" % K( @. I, {' @+ Z# L, Z2 x
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
( o- Q* p8 [; H- o3 tset conn=Server.CreateObject("ADODB.connection")
/ \" s6 X- |6 G1 D4 L  \& mconn.open connstr
( `3 p/ J* q0 x/ N1 L; B* M; _%>
2 V2 e* {, T+ |/ Y' a' R( E9 x
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
. n; ~  D( Q# D6 g9 m( J& n
; S' X- [$ d( x* N$ G3 h0 f# n- K9 W3、say.asp
' R5 M) n/ E, y
& P, t0 S, D- {- D0 y1 p" w源代码为: % k  `$ F$ p# r! ~( {/ }
<form method="POST" action="save.asp">
  `1 q- c6 `# _- R) P<p>大名:<input type="text" name="name" size="20"></p> 1 \% U% j% c+ O
<p>标题:<input type="text" name="title" size="91"></p>
7 I2 i& ?9 s: [9 W3 N# K<p>内容:</p> $ N& d1 r! W; H
<p><textarea rows="11" name="body" cols="97"></textarea></p> ; m2 T0 _% }8 T: p
<p> </p> 4 B& L1 L+ R2 f; m8 y  o4 _
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
& n2 F' {# b$ C! d7 m</form>
' \! k1 J5 y! Q! F大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 5 M$ z2 W! G: T7 d/ b
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
* c5 \( a, X  P6 c5 P
+ y: K# ^3 o4 C, D/ _4、save.asp
7 F, z8 V: C! _+ C) {* g
4 G) A# f- ~# \# {源代码:
6 t: t1 q5 x1 p/ t4 x! [1 A<!--#include file="conn.asp"--> + J7 z" W; g) ]' b) m5 U
<%name=Replace(Request.Form("name"),"'","''")
2 x( T3 R8 |, T) d9 F! Q4 b2 ?title=Replace(Request.Form("title"),"'","''") + @$ |. M' F" O8 ?! N% l4 c
body=Replace(Request.Form("body"),"'","''") " F: S; Y' S, ^- D' c
%> + ]- P! f' r' t' @
<%if name="" or title="" or body="" then%> " [" k/ j: E. t  U
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 0 A: c( |- d! m# X2 U$ T
<%else%>
1 _4 h, \( d7 H5 @% d, R<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> $ _) i2 u/ x$ A9 `& q' i
发表成功!<a href="index.asp">查看帖子</a>
- s4 Y5 c, q! _2 ]0 z0 v<%end if : }  B. O. N( D
set savebbs=nothing 5 w- l  W$ |! y( A3 Q; {0 `
%> $ w$ X, Z. u9 R- l
7 W: `/ B% K& ]4 Q
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 5 E( C5 z4 y+ W! w6 t
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
+ u. c- D- j* |% Y2 @- _接下来几句:
0 v3 i0 z  l' _name=Replace(Request.Form("name"),"'","''")
- S3 V/ h) J* M% _3 v2 Z+ Ttitle=Replace(Request.Form("title"),"'","''") 9 j9 e2 N. u9 p
body=Replace(Request.Form("body"),"'","''") / k' K' C% e0 I0 E+ n4 z
1 v, H5 k5 O! ^# N% p' e
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
' a5 T7 P# _/ J# D& I4 S. Y1 M. [5 r而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
9 m  b5 e- O  V. U1 f6 @  x9 m3 Q如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” : f* {. C. n% L6 L0 }7 a4 w
就是把表单中名为name的文本框发来的数据储存在abc123变量中 & {& {. Y- B* s) W! k& g, l

# g; G' [" w! a+ L接着:if name="" or title="" or body="" then / ~& g( j/ t$ w8 j3 u( {; B
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
  U2 R9 T- S0 n" P3 N8 j& Y“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
& n# m& g% g- C9 ?$ k该语句属于html语法,大家都看得懂的! , }4 \* F: B: @/ \9 o

6 \; i0 H' ?& Q9 i9 v, x"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
; r& ?+ @" a) I" }: w“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
$ A/ l( ?+ z0 c1 k发表成功!<a href="index.asp">查看帖子</a>” 8 _/ X0 X( @/ J: Q7 a  D; l# C) ]

! V; N% i  c& Y* O7 y: S. O5 o"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
) z7 F$ t4 j! ?0 V: Ninsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
+ r! H# l/ n. V7 @2 F1 |! r中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ; A: v: X4 q! R% l9 ]: v7 ]
values是“值”的意思
- N6 H& n, ?7 Z+ T% z就是插入向量name,title,body,向量用格式'"&name&"'表示
$ y1 J5 h8 d; }
: k# M: Z% K- j6 q! V! M最后:end if就是结束if……then * @+ ~9 X! Q8 f1 I
set savebbs=nothing可以说是关闭掉: ; x9 u+ c5 f' t4 ?# z
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
0 Z( m- J$ z  I' h. k: N  b; ?
* d: v$ |# B) }4 M
) ^2 t" ]0 `- f" o2 j5 Z% `5、index.asp 8 _, a5 h. G6 }+ h! v( D8 p- z2 g
源代码: + F" x# w5 P# v& \* B
<!--#include file="conn.asp"-->
$ K8 J5 ~+ U3 a: |<b><a href="say.asp">发表帖子</a></b><br><br> . R, j( |4 m9 ]% y4 V8 m+ q
<div align="center">
% b* d( z2 N5 v2 v/ ^' H* V" q" m<center>
' e; C' s. P& c3 W% K3 @<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ' u! e+ H& @# @- [* v1 F# {
<tr> ' a0 u# m( }" K0 d# S, g
<td width="17%"><b>作者</b></td>
0 Y) r; j: q9 w& l0 L<td width="83%"><b>主题</b></td> 5 @) E4 J* E' O1 q+ b
</tr> 7 a( l4 k& F! c6 |! v8 x' l. L+ M
</table> ! ~: G: ^# a) b. e
</center>
# X' _3 ^. W, ~/ L</div><hr size="1"> # N4 k; M2 m/ z! u% T
<%i=1 / J3 O9 G* T- M9 l" @! W
set showbbs=conn.execute("select*from bbs order by id desc")
4 }- G, {" u3 E' z' {- u" w: k! odo while not showbbs.eof
; e$ k6 R$ J, P$ E%>
% v0 U6 g9 K! F- v- f<div align="center">
7 @7 ~7 l9 [  G) n: p  g3 }<center> # b; E8 y1 T' P, S  b7 V
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
% T. M( J) i% B9 R8 I+ l0 m<tr>
0 u# d9 w  v9 I) a<td width="17%"><%=showbbs("name")%> </td>
6 g; L' y8 a9 _* N1 M<td width="83%"> - j3 H* s& b2 n$ t1 k" X
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ) q, E: B2 V( Q) P- \4 Q. q
</tr> 7 D8 ^8 A& m" \
</table> ( S( c2 I  j) W
</center>
$ }( m$ v* @  q; s4 u</div><hr size="1">
: ^6 m, u+ a1 P<%i=i+1 3 y& O: D1 S( N  i
if i>50 then exit do / h5 [; E7 W! ~- z  z, C' w
showbbs.movenext
; r- F; `0 F8 L5 o# ILoop 3 @! G8 O. K/ [: m# D9 ]
showbbs.Close
6 y) C6 l/ k. u# L6 Pset showbbs=nothing % L! I+ @0 c/ s' b
%> 6 u5 N( u" U7 |3 w1 o# n# I) i

8 A% u8 C$ I: J这个文件就不一句一句的讲了
0 s" F/ \) F" N& e! g  e6 H主要讲精华部分:
6 J- C* N# [  pset showbbs=conn.execute("select*from bbs order by id desc")
4 c: ?% H/ u/ x7 X8 q意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
6 Q8 a& q+ y% U: R* x' b还有这么一句:<%=showbbs("name")%>
8 a  z  v: }3 w; |! ~就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
7 A% A+ \# U( i  Y代码中的i=1和i=i+1
/ `% J, Q0 b0 Jif i>50 then exit do $ @2 G# k# y9 s  W1 C6 i( L. A
showbbs.movenext ; M$ R; V8 }8 O, j9 h( q3 d4 k6 X
Loop
4 Z4 k1 h6 O/ E% x% tshowbbs.Close
9 o% B  I# m0 tset showbbs=nothing
9 @7 V& L- E$ k9 R
3 M9 A# h9 j; L# ]4 B9 Z8 A! h5 {* Q这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! - `; _# i. T# V6 {( y8 j
if i>50 then exit do中的50可以修改 / C6 Y  h4 W! E4 F7 q9 q
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 6 S0 H% X6 A. j2 r
还有一句很有用的: 5 ^* |: e* D7 o/ C0 ]4 q
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
; C& P: X/ f( t里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 3 o9 d; m+ g+ R2 [# _
等一下在show.asp文件中就有用了 $ |! U  a( {3 p- Y( a6 O

, e3 e- S) |/ K! |# ?5 C& k6 r5、show.asp ( g& Z  h( `2 z
源代码:
7 [5 g, a. X- E$ }# E5 W: K0 g3 e- y$ Z
<!--#include file="conn.asp"--> + G+ n1 h/ K" o5 Q  `
<%id=request.querystring("id")%> 0 J  ]! ^5 `/ y* }3 K5 h
<%set show=conn.execute("select*from bbs where id="&id&"")%>
3 K' \+ Y+ E! p1 L<a href="index.asp"> 1 y' E* g' N3 K) X* K7 s  e8 I$ c
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
9 A- c9 P8 j, |8 l! W0 N- l<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> * y: r2 I( E) g6 w- ]% Z+ Z
<tr>
, C& l) r* O8 A8 o<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
* \' ?0 G7 ]  G& Q" N3 O<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
8 l0 D" V( y3 D8 m- x</tr> - ~; C% r& W. |( X
<tr>
6 Q! g" E# Q' ]! k$ O<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> " C1 y' F6 z$ w6 K
</tr> ( o7 r" `( O0 I
</table><%set show=nothing%>
+ c# x% M+ n. Z- D( `  L" P8 q# m$ }# s  d# M# ~
劲语句---精华语句: 4 C& P4 E! F) m; v5 q) Y2 W8 g+ V
id=request.querystring("id")
2 x( ?0 x, C3 P在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
# G" B3 s6 K: v2 Q' Uid=request.querystring("id")就是把地址栏中的id的值读取下来,
$ u4 F, N! v( S: E) Y. ~5 c) O因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, : g: D4 g) r7 W) }6 J" K
所以show.asp使用id=request.querystring("id")语句把数字读取下来
5 f: J' {; t3 A' s$ y- u于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
5 |8 t1 O, v5 F- |向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
  v' f& u. g; Q: [# k( ~最后<%set show=nothing%>
0 L1 @9 ~5 B1 c; v0 u9 }+ r! P9 x( ~/ h# r# _
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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