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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西. `; c. e$ s4 U: K- K( h
真NB..佩服ing .....  n; y/ k% l2 ]' q
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。$ E: h: [$ L% `. S
/ c. t5 w( L( W. K2 \( |) I
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 # t5 T; D" W# J. H$ O: t& d2 b! j9 s
+ f! [5 j5 o# ~3 I
一、建立文件! " C" \: k/ _3 i1 R$ }  ?. U
最简单的论坛也要有几个必要的文件,就是:
6 K' o$ V9 o# e  c/ z; [- W( L- E* [/ W1 i0 _# T) c8 y
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb / M& ~6 K) s9 j# f7 N5 X  I
* f0 t# F* _  Q* h3 q
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp ; o4 ]3 ~* C3 P7 z
- P1 k7 `2 P9 l. P6 o7 _
3、发表帖子的文件----命名为:say.asp
. d8 {  f7 U: g! G9 Q: P! M% S3 Q2 I6 u- X& s
4、保存发表帖子内容的文件-----命名为:save.asp * W5 @% s2 l+ q# P$ e: H' p

4 E: D$ N$ j0 Q; \6 k8 j5 V5、显示帖子标题的文件------命名为:index.asp
# c5 g$ j2 `9 q' c! i; g* r6 x
' j9 [' h. P, t' Q: L# j% l6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
( h  h3 v4 U& D# O7 }% H' Z; o* F1 o( F2 S: R; r" U% S" I
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ' X( T2 r/ y  q* U( O9 q' y

5 _% ~9 v  [$ e二、各文件的主要内容 0 y7 n. W* i" E; i) y& ]$ D

, S" ~$ ~! N  k7 @% l0 D1、bbs.mdb ; k  M* w" f0 K- `: a1 [+ }
% O& d2 Q9 I/ b3 {& Z2 J
打开这个数据库,建立一个表,命名为bbs
3 `  o5 Z! H5 ]! ?! V5 V! Q  E  J5 d7 C9 q0 Z6 H
该表中有几个字段: ) J) c: G% r/ u% J+ @$ r- t
& v4 t( k0 y/ e- L" R* ]/ D+ n
id(自动给帖子编号),他的数据类型设为“自动编号” ; ^2 k' Z  z: a9 }
) x  e3 r6 ~0 J( S/ k
name(用来储存发表的作者),数据类型为“文本” 3 u: c# X) X: Z* j$ B+ t

) C) P9 m  S  t0 Z" C  O7 ztitle(用来储存帖子的主题),数据类型为“文本” , {" g0 U" \+ A0 p% x" c) v

( ^  F5 s2 v0 h) V% Ibody(用来储存帖子的内容),数据类型为“备注” ( k1 \: g9 U: \" q

8 Y! Z! K7 Z" Z6 d2、conn.asp
, [1 ~, e4 C& ?* Z) p; z源代码为:
1 N% D, `5 a2 F. _; _6 u<% # w, y" u# N) w0 R# W% p! {9 a
Server.scriptTimeout="10"
# h+ `% X/ B8 N+ I- L# Cc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
9 b! [4 R( p! g. D+ p5 V( rset conn=Server.CreateObject("ADODB.connection") # U% M+ ]9 v1 \# D+ @
conn.open connstr
2 N- _+ `5 s7 \, y; G%>
$ }! t- q2 i1 F. N2 d2 j7 W7 \: ]8 A7 s& w6 m% Q/ m
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ; _) D: L( b! m( B

8 D0 c/ s% c6 @! `4 E1 i3、say.asp
& `% n' p. ]1 q3 u4 Q6 `: O7 G
5 B4 y7 S9 ^$ q: H源代码为: . B9 s. o+ ?# P' P- d# f
<form method="POST" action="save.asp">
  A1 b9 K" c2 }& o: |<p>大名:<input type="text" name="name" size="20"></p> 5 x) h2 _: n$ R" ~8 R# s; c8 @
<p>标题:<input type="text" name="title" size="91"></p> 2 D# M5 y2 o  `! U. p  H! r
<p>内容:</p> 5 K* E6 N% Y! b- e8 i
<p><textarea rows="11" name="body" cols="97"></textarea></p> 2 O. s2 S2 S4 P0 x( b, D0 ?" v
<p> </p> # O7 R; G" B- f/ V3 |2 Q6 @
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 0 N4 B2 f0 `9 ?; V; ~% D
</form> 4 e' Q* b  \" y! L( c
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 7 E/ {) c/ ]$ N3 o0 A! e3 V3 Y
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! # D4 H1 C* y  {; Y! A/ g

! c8 l, |; Q2 z4、save.asp , ?* J1 a* W7 {# B1 P. W

" _2 I" r5 S  Q' D( c2 R8 M源代码:
# o3 F, i! ~$ ]+ r7 f<!--#include file="conn.asp"-->
) M, [# H0 U* Q1 D. t<%name=Replace(Request.Form("name"),"'","''")   A: B" R( P% L/ P' R6 R
title=Replace(Request.Form("title"),"'","''") . b2 o% y# c' `/ E6 N( f7 Y
body=Replace(Request.Form("body"),"'","''") - j9 X8 t1 E5 z' z: {
%> # F0 d/ h% Z0 ^. t# }0 O
<%if name="" or title="" or body="" then%>
  M8 I# f! ~  }0 M) |. _  I请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
% e9 T1 P/ R6 D<%else%> 4 h: b5 }& a. l5 l' s' n4 W+ j8 w
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
9 v2 ?* b! M/ ^) F* q! g& ^2 T1 Z发表成功!<a href="index.asp">查看帖子</a>
# D' ~+ a, j& _7 p( _4 E) F* O+ [<%end if & Q5 F; Y6 h$ n. \" ~
set savebbs=nothing ! C" d- S; W* B# j1 ~$ H8 ^
%> ( s1 ]8 n3 R8 ~! |/ w& y7 K

! N: i, j" D" U9 }第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! % [( l9 n6 ?. ~- |0 O! T
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
% M- `1 B' g- x* p( {. |接下来几句:
( G, K) O, I  R0 j" k  ^$ tname=Replace(Request.Form("name"),"'","''") ! z& |' h# s* J* V; b3 X! K" q
title=Replace(Request.Form("title"),"'","''")
" _# C: R* F" M* j7 p- fbody=Replace(Request.Form("body"),"'","''")
) D+ {. U7 d. q/ R
+ i; @  K+ T  v& f; @. K“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 6 y2 _* t4 l7 \9 ?
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
. \' ~! f8 T6 `# U如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
( o5 S$ l, {2 J+ m就是把表单中名为name的文本框发来的数据储存在abc123变量中 " |& I/ s2 `5 e: p" L

( H. x6 E/ P9 X; l! @接着:if name="" or title="" or body="" then 5 m( S1 `8 T; v' n$ L! s
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ) j  m0 D6 ~# @# I. B5 Y& D& e( k
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ' ^! W' j! r2 E. ~1 D+ J
该语句属于html语法,大家都看得懂的!
0 N, |- H( N3 H+ S9 K! A! a% W. x' r0 z% C* }* t. s+ U9 ^
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: - K6 d' F; V- ~; n4 [9 y/ W
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 3 E& Y1 u( H5 s* o! u
发表成功!<a href="index.asp">查看帖子</a>”
/ @# K' e3 C$ w$ Q3 T
, {0 T, ]/ G- j" |( K* m"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
5 v/ t& H  s) c& G! Z3 w( S3 j# n3 ]insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ) l8 Z3 b3 }7 z4 W1 L+ g# p
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
0 X) A6 {- S2 E: h3 mvalues是“值”的意思
7 m$ @7 l; V% O0 R% W1 `就是插入向量name,title,body,向量用格式'"&name&"'表示 1 T9 @( w# l, J  d: u5 U' w  l/ r

' t1 l& |: I, v2 A最后:end if就是结束if……then
" Y* u9 t$ b' h+ Qset savebbs=nothing可以说是关闭掉:   d# i+ O( ^6 D, ]# ~7 P
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 5 M$ |( L/ }$ r. {; o* ~
6 [! Q+ ?" B: X" ?$ c4 J) L, n! m$ n
1 e- O$ S0 }' [
5、index.asp 0 {4 E0 Z0 x+ k3 n" D! Q/ I' h9 b
源代码:
1 _. h+ |- a! V) [<!--#include file="conn.asp"--> + i0 H! B; Q7 p, h' G
<b><a href="say.asp">发表帖子</a></b><br><br> + P8 w6 |1 _; b6 @: v4 u
<div align="center"> $ h5 z: A- Z1 \1 ~  Q$ H$ a( s
<center> 6 v% i# l7 ^' T
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
5 j2 J2 l. u0 K  q* i7 w<tr> 8 u% |* I8 C1 J
<td width="17%"><b>作者</b></td>
! H5 `7 P  K# s- U  N<td width="83%"><b>主题</b></td> . f5 D  S; Q5 j5 s4 E
</tr> ( i5 |  l$ G) W& @
</table>
; |: a- T8 I$ q% i8 k</center> 9 Y6 T% r7 s0 J7 k& m: w4 K9 B5 G: A' a
</div><hr size="1"> # @. x  q4 ]% K6 H
<%i=1
, ?& s3 R9 _% hset showbbs=conn.execute("select*from bbs order by id desc")
. A1 P* d! f) N3 b% F0 b; Odo while not showbbs.eof
* Y0 `0 l) e& s, r& S! E%>
! _: g' k6 a, d<div align="center">
1 h/ l" I( v# n) I3 y<center> / x) O7 o2 c, s$ F+ n% i
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 6 |0 {! b3 r7 ^: l7 `; ?& n
<tr> ! T4 {! S/ \, a6 }: P, x* X7 T$ @5 K
<td width="17%"><%=showbbs("name")%> </td>
3 ^9 k- t% H- I5 y, w( g3 Q<td width="83%">
) F- f4 h! K2 J<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 0 v6 Q: h) p& ^7 l( J+ C
</tr>
* b0 Q6 [4 h/ L+ Z9 s</table>
2 T- H) ]2 i! K0 R0 `</center>
/ _# `5 A2 p6 W5 e! I/ `3 A</div><hr size="1"> 1 O/ F. X! J5 _$ k& N3 }/ @( a; l
<%i=i+1 8 R& ]4 u3 s8 w
if i>50 then exit do
* s; Y) d' M/ K- \9 Kshowbbs.movenext
8 ^  V- K0 ?. ]! W2 eLoop " ^, E0 [8 Z# ?
showbbs.Close 9 n, `5 R+ A; z  l
set showbbs=nothing
* }+ ^/ |+ q+ w/ a! M2 j! S%>
, m9 c) c) n# ~3 ]# u* u1 ^% m. o
5 L% x1 R' m% t$ S' R1 S6 K, t& L这个文件就不一句一句的讲了
) R/ K/ L% i; Y/ M# v3 F8 y主要讲精华部分:
$ J# L" O- u# Iset showbbs=conn.execute("select*from bbs order by id desc")
( A3 P  {# c  M8 h, k3 P意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
# D- W; E+ A/ \" T$ D还有这么一句:<%=showbbs("name")%>
1 V0 o9 ?# p6 H& u; m" [就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 0 q* A: r, k. F6 o! C' @7 ^+ E
代码中的i=1和i=i+1 * [. a( g- I7 j' H
if i>50 then exit do ; d! m1 \( t2 v* F1 j
showbbs.movenext
7 e# ^8 g9 }( v, H1 {' u' L4 SLoop
# ]9 u. b9 C/ ]showbbs.Close
  ]" g6 c! i' q, E/ c; H8 w8 w6 mset showbbs=nothing
2 L8 |4 ]$ G4 |) Y- _  Z! X+ `+ F: j" n4 q
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
7 n  n8 _' q: b$ k% bif i>50 then exit do中的50可以修改 , K+ X5 W9 F% _/ T- n3 E
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
, [" [$ l6 v% L3 u7 }' r6 M; X6 Y还有一句很有用的: 7 x5 A: y) q( U2 {8 {* D
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ' o6 h7 |9 ?, l- z) t& Q
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
) D% f1 F& z2 b; Q0 r) B( g3 n等一下在show.asp文件中就有用了
2 b, @% s( P/ E3 [) f
2 @+ ^" @& L0 ?4 _5 _0 ~3 Z5、show.asp
) ~4 S' k9 S* A7 I# l/ |源代码:
1 B( _7 O# D3 \! r" K( j; w
5 m/ [: ~- x" O" h4 B<!--#include file="conn.asp"--> 7 m& N3 h8 F6 N3 |  z
<%id=request.querystring("id")%> / l% @( P6 o( K: d+ I
<%set show=conn.execute("select*from bbs where id="&id&"")%>
9 B0 T5 \0 w8 {5 ]: k  Y9 S<a href="index.asp"> ) ?* [6 \4 S: z! w$ w& I
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> / ]" K" m) g6 L5 r$ b6 Q
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ) I( \; d: |! `  y; F
<tr>
, Q6 d! v2 V2 J+ k<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
5 B. X4 G  ~6 \3 W0 j6 M+ o<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> % i7 I, i) s) }5 \$ c7 U
</tr> 1 @- D' I' L3 b9 y7 P+ E/ J. X, @
<tr> ; |, o" _- I/ L9 H" }. Y/ }5 G: z6 }
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
% g  \' E0 s7 a</tr>
: e% M, {, B3 ^5 W- `0 w</table><%set show=nothing%> # j1 p' K2 n. b4 g( B7 k. P$ H% l5 _
! y# }  y  C& h; c
劲语句---精华语句:
+ o- I$ p1 d* O" b8 v5 @$ Xid=request.querystring("id") ( R3 s" h/ F- L- A6 m3 e* p. U
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
6 A' J4 j/ J' @' wid=request.querystring("id")就是把地址栏中的id的值读取下来,
/ L$ ^) }) j  _7 m  O因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
. k2 J& Y! ~. W$ Y3 i  j所以show.asp使用id=request.querystring("id")语句把数字读取下来
( T) o2 V! V' C于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ( f- h5 x$ h' \: B, Y
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ( M& H; _/ b6 L1 O7 D$ r
最后<%set show=nothing%>
) o. x' S: {) C4 U1 t
; I4 |. L- m  A- t' j; g好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

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