返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西' Z' ]! [, \; q. R/ K7 k9 X
真NB..佩服ing ...../ I5 A7 y  M+ Y( |
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。: }+ b3 d* E; [% C

5 N! j3 g& Y$ o  T& O' x同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
+ g8 d- j- z/ W: D. Y' A7 q; [& \# f" G( f# K. [, i* g
一、建立文件!
2 e3 L+ ~  [5 N) k/ ^; g2 X最简单的论坛也要有几个必要的文件,就是: 1 M( |1 o# X- @& j
8 x: W& `, O) w! ?
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ( n& F* n- d4 y' @/ O
* M# m# A! T6 M7 o7 {! z
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
. H/ e1 W5 y$ m2 g8 w) i2 e: N" ~  e
9 ]% |6 G0 n; ?" K7 w3、发表帖子的文件----命名为:say.asp ' }( E; j6 B. J1 o
  G, p  D+ F1 W/ \' r* o/ H# i
4、保存发表帖子内容的文件-----命名为:save.asp
2 |. F6 y! a% x3 s+ |5 t0 v% x, E& ?2 I$ n
5、显示帖子标题的文件------命名为:index.asp " K, S% {# C' s1 {, O: w
" d8 O  `+ K8 u) G
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 8 X9 D, s+ G5 d3 S! N
' A1 h) E1 j# O4 [+ }3 U/ y5 G; m
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ; P6 Z! R5 a9 G" Y
, y( @2 O* w/ E  t$ |0 V) v
二、各文件的主要内容 : F: O! I7 T3 ?  N/ s9 Y
' o1 c/ L: N6 n8 q0 O
1、bbs.mdb
- r$ u% `/ Y0 D! K, T9 V8 t  d) F' l: I% |$ i2 g
打开这个数据库,建立一个表,命名为bbs ; u: I0 @) N( K
: w5 e. Q$ @+ L0 X0 }7 s# O
该表中有几个字段: 4 S, S# ]2 h, z: K- }

2 r# L; Z- q, u0 A' I2 Vid(自动给帖子编号),他的数据类型设为“自动编号”
  g9 H* l. ]- @1 I0 s$ o2 v
! r$ x" T2 D% D! W8 i. ename(用来储存发表的作者),数据类型为“文本” ! h7 F6 \8 v* [' w
% v5 w+ _' P6 S% K
title(用来储存帖子的主题),数据类型为“文本”
" y& g4 d6 C2 T" Z$ W. x; R8 V
+ p8 F2 a9 m6 s8 }body(用来储存帖子的内容),数据类型为“备注” ' d( e. [( C) B8 c0 m( C* J
3 ]; i1 m* Z7 _/ E9 U5 v/ Y
2、conn.asp
. W/ i  }$ `7 D  h+ A  X源代码为:
. j" C! C- A- Y2 B" S, X: f<%
/ a$ a' Q8 b" R: D9 N( G' z4 t) `Server.scriptTimeout="10" " o, I4 z+ p" {( H8 w0 p! S3 D" ?
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ; B# `1 a2 H6 j5 M
set conn=Server.CreateObject("ADODB.connection") $ z9 a' Q+ F' p) ?
conn.open connstr - }8 p1 t, I; w! @4 E" r
%>
7 H0 @; q1 [: i9 D  `
6 I  d8 p  T1 `; Z这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ' k# I! ^3 L# E  [: k
- C) n0 \: P: F7 }8 ^) h; W1 ~
3、say.asp
2 r8 C3 h" Q: ]
. g1 g9 d# j) P源代码为:
! W: u1 e/ r3 C( [, u" q1 w<form method="POST" action="save.asp"> ; X/ d1 O' D. V" {( T6 ]- O0 s
<p>大名:<input type="text" name="name" size="20"></p>
) O0 W+ n! P, X2 Y7 l8 P' O<p>标题:<input type="text" name="title" size="91"></p> 1 c, U1 @5 ^6 Q7 s& M% R
<p>内容:</p>
7 g2 I8 O- F* l1 E( ^& O- \4 i<p><textarea rows="11" name="body" cols="97"></textarea></p>
, K- e1 H  x2 `6 f<p> </p>
0 H# E+ s6 w+ E; {<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
) Q# `- k9 Z  `6 X/ S</form>
' \- K; Z6 h3 P- y大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
6 U6 k& U+ s# G9 a不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! % \2 c' J( o' _) ^
/ z0 S1 u9 s* ^. w/ k8 ]
4、save.asp
  I" s$ g& Y8 b$ ]9 _; K: H0 Y
1 o* v# D+ c& G9 R源代码: , v4 }* Q! u/ q9 C+ E1 [+ X- ^
<!--#include file="conn.asp"-->
: L4 w1 j8 l/ h. }<%name=Replace(Request.Form("name"),"'","''")
% \  d4 k  x- T/ Qtitle=Replace(Request.Form("title"),"'","''") 2 Y* n  b( H2 f$ R- q
body=Replace(Request.Form("body"),"'","''")
0 m! y. |1 L; a& J%>
% j& b" C8 x' U  a! d" S) M" D! ]# f( r<%if name="" or title="" or body="" then%>
# ?! r( A: p0 M( x请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
3 }: Q) K) w3 z0 m<%else%> 5 ?& O4 [6 C1 E. E
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
6 W$ t' L  A% h7 T6 {发表成功!<a href="index.asp">查看帖子</a> + {: n. M& b+ `8 J, `; f0 m) z
<%end if ( B1 J# B# w$ ^/ b- _- O! D( T
set savebbs=nothing 4 |7 T) x( _6 \; h6 f, ^7 f& ?, [; ]
%> 7 J9 D) x4 @* I6 ?+ m# O/ F$ g* P7 q
  b8 \" L4 j9 x
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
0 g, V8 J' F+ X1 s% Masp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
5 I7 n0 K1 N! k6 A: X6 e8 l接下来几句: ) V7 {9 @4 H  F0 }! V
name=Replace(Request.Form("name"),"'","''") ; o8 N3 M- ~8 r+ [
title=Replace(Request.Form("title"),"'","''")
0 ?9 s. V3 U4 ?body=Replace(Request.Form("body"),"'","''")
& c( p" [5 H: n7 D4 R; Q  K: ]  J" N2 T
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
, k; n, B. g, _9 m而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, # [0 y6 w9 k6 ]9 f7 ^* S* T% \
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
- Y8 i! i5 ]4 p( w5 K就是把表单中名为name的文本框发来的数据储存在abc123变量中
$ V, X  c, b' p7 M% V: o2 z, _
7 g% E% j9 Y1 c' E! C2 P% a接着:if name="" or title="" or body="" then 3 l! y: L- w6 a# F% T
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
  T' M* ^4 j. b, y9 D2 {“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
+ p3 X) Y2 M3 j3 a6 B该语句属于html语法,大家都看得懂的! 2 |' o) y+ `0 D' v; f9 H

: q+ c! [: k  @( p- }, {0 I$ L+ Y"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ; |. Y8 c: w  ~1 l- x
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
+ z8 l! I7 r) T8 c7 o+ _发表成功!<a href="index.asp">查看帖子</a>” " R" `3 P" Q9 F# A% q. Z! R
' _: {6 ?2 ^( ^" ?- x% [! w
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
) x: O5 l3 _5 C; n+ g9 n9 vinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
: R/ g% B) r/ n6 `, g% b中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
* a" \+ b# y) _- n/ Z4 B  fvalues是“值”的意思 3 A. O* R" M& Q9 V
就是插入向量name,title,body,向量用格式'"&name&"'表示 - f$ f5 J; p& ?- @/ e

$ d; `/ U) Q- ~6 Y2 |0 Q最后:end if就是结束if……then , ^) P3 A1 ]5 b8 W
set savebbs=nothing可以说是关闭掉:
, P8 C. n# `- ]5 o! ]) oset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") / x4 M5 V! `$ E; R7 Z+ S

+ i/ R+ o. |7 T; |% S! f4 {- U0 S# g# ]4 M3 b
5、index.asp 7 f* g/ v' w8 h& }( d1 A! {& R
源代码:
0 u0 Z( Z$ r+ F8 O<!--#include file="conn.asp"--> ; U& H! j' L- m7 l+ h
<b><a href="say.asp">发表帖子</a></b><br><br>
, v5 `* A  f9 \' [<div align="center">
7 A# ]! L7 O' B0 W( T( I3 e( j<center>
$ z. b. U6 \5 a0 b2 }, ]! c<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> % V5 H6 ]' W. T1 ^' m( L$ a
<tr> % `. M' x, N+ l4 v* A
<td width="17%"><b>作者</b></td> * ]6 I! Y' Q. m5 `
<td width="83%"><b>主题</b></td> 4 W' V, z" h4 @+ a6 f$ E
</tr>
. a4 |: B  [: [/ f# o</table> & {& ~. ^& B5 @' ?9 B
</center> $ z8 m1 u: d$ S( g) O  I# Y
</div><hr size="1">
# a& k1 o9 ^* z! q9 B<%i=1
& s3 A+ W. H; Sset showbbs=conn.execute("select*from bbs order by id desc")
& C! X( h; |! Ldo while not showbbs.eof 9 b/ X1 s* t, ?4 U
%>
; o7 t5 S: F- V9 {- ?<div align="center">
+ @: r6 X/ F( R# n# B<center> # I* y7 j" x6 j& A2 ]
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">   B) I( T5 ~, q% X8 ?& c* E$ o& r8 F8 p
<tr>
; Q% p$ u0 E5 B<td width="17%"><%=showbbs("name")%> </td>
& `4 X% c. E3 g2 }2 Q/ J' r<td width="83%"> * ^/ ~3 S- d8 u7 ]6 a, ?
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
' r8 X: [0 O4 B</tr> # T) B5 A! v, Y$ o/ G/ e
</table>
' w( L% @; ]5 `+ a! i* H& H4 V8 w; [</center>
' F0 u% Z7 D! |$ A8 a</div><hr size="1">
7 B" O2 R/ y1 O4 W' I) ?<%i=i+1
$ C0 }% E6 u( zif i>50 then exit do 3 i! [( C; ~$ ?0 T7 e6 m
showbbs.movenext
- V! s+ A; \7 }9 I% B5 @* r& |4 VLoop
! \- }0 e% L2 s/ V; b1 X- @/ w  A- fshowbbs.Close 6 N6 t1 a+ @; H$ _7 Z7 w  n
set showbbs=nothing & L1 D' A+ W& N. E- {0 `
%>
) s. r/ B- w  K5 O! b7 F0 w( k
7 v4 X" h7 a- `/ b  M5 f5 g5 o这个文件就不一句一句的讲了
& q3 \7 j- }" q  ~+ j9 Q: {主要讲精华部分:
" O0 {, C; s( y. e/ ]0 w/ @set showbbs=conn.execute("select*from bbs order by id desc") , W# v2 w2 x0 k, O, }
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, - b% f% f0 u8 T5 o1 S! }) t( r
还有这么一句:<%=showbbs("name")%>
6 s9 L" H& I4 b' w" ~7 d就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 8 c0 R% f" G$ ?. I
代码中的i=1和i=i+1
4 s0 q( I. l, @0 C9 k+ p& H5 v$ c' vif i>50 then exit do # M) b/ }! B7 O0 ]
showbbs.movenext 5 S+ l5 S1 [0 ?
Loop
& R& m7 w0 M, J, P; oshowbbs.Close 3 n& k1 r3 Y  |8 R0 D$ z% ~1 _
set showbbs=nothing
' x* z  T$ b/ z; E& d7 I( D
# C4 y. [* y, g4 _( G+ h这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
6 f4 I5 a* x& @" B- v! vif i>50 then exit do中的50可以修改 - b7 t1 ^! [  L& n' w6 {) h
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
1 D' E  u- S" b' a& p还有一句很有用的:
; f# }  G4 p6 N  C1 q<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> + Y( F$ H9 b/ ]! k; F, a
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, , E/ v* B+ @+ V
等一下在show.asp文件中就有用了
1 }- R6 H0 V  m3 ?& [$ l3 X2 @
& s* S& o. @# X; x5、show.asp 6 o# m4 e$ h6 o* c4 F8 `" d8 K6 T
源代码: ; V5 }- `- a, Y

9 y4 S4 G$ M) `# }; G<!--#include file="conn.asp"-->
* T* r. R; ]( h8 c8 F' C<%id=request.querystring("id")%> # \, x6 G7 m( T. R( x7 Y
<%set show=conn.execute("select*from bbs where id="&id&"")%>   ?+ ~1 y2 p1 @0 M. ?
<a href="index.asp">
+ Y# J! o1 U( n<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 3 R% F% f3 y( b* e5 d
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
, t" ?; a! N- [: `- p" U<tr>
3 D  _% r/ u2 G  x$ ]4 r<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
# s1 Z! r9 }+ y& S4 Y: ^- V( t0 [<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> % Z' i$ l3 s" J/ a3 {) m5 R
</tr> . y& o3 N& l" h, j9 V8 Z
<tr> 4 T* i4 j0 \9 i6 z- Q( H
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
; y+ ^- Y5 R" N( N, p: h$ t! S4 X</tr>
" s1 K+ ~6 i/ l  s6 d</table><%set show=nothing%>
  o* O( v- F# ~2 W0 `9 ]
' o7 y* n% g: K6 G8 p. M; P劲语句---精华语句: 4 b$ x  x5 |; M/ w% ?3 P3 b! f
id=request.querystring("id")
8 M& d* V) q* ]2 m在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, # g7 B7 ]1 T8 L
id=request.querystring("id")就是把地址栏中的id的值读取下来, % y4 e' O0 g9 |3 {( j
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, / R2 x2 ^8 ~' \) ~8 S% h9 @
所以show.asp使用id=request.querystring("id")语句把数字读取下来
% ?* i6 @  x) g' O, {; D于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
, E- M" z9 V! B3 S向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ! x" A4 D( d2 u; ?6 F
最后<%set show=nothing%> 2 F3 e& f  p1 }$ U2 V. Z
$ L% N; R6 A& M4 }7 A5 t
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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