返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
8 c9 H1 U3 J2 |真NB..佩服ing .....
# h+ S) C% m) ?大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
. _  O; n+ |& O- b# o: W
% a6 b1 F- `7 K& O. q同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 + x9 v* Z+ F6 \
5 ]( p' f" Q( K! |. A. t
一、建立文件!
" @$ g6 E2 P/ O. ~+ n+ M1 ~6 S最简单的论坛也要有几个必要的文件,就是: 0 t! W4 C+ d0 K$ g! y
& m; }% ]/ u) {
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
5 T% }  _) T' F9 _1 \9 c% p
+ @- ]* m$ V" A. p0 I2 ]2 e$ D9 m2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
- J+ H5 Q1 R) s: {4 {, u$ b8 |* y* F3 Q- ^* N
3、发表帖子的文件----命名为:say.asp 1 v+ L3 S2 y' E+ P8 M4 b3 v8 D: |/ d

9 g+ L9 v& l% M7 M& a( }5 D! Q2 q/ w4、保存发表帖子内容的文件-----命名为:save.asp 0 ?* d; H) {% w1 L
* A( I: k; x2 R/ B
5、显示帖子标题的文件------命名为:index.asp ( e# t. A/ \! O' b0 s) S9 n7 x9 V6 y
" z  @7 C  R) p
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp - ]1 W5 V, k! _& c4 v+ X

  I; L  B7 d+ |: v0 y建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
$ z3 f3 m/ B# s0 z) a+ [% J* s' {6 R' [5 @/ F) Q7 |* u9 {
二、各文件的主要内容
& D/ n6 O, q+ k$ h7 ?3 V: F: a9 X8 P* x" Y5 C) C2 m  M' b
1、bbs.mdb $ [. H8 X# ~% Q' {' J9 U$ J

0 J- G# D% N# i$ k! H8 m" W打开这个数据库,建立一个表,命名为bbs
7 G8 s0 l- W( n; |
1 ^9 H9 |! s6 r6 a& c$ K* V0 `该表中有几个字段:
3 N2 O- s- |# w8 U& e! w% K- S  ~/ b) E  {) m
id(自动给帖子编号),他的数据类型设为“自动编号” 9 b: P0 b; W7 d& d3 y8 p$ N
" P% @9 J, R( J5 D
name(用来储存发表的作者),数据类型为“文本”
; X1 A# {1 q0 @$ `+ a
$ K3 ?/ e* O; e/ }title(用来储存帖子的主题),数据类型为“文本” & M$ j. t9 a# }- t! P, ?
/ ^) H2 o. |2 d2 ^
body(用来储存帖子的内容),数据类型为“备注”
/ J; U2 e/ c) I
4 o; w) C) x, b* V3 T& x2、conn.asp
- T7 n4 X! W6 M源代码为: . ?  O' A1 s, c$ g# }( N) _
<%
) `+ e8 h1 {; V2 d8 cServer.scriptTimeout="10"
: |3 S/ ^( v6 _- s1 S# Rc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 0 e6 S  e; d% J- {7 M
set conn=Server.CreateObject("ADODB.connection") # A) M/ f; w: a. ?
conn.open connstr $ ]' I- T5 }8 `/ j; w: y& Z
%>
8 ]  t! s5 b* o0 \6 }# R: T; m
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 4 R$ E# P7 X3 |

+ {* h- x+ H: R9 K& O/ s6 _* N3、say.asp 8 L' }; Q% a( w5 j2 c

: ~0 {) m* m0 Y8 u5 `源代码为:   h# B" H3 k  Z$ o
<form method="POST" action="save.asp"> " g. p. C* S' @# r% q
<p>大名:<input type="text" name="name" size="20"></p> / [, l) O, u# S6 j# ^
<p>标题:<input type="text" name="title" size="91"></p>
3 B! g4 E( b$ T, b' i  q: o<p>内容:</p>
: m: M$ X0 C  F7 K$ B0 U<p><textarea rows="11" name="body" cols="97"></textarea></p>
+ ?4 U% M# G0 T5 P, {<p> </p> . t8 F6 i, h; \: m, m7 i
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
7 l5 ^7 V" ~$ D, J' a</form>
  P+ k+ T  F* }+ b" A! V4 [大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
. c5 r3 \: t) E. C) W不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
! g; r+ H# l- t# o1 Z
" w, `! G* j& d' k: x4、save.asp + o% X, m4 G. b6 G

6 S' ^: D2 c/ I: f) d2 M* F源代码: ( Z( m- ^1 y1 M% j
<!--#include file="conn.asp"--> 6 W, w0 ~: Q( ~( a4 q8 V
<%name=Replace(Request.Form("name"),"'","''") " l% K2 ^6 K0 N# N/ p0 n% Q6 I5 X6 L
title=Replace(Request.Form("title"),"'","''") 2 r. o! }- J9 g! r% T; g
body=Replace(Request.Form("body"),"'","''") " Q) N3 E( B6 E9 l
%>
3 l/ h+ b; D0 x2 \* L. D# g<%if name="" or title="" or body="" then%>
+ d( g7 k0 G+ f3 Q* E4 r请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! , v1 v& b2 H5 q! R) W7 k4 F
<%else%>
) i* V' m5 l$ _  U. m<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> + \# s* j) L6 m+ L' }
发表成功!<a href="index.asp">查看帖子</a> % O( {7 ]' q; q' z0 @! P9 i
<%end if / `! L! t$ f3 N  u. M5 v- `
set savebbs=nothing
- Q: A4 q1 s, [+ X9 c%>
. Z6 X! Q9 j6 q: h0 o9 F0 O4 x0 n: `, G2 J6 C+ \; m* J' H- Y' X
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 3 x4 f/ F. i! I) r! A, Y9 h4 A& h
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, % c% P  ]5 h. T$ b
接下来几句: % w: L$ a4 F' F8 g: A8 _& K
name=Replace(Request.Form("name"),"'","''")
+ a; B9 ]/ c  x8 N4 Mtitle=Replace(Request.Form("title"),"'","''") : r& Z5 ]8 q* E9 ]& ]
body=Replace(Request.Form("body"),"'","''") ) A# f7 o5 [7 W, |' h. M

+ P( v! ^! `2 z5 _“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 2 I# ]3 J6 \3 Z- N7 M; i! q
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 0 z% u  i4 J2 [6 B  g, C
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ' V. c" p2 z+ R& n6 Q* |  }
就是把表单中名为name的文本框发来的数据储存在abc123变量中 ! a. n* ?" W, A7 |% h1 a
0 D' R8 m4 X, W. ?' G8 G
接着:if name="" or title="" or body="" then 0 L/ r/ c# ]5 @. Z/ ]5 H
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
4 J- |0 r3 m$ N  ]7 f“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 1 d* A& w4 K3 u% F
该语句属于html语法,大家都看得懂的! 4 d  r  n$ L! K0 J# c
- A& t/ l# Q! P. Y
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: - @' F" {" G/ @3 x) o8 M
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ; _7 n  z( m" O1 y& X6 f
发表成功!<a href="index.asp">查看帖子</a>” " Z8 V' Q/ |2 w9 n# T" y) N# f' a

5 G* Y! L# k8 B"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 6 m2 }/ g! S. Y0 _
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) - S) r3 S& j$ h  L" [" U
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
& |6 n) s( U- F1 Hvalues是“值”的意思 8 p3 H3 [5 x1 L
就是插入向量name,title,body,向量用格式'"&name&"'表示
) H4 H* y3 |! V/ L% b& F
( J3 F' B% f9 c; Y  d( a* |1 q( I最后:end if就是结束if……then ! |& `& p/ g* N3 D2 g
set savebbs=nothing可以说是关闭掉:
/ ]! c! T# e9 I- a0 [" X( w7 P. wset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
' J) J$ k% G+ T2 R1 ^9 Q; M+ e( J3 C
3 g2 }% k! I# [; c; a2 G1 e9 ^* n. ^: h* R+ M/ W
5、index.asp
7 T) O7 t, |* \8 R& a源代码:
6 @2 }- W3 x. V, D1 b5 @<!--#include file="conn.asp"--> 9 a3 c8 h: v1 A( ~  E) v
<b><a href="say.asp">发表帖子</a></b><br><br>
* ?! B; H& `! T% k2 J2 o. M<div align="center"> ; t) Y* N9 L6 |  H, S* ^
<center> - `, q, V8 C0 c. B4 N( t% n
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 4 g  d+ d% D5 h9 y
<tr>
8 j+ n4 _8 u- B! o$ {<td width="17%"><b>作者</b></td>   H: [# m/ p  }6 U5 a
<td width="83%"><b>主题</b></td>
3 f" `; X9 i! c7 U  o7 Y3 ^4 ?</tr> . C" A5 q4 ^3 f# c
</table> 1 C6 }/ J6 x( A! l* d# f4 u, l
</center> & I) l6 k- {) l0 J, t
</div><hr size="1"> - E4 T" [9 J/ P3 i/ ?/ W- _7 m+ n/ I
<%i=1
7 Y) j( g1 S* w0 y, [$ R# p% N# Eset showbbs=conn.execute("select*from bbs order by id desc")
$ n0 G8 K" Q2 u; R4 tdo while not showbbs.eof ) R# p9 A6 r  i/ D3 W2 \/ Z
%>
. \. e- k3 W9 C<div align="center">
' E+ C, b9 ?$ C7 j  h/ F) X<center> " p) I6 ~7 g# r5 o6 y% s
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
7 e6 C: K* K& |* s" R# W2 u( z. D<tr> + l5 X; v! D% f6 C! B  x
<td width="17%"><%=showbbs("name")%> </td>
! @% n! {4 |" i/ I$ A8 O  q1 x$ B<td width="83%">
9 \0 {8 s3 M8 k, X' g8 b- b1 \0 h) v<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 2 J$ W  _' g; d
</tr> 3 i: L! F1 F" n% P: B* C5 {! }8 B
</table>
3 E4 I4 H2 b1 K$ D</center> + a& _2 V) Q+ ]4 n
</div><hr size="1">
: t# u" J) c/ O<%i=i+1
. N9 r7 i4 U! _if i>50 then exit do
: F' W; @* X# d% K  U' _  \showbbs.movenext - g! M3 K6 q2 |; H7 }9 ]) _0 [
Loop ( u& F3 e- }$ w' M7 q
showbbs.Close # ^1 P4 A5 |5 X7 A
set showbbs=nothing + K, X9 F; G' I) b; `( D! ~
%>
4 `8 `! N! T4 t3 b4 y# W. `5 z4 S
* S2 o( J2 l; \' `1 ~4 ~" \  \) T这个文件就不一句一句的讲了 8 W, o# A1 M2 J
主要讲精华部分:
1 k8 H$ G/ [, z- t% N7 m4 Sset showbbs=conn.execute("select*from bbs order by id desc")
2 [7 |; u& j( m0 ~  G( y意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
7 P$ {9 t% v; i5 T  r" o2 K还有这么一句:<%=showbbs("name")%> % z' ^, X0 d: H  m5 M
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
( I5 l8 l4 l% n7 C% t' k代码中的i=1和i=i+1 2 {* `3 ]9 h: I8 i4 `( _/ ?$ ?
if i>50 then exit do
0 G$ x& E4 P2 v  u' Eshowbbs.movenext
$ U- V! \% A' j# T% CLoop
; {  P- Z, i! F2 @showbbs.Close 9 O; u% M/ y+ K* m
set showbbs=nothing
) Z, V0 w9 v4 n  U" C+ ]! [; T. v5 ~  g. y+ t. \# t' C" M$ |& ?
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
- G# O6 b. v# T5 v0 Xif i>50 then exit do中的50可以修改
. h" v$ O' `( l8 s4 n1 J& c: i但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄   l3 s5 Y; \* c0 U; U3 V
还有一句很有用的:
( ?& w1 I! Y* `<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>   }! C% k; i$ `; ]' j& W5 U
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
  P$ l) k8 O  }' D* m( D; J等一下在show.asp文件中就有用了
" m* L# P+ l9 p$ e  y! k1 s. O) V( t+ c. M
5、show.asp ! O, t9 o  G8 P; o
源代码: . {/ B8 I0 _/ i
9 @7 C& l8 A/ ]) X# z- r
<!--#include file="conn.asp"--> " o! i) k1 f/ s, q5 \0 _8 Z4 O6 ^
<%id=request.querystring("id")%>   [1 W3 y+ v! B  e
<%set show=conn.execute("select*from bbs where id="&id&"")%>   j" Z! \; m/ j# C
<a href="index.asp"> 2 u0 T" q. d! p2 p1 D# K1 O
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 0 t+ p" d1 ]* @6 c$ G/ Q
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
  ^3 I3 t% x3 q3 \2 |9 S$ @; N4 A<tr>
- t4 f" c5 I! p: R. J, }3 ^<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> * U6 k$ e6 ]/ B2 W3 s8 C( G, H2 v
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
0 w! _; |2 f4 c) m. J  ]</tr>
' g! C$ _, ^5 H- D2 q<tr>
  |, }5 i  Z; V3 s) W<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
4 W: a+ t8 J2 H7 }0 `' B</tr>
) [* |% \  N8 S  j4 S6 W</table><%set show=nothing%>
, l- q2 L: B9 _& _3 J3 w& K, ?" K
) u- |& K& P7 a. q5 I劲语句---精华语句: ; m6 w6 Q6 s1 _8 @1 ~
id=request.querystring("id") 2 p2 x7 M. ^' C, G# P  X
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
; |7 l. \4 m$ o" p2 p. H+ gid=request.querystring("id")就是把地址栏中的id的值读取下来,
' H% e  ?0 a2 c6 @/ U+ k因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, " A7 ?, K% C/ e% F1 \+ ]8 u
所以show.asp使用id=request.querystring("id")语句把数字读取下来 2 w3 ~* x5 w: U, i& o1 S* V
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 0 V: p) ]  }' j- X1 I" Z) L" X
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
' f& V9 l+ T$ {最后<%set show=nothing%>
9 Z6 B0 f, z1 R2 v" d" Y. q* L; h5 |7 T. S9 Z8 l
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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