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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西$ _! ?' ~; `" N. g3 j5 e
真NB..佩服ing .....8 u( m9 s# J2 R. x
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
1 w( u6 K4 O; S3 q! j
$ V2 L" [  z4 o) l, D- J- S同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 , P8 g( u! v% }& X5 b, C5 [

: i! a3 q( S+ S; L4 V9 i' i3 @1 T一、建立文件!
  S. Y* b  w) E% t# S+ Y5 B) J最简单的论坛也要有几个必要的文件,就是: # r3 k. n3 ^2 G" |% \3 s
' I% F. _, Y+ R% R
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ( a5 H) L# I! q5 C; d) ~4 T  p

$ l/ A6 G: S. S0 Y: J( Z. L8 w2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp $ o% Q+ O4 _3 h9 O
* }6 @% L' U9 e9 I6 E
3、发表帖子的文件----命名为:say.asp + V. m% u6 [* z  ~& A- R' d
% v  h. y0 ~- ~6 o# f  K) J
4、保存发表帖子内容的文件-----命名为:save.asp ! \8 u1 D8 a/ ?) X$ E: T
5 g# @+ V1 T% G; C
5、显示帖子标题的文件------命名为:index.asp 2 n- U. l' o# W  p  A2 l: L
/ k6 w" m. d0 K  \$ y! Z3 ?
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 6 b  p; x2 ~& G. e% G
9 U7 a" X1 y) N+ P9 a- ?, O7 n3 \& D
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" / c' _; J; v. m5 f- D, E
) I5 [+ _( F5 O
二、各文件的主要内容
% J1 h, Y! j: P& }7 Q
6 u& Y) V$ Y* ~# z  u) X1、bbs.mdb 0 w$ t9 J  |5 k% u2 f7 y

0 G! v2 L8 S2 y* |打开这个数据库,建立一个表,命名为bbs
. g6 F9 @8 b* T' {5 l( f
: E  @# N0 O9 R! B+ m; s  G该表中有几个字段: " ]6 I. v0 I6 D9 Y6 j5 d8 s. a0 q
, t% W+ w# X$ `6 U
id(自动给帖子编号),他的数据类型设为“自动编号”
, ~  ?' ?0 M0 m& `; h
' K% [" ]) S# K" F) K! [name(用来储存发表的作者),数据类型为“文本” - h5 s) @- Q6 a6 R8 f& O
! T- K3 Y8 k! k7 ~, g3 H0 O5 `
title(用来储存帖子的主题),数据类型为“文本”
9 F2 u6 z7 D* T. D5 Q! u7 D9 Y3 T4 \' V- i$ b
body(用来储存帖子的内容),数据类型为“备注”   O4 W. }+ O1 b# U
- ~1 }% m3 M  \. I
2、conn.asp 2 }1 X9 @. J6 n
源代码为:
$ ]7 S& q3 C, o& c( N$ x<%
! S; F( f6 w( Z% F) p+ M- sServer.scriptTimeout="10"
# f5 b% s# }- z, Z8 c4 ?5 qc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 6 m# q! i. y4 D; k1 B) q
set conn=Server.CreateObject("ADODB.connection")
( f$ g; [- o/ j/ Gconn.open connstr
1 u# V) [/ i! `4 D. Z%>
, v! Y/ l3 I. c) h7 b8 A9 u* w0 q6 I: {8 W" j0 ~+ q" e) ~
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
: L7 T( x! d. G) ?
, s* _  |6 ~+ n# R+ t3、say.asp . s: p! y, e! D' c& j5 s' p) e+ l

6 Y+ ]+ O; Y5 j源代码为: 5 `6 l+ L! {4 C% M) k* {1 W
<form method="POST" action="save.asp"> 2 I* J9 z. @9 m7 i+ N
<p>大名:<input type="text" name="name" size="20"></p> - r& _' E; A! ?3 A  I
<p>标题:<input type="text" name="title" size="91"></p>
6 }0 ]7 n6 z8 I% _<p>内容:</p>
* J3 p7 I! R4 R. O- E2 b, H& F<p><textarea rows="11" name="body" cols="97"></textarea></p> ; v. X) s# w, M9 u8 H: X; E
<p> </p> $ C5 v2 e: A! f3 U) Z3 l
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> " ^- L9 ?, ^! h& @
</form>
1 x4 I1 `$ f: }6 L' a大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 + J% g0 O) c. b, D8 h7 g  k5 J$ o
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
: n0 w5 R9 I: R1 D- u0 {: t% y; I
! m$ N; g1 ~' t4、save.asp : k$ W- p9 }; C4 ~& P; |" L

* u" L5 G0 f# a源代码:
( k4 t% }5 |3 k<!--#include file="conn.asp"--> 8 V( S- ^/ E3 u- w# C5 Q6 |
<%name=Replace(Request.Form("name"),"'","''")
& H$ G+ l" U  Atitle=Replace(Request.Form("title"),"'","''") 3 {5 R7 p( ^9 A- T+ F6 s/ a! p
body=Replace(Request.Form("body"),"'","''")   Q# u! V2 H0 P2 k
%>
0 n5 C- ?! g* {6 q' ^) G<%if name="" or title="" or body="" then%> ; R+ A8 J+ f5 ]' x
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
& G- U% {1 p2 R1 \9 P; t/ W5 `<%else%>
5 ]9 W; Z0 l, @9 R  }" p" L9 {<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
, G9 J% F8 |* r2 f3 A  k发表成功!<a href="index.asp">查看帖子</a> % r+ I- o. l( q% F5 \$ d: f
<%end if
. ?/ t' L. \, l5 Vset savebbs=nothing
+ O+ O: }$ T* Z' C9 _%>
5 y9 t* W, \1 v& k0 W/ _1 h
# [( ~1 [1 N1 B' F* T* \% {第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 0 i) v2 w4 v, J
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 6 C: ^& Y8 E9 o6 T4 j3 M
接下来几句: 7 m8 m# W5 I3 y, y7 H3 C/ g
name=Replace(Request.Form("name"),"'","''") 1 e5 Q* d7 t( M/ n: Z( n& |' I1 }6 M
title=Replace(Request.Form("title"),"'","''") + {: t! J  K) e5 J# O
body=Replace(Request.Form("body"),"'","''")
8 I$ ?+ E$ z, n* v2 \9 a8 ?$ z# \2 [+ Q) E( f0 h5 y8 _
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 4 E8 N& Z# W3 k9 t8 ~
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
4 i9 y+ O" D( C/ X; D7 K1 E如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
2 C8 B& ?: B& N8 t3 n就是把表单中名为name的文本框发来的数据储存在abc123变量中 ! {6 C: d6 ^" ]
+ M4 n$ A9 w4 h! g
接着:if name="" or title="" or body="" then
" n/ e4 c( Y% F( b9 o$ Z判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: % P% k/ ^/ q, u2 x  ?: r
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
) m9 H( W( ]) {1 f该语句属于html语法,大家都看得懂的!
3 z; q0 T5 l4 t" F/ D/ Z
" u: M- O6 O, e2 x7 T: `6 F"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ; e9 y% d  ?, L* f; ~
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
5 ~! t  D/ ]  Y发表成功!<a href="index.asp">查看帖子</a>”
8 s1 ]7 U9 z! X; ~+ |: v- ^- b5 g0 x6 U* l' a1 _& \
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: ' ~" ?5 d/ c/ |2 \" g0 s' S  k5 S
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
& D% `: s# |6 r- H8 ^中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 9 F: g- G! r  L4 G6 G* T$ p% c
values是“值”的意思 % Z- m- i) H2 ]% _% P; F
就是插入向量name,title,body,向量用格式'"&name&"'表示
' x# H* d9 g. k" s$ D
* H# P2 Z# B7 w/ n1 v4 q  r最后:end if就是结束if……then . h& v  r/ q0 [! ]
set savebbs=nothing可以说是关闭掉:
  m: l0 E: u! u: mset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
: `" b7 I8 C* c
, H& @5 ^- v' x: G, @" F
. j, x; e+ v3 f: j' Y% l8 J5、index.asp
' F) Y8 o- t4 Z7 c7 f) m% C5 a源代码:
  t+ B, v  D4 l$ T. K8 F) u<!--#include file="conn.asp"-->
- h3 F3 o3 D- ?  @5 R$ D<b><a href="say.asp">发表帖子</a></b><br><br> , a# X% d; {7 W/ S: v. o
<div align="center">
( q, j" p2 W- C<center>
( F4 Q6 c2 @; r3 |7 Y  T% Y<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
& H# Z- X9 `/ b9 m% x<tr> / v) v$ q$ c. E
<td width="17%"><b>作者</b></td> $ ]% F% V' Q; {0 g% E0 t* U! E
<td width="83%"><b>主题</b></td> $ e3 W. U) s& x6 E
</tr>
8 t! d/ Y0 d7 e0 P) [1 C! m</table>
6 `8 l* x* c% z8 ?& l8 p2 n</center> % M1 B' U6 D$ U5 k6 I$ a5 E& T
</div><hr size="1"> * _. ?- L' L; Q
<%i=1
' e: E5 N" ~2 a9 p+ x; oset showbbs=conn.execute("select*from bbs order by id desc") " K& I8 {0 y5 p$ T" X
do while not showbbs.eof . I  ?! @1 Z4 t9 q  m/ I
%> & b7 {2 Z6 A7 u7 y* ^( Y5 i" m
<div align="center">
# ~& t& V1 b, J; D<center>
+ B" }; s5 P; L+ A9 J<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
0 p8 f2 q5 t6 Z3 Q, V: v<tr>
5 C0 V. k; l0 a+ t8 |<td width="17%"><%=showbbs("name")%> </td> ! m* X4 z+ m- f
<td width="83%">
: m$ ]3 m. ^3 s- s3 C. m, G2 Z% a<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> + ?+ m4 D2 N' h8 }6 W
</tr> % h  {8 B2 G+ c0 n9 p, h5 ~
</table> ' W. p7 U1 {0 U9 q
</center> $ A2 f8 P1 l9 z4 s- c& ~% Q7 J
</div><hr size="1"> 8 q: x1 j6 _0 q3 i
<%i=i+1
7 w7 l: q, \. }' U! s3 }4 fif i>50 then exit do
* T, }8 w! H# }) }showbbs.movenext
" M+ g8 l1 j1 O. DLoop : Z: }; d: j3 {) R- `8 V
showbbs.Close " A4 e9 U) E/ R
set showbbs=nothing
, R7 C' A6 K0 W3 X, ^5 ]0 Q% X%>
1 q' B) e7 |3 ]" _0 R( n. w* B+ ?* G( h  M! n) ?( F& p
这个文件就不一句一句的讲了 5 O7 U! Q9 D% T9 [
主要讲精华部分:
0 f( G7 f! r) h) Gset showbbs=conn.execute("select*from bbs order by id desc")
  c/ u' ^. `) n/ g" x意思是:向数据库中的bbs数据表查询数据,并以id排顺序, : ^) I$ _6 a. ?4 {% i% ?
还有这么一句:<%=showbbs("name")%>
. G. s6 k) \: j1 s" L" A, [5 O. W1 }& v就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs / V5 ?- `, m) C6 Q" m6 I2 y
代码中的i=1和i=i+1 2 F, m3 R1 H4 z' ^7 B  {
if i>50 then exit do
( V- J8 ~: r# E9 A. D2 Gshowbbs.movenext
" D% a6 r% ]; s) cLoop ) V6 I. K7 R$ a# ~7 M
showbbs.Close   S" @" W: Z; S2 P+ K
set showbbs=nothing
: {: P" I6 _, e9 ?/ i4 m4 g
  ^9 C& J$ L  h这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
8 l- Q8 d( o  j0 _2 I: Nif i>50 then exit do中的50可以修改
; p5 v/ s3 o  K- N0 S5 I但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
3 Y) i0 j6 s( m9 d. b6 N还有一句很有用的: 5 m/ C/ o- Z$ t$ W8 W; D: h7 O
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
8 h* a$ Y0 W- M! }' w; W里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ) |+ Q( F; Q3 r9 W
等一下在show.asp文件中就有用了
) s7 B* g( Z" ?* R  d
" `, n4 B8 Q4 e2 k% z  b5、show.asp 3 M( |6 I) [# O7 u4 G% F
源代码: 5 ~9 u2 E6 p0 \/ W+ Y
- q4 t8 V1 ?( R3 }9 w3 V; Z
<!--#include file="conn.asp"--> + |0 i+ I& D* C& }" y
<%id=request.querystring("id")%> 9 D+ B3 s8 M5 w( e  s. y( y4 m* ~
<%set show=conn.execute("select*from bbs where id="&id&"")%> % g! H+ ?5 a6 c. o- C
<a href="index.asp">
3 X* Y7 K+ @8 d( A8 m- g<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> % d* T: F6 a* P4 Z1 t# c1 y. R
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ' D( F5 c' I% c* L9 t8 V" _
<tr> # r  |* A) A2 F* G# _
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 6 f3 h& G$ l0 H5 v" S" p, _. Z3 A( C
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
8 z/ V. x" d1 Y( J4 B</tr>
) o: l/ s2 d9 q, ?# F+ s! Q* r<tr>
7 v: y/ f2 v  s0 |. }/ Y. X<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
. U3 \0 M( x0 {% ]8 ?</tr> * b: ]- H, O( @) A% t+ y+ q
</table><%set show=nothing%>
2 B1 ~2 w! S. Z* g2 L
9 A; v8 d: Z5 n( [; n- k劲语句---精华语句: % [0 a: `& y: n( a2 `  {3 B
id=request.querystring("id") 8 s5 X; q. a! G/ x2 t( |3 \; e
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, : w% ?5 g/ F. j8 m
id=request.querystring("id")就是把地址栏中的id的值读取下来,
3 J) c( A- m9 q7 I1 J因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 7 A. M' J  O- j; S7 E
所以show.asp使用id=request.querystring("id")语句把数字读取下来   J0 L: t# z1 s% e/ F
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
& j) _7 _' ~! [9 T9 i  c向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 3 k8 q0 `+ |. z, y( A4 }& f) p
最后<%set show=nothing%> * v0 ?* s1 x0 E3 V2 L9 }
0 |; g  |1 o  t& P* S/ S% R: y7 r1 Q
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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