返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
% ~) f, |$ Q- n8 x$ r% b( }真NB..佩服ing .....
3 ?' S/ S  ^/ X6 o: e4 L大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。. }4 ?2 P2 O2 ]. n/ }) j
; ~; n( {. X6 x8 t* ?7 c
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
9 H% r% }$ a* V4 `3 M
: v3 |3 E0 a3 l+ X3 |7 c一、建立文件!
. W' P/ T* F& i! g最简单的论坛也要有几个必要的文件,就是:
, j. d, k; M& Z7 W# `5 _! C/ y% B) b% f. w/ _, u. g
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb " R. ?4 T  W% X  }  x

" H, A' M  i- X: ?+ s) G* j4 Y6 l2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
. {7 |& g. y1 g# f- X* W7 k& ?9 P) I+ h4 S8 U7 p0 [* A& R
3、发表帖子的文件----命名为:say.asp 7 L; J" H' O; _% z7 e
( ^, C" b+ N. a, ?
4、保存发表帖子内容的文件-----命名为:save.asp
8 E: ?; c" W2 T/ S7 s  Z
' g, N2 i+ a+ j/ Z) q) G5、显示帖子标题的文件------命名为:index.asp - \4 b: \1 O2 k0 V+ P- b

# n: O9 c, V9 L2 G% B6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 9 n  I: M" R% S  U$ X/ @
( N! s9 L( d2 g
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 0 e+ p/ S  s: v* u7 O" S$ q/ Q" g
7 g/ j! M2 c& @( p
二、各文件的主要内容 " B) \9 P. k* r$ h/ r# n

' |3 y6 x% J4 m/ ~" B! f5 H7 A" C1、bbs.mdb
( y# h# U3 H7 s+ ]  [  g3 x3 L& g/ ~, c3 Z% G, x" c% h
打开这个数据库,建立一个表,命名为bbs
8 Y; d& b. @$ t- b
8 u( v' }  X/ s该表中有几个字段: . p7 p$ Z3 M9 f# r4 c5 L# v8 U
: h: X6 D/ }5 l
id(自动给帖子编号),他的数据类型设为“自动编号” , O9 I6 s: |+ A, k0 J7 ~! ~

' e6 u9 G" R8 @" ?( j8 Hname(用来储存发表的作者),数据类型为“文本”
' [) f' z0 r3 x9 R+ T. G
) c: s* D' d- {# Q7 X4 Mtitle(用来储存帖子的主题),数据类型为“文本”
) p# A7 V6 Z( i( F  O$ y& {4 B6 q' ]# J# ^' E! G- H# l
body(用来储存帖子的内容),数据类型为“备注” " n% |* o! b; k* w
. \0 s( w' H* g4 p; `# q
2、conn.asp
9 e: Q9 D: N; W$ I$ e" d源代码为:
) N6 i) Q) I, M) p+ r8 ]- N: C4 `<%
' J2 l8 V, P0 LServer.scriptTimeout="10" / {$ s7 a! g$ v8 s6 ~# F6 U
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
4 W" x3 e7 v; K; x2 O* bset conn=Server.CreateObject("ADODB.connection") ' p9 P3 u% T( A3 |6 L
conn.open connstr
) w. U" _! m/ @%> * |0 [# e$ ]* K' H+ Q" I( S

! O' V5 J/ n8 O% P" o. `这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! # \4 W7 k& q$ g8 o* ^0 X

/ L9 ^7 M( @) Y% I3、say.asp 4 d& U: z, w6 J9 l7 B5 n( s6 q

' c0 B5 [: q, ^源代码为:
& \' }5 k8 F, O/ y# Z, {<form method="POST" action="save.asp"> ' {) Q5 {- N9 {
<p>大名:<input type="text" name="name" size="20"></p>
( k- h8 c( I* D  i& s; q0 M<p>标题:<input type="text" name="title" size="91"></p> 4 U5 x7 P4 `4 F: d6 u# c3 O& Y# _
<p>内容:</p>
2 L6 y* C: E( J' E& _+ K. p<p><textarea rows="11" name="body" cols="97"></textarea></p>   l2 C  U) c% U: W4 b8 j
<p> </p> 6 o) L: F) P) i3 ^0 f' v& P
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> + L' |$ B8 l, I; ]. J% T2 I
</form> 7 l+ x2 x+ h# _' o5 m; ]; [
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
6 C* Y6 Y4 K3 P不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
' ~, W) I% a. Z- B' h
- t) j2 w# Z8 z# n3 J4、save.asp   F, P, R# s7 K+ l9 P: u% g" C: O
: p- t' q* Q0 D9 L( b! P
源代码: " j2 ~! d. g) w, f: @
<!--#include file="conn.asp"--> $ E) u1 w, \7 n, r; w: e" f
<%name=Replace(Request.Form("name"),"'","''") ! t3 W8 a" R' N7 L) @4 c
title=Replace(Request.Form("title"),"'","''")
7 E; w4 H1 F5 d! v0 C/ Ebody=Replace(Request.Form("body"),"'","''") : m5 f# g9 x) t# {' [6 s: a5 v9 p
%> . F9 p8 K8 M- }! @7 l" {6 z
<%if name="" or title="" or body="" then%> 9 V5 O  h. u  S2 q3 l% Q
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ' X6 \9 D5 _' ^4 o
<%else%> - m% z# M+ \  p
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
7 g' F% a3 u* a  e2 ^( _* ?发表成功!<a href="index.asp">查看帖子</a>
) y7 T8 L: \1 Z" S3 ]<%end if
, o2 D! c/ K4 H! d/ pset savebbs=nothing * m# }2 U4 [  W- t3 [+ O2 k& Z
%>
9 M4 D. d" w9 o
# j& r/ }$ B: S4 w' u第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
2 m  `( Y  S. M# h& masp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
$ Z1 }6 M# ]4 s9 O* U: B4 m接下来几句:
5 l# u; X  w" V! V1 t8 o8 ?% Nname=Replace(Request.Form("name"),"'","''") ) }7 x0 b! T1 e/ M. T' w7 |' S
title=Replace(Request.Form("title"),"'","''")
/ C: c4 O( _! S5 t2 ^6 |body=Replace(Request.Form("body"),"'","''") 9 u# @4 G7 {% S) A1 W$ i

  f( Q7 z; [7 ^6 Y$ L) @: Z“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
& R2 i% m; k4 ~: _: M1 X1 M* j而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, - f, F5 h$ I" J5 z; Q' j, d: B
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
; E6 g* l- U" i/ Z+ ^就是把表单中名为name的文本框发来的数据储存在abc123变量中 ' M3 @- o) o  o' E4 C3 ?
7 T  o) I  \% c0 K2 h: v# @
接着:if name="" or title="" or body="" then 2 S8 b2 E: J2 S# ~: [, N4 O
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 5 H) \' \$ G. G4 ~" b
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 6 g3 I2 @1 I* i
该语句属于html语法,大家都看得懂的! 7 g6 _- f3 n6 |  ~9 g* U) C

) n& o/ Q) G% K9 T+ }"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
, S3 w* \1 L" g8 d“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ' |* G: G# P% V  j
发表成功!<a href="index.asp">查看帖子</a>” 2 J  v1 w: a  q
+ A0 U2 G+ g* j' h
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
. e  M! `0 ~% rinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ) D! \5 d3 c, t' `$ e! k* D4 h
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 2 X6 H! T7 B2 `& V3 a# _
values是“值”的意思
  V( V3 R  F7 X( c; Y- [' v就是插入向量name,title,body,向量用格式'"&name&"'表示 - f6 F  n$ \7 F* v$ l

8 z4 j! B$ [0 N最后:end if就是结束if……then ) y% P* I8 r& r' q
set savebbs=nothing可以说是关闭掉: 9 Q4 d, P/ |) Q6 z0 E3 f' v
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 0 n- y5 Q& r" f0 k, d) V4 D0 v; G

" a4 N" g4 p, W, ^3 i6 }
' W, ~. K5 q7 v3 ?1 ?; e1 H. C4 M5、index.asp : t9 O" H  ?3 }+ A: f$ s( v2 t
源代码:
/ B& k3 a! j# }7 a4 f$ N<!--#include file="conn.asp"-->
5 a- m8 c* t, B. `<b><a href="say.asp">发表帖子</a></b><br><br>
4 h- p8 Y4 v& u, ?<div align="center">
2 C% }! x; A# f1 ~2 }5 _6 i( r$ A<center> 5 T- C# x! b, X$ j
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
# N. y. w8 c: T2 D% |/ U2 Z<tr> ) [" A. Z5 W1 l& Y4 ]
<td width="17%"><b>作者</b></td>   ^& z, N( K1 n$ s3 I6 q
<td width="83%"><b>主题</b></td> 1 r  T+ ~% L9 F5 `" L: K; b0 ]' M
</tr> % v3 F7 _  ^" q5 o: }5 C* l7 j5 W
</table>   k; C8 F: Q9 s
</center>
# c( m/ _# @' w9 `</div><hr size="1">
, w1 H* }) I& h& m<%i=1 % y5 R( O5 r' _. Q7 d
set showbbs=conn.execute("select*from bbs order by id desc") $ ?$ h9 n8 k& L" ?
do while not showbbs.eof ; i: S! {9 b2 x; y6 \" V6 t
%> ; v: ~- k) c$ `: V) S) I4 L! a! J7 _
<div align="center">
3 @$ h, T# f* M<center>
/ K' H- ]- O7 }/ g<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> & T7 e" b4 |: d$ Y5 g/ z
<tr>
% G. F) a) V2 z' e<td width="17%"><%=showbbs("name")%> </td>
' t- d/ A7 Q9 A* K4 s<td width="83%"> ; \: r! X3 l7 ]2 _/ i* T! F
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 6 x; q/ l* r/ Z& ?' `- x4 d1 V9 K
</tr>
4 B1 n; u8 T  x6 @, Z</table>
' t' m% ^) b/ I5 t5 m% X</center>
8 y0 j" X4 m+ f</div><hr size="1"> ; C: V' g4 r. N
<%i=i+1
' T7 d6 L5 A* D. {& ]0 I% I" Vif i>50 then exit do 6 S- R! ]9 t! ]9 _  y, j' l. o% A
showbbs.movenext
/ y% ~/ }# M2 [$ f$ x; H1 _Loop
/ \& w  D  V% c+ Z. Sshowbbs.Close , e# B0 e: C) U3 s) _
set showbbs=nothing
7 i1 f4 R# p! [" B' Y) C( n2 H. v%>
$ m+ C) s5 m+ T. Q" u% k
$ e; m5 P( k( G, g* M这个文件就不一句一句的讲了
6 Z$ L( n: {5 e, \主要讲精华部分:
3 K. l2 G9 k8 w6 }* Dset showbbs=conn.execute("select*from bbs order by id desc") 1 P2 B' \  u$ w% n5 C
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 6 |  u5 Z- s# \" y9 p3 [& c0 A( @
还有这么一句:<%=showbbs("name")%> 8 _3 s* E; q+ k$ b
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
0 j8 E" B# c2 d. `" L, [3 p代码中的i=1和i=i+1
( C4 [1 ^( m: F+ ?if i>50 then exit do
5 a) q$ f- c* i6 Tshowbbs.movenext
. J8 F4 U( `5 `& m0 Q) cLoop
' |( k+ b+ o! d) cshowbbs.Close
7 e# X* h( F, _# g& u; W% ~# n. p- {set showbbs=nothing
8 Z- ?7 s: y! G; ^( ]" U
0 \6 W5 m- {& X; Z这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
% W5 o' v3 N" D: P7 |, G; Mif i>50 then exit do中的50可以修改
* \0 s* m* X+ K  f  z1 n9 w但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
' g0 n: A. h8 M9 i, u- ~. l还有一句很有用的:
7 l2 V: [+ Q2 F9 H  s6 I# A9 x<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 7 E! i0 O( E5 u: G8 _
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, - U8 u( W4 Y1 S4 L5 N2 N
等一下在show.asp文件中就有用了 5 D8 [* o& U  f9 F: ]& K
9 H0 P7 ~( C' x( E% W1 I2 Z
5、show.asp $ g" x3 U- B  V, ^* z
源代码: 6 K! @# S) a3 ?, |  I& j0 D: b
) L9 }" `5 f* M% {! y8 U  X( ?7 B7 Z
<!--#include file="conn.asp"--> " C. J' l# e+ o/ f/ H4 U5 m7 o" Y
<%id=request.querystring("id")%> # }* ?( ]5 p8 y( d  D- g; h  \
<%set show=conn.execute("select*from bbs where id="&id&"")%>
, |* t3 ?# \) O4 J* K" H: J<a href="index.asp">
7 c& A4 B% Z: n, O4 H0 r- i6 k<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
7 a7 g2 v% I6 u) e<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 5 j% W6 T3 S% c* B: f7 e
<tr>
+ D! U% `. b2 e" |& R<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ! Y8 z# P3 R+ A9 e
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 6 _( R# i$ [7 d: O# T5 x
</tr>
5 q* J$ q5 C( Q1 A0 ]: B<tr>
* [1 W! Y2 x6 h9 X8 P' M<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
' |7 b$ n9 ~7 K8 K</tr> ' Y0 S+ d# \. {3 Z7 C- A
</table><%set show=nothing%>
  `$ ~1 e- \3 x
3 V# F& u- o6 f* e3 F劲语句---精华语句:
+ f, X6 _, }# E8 H* n; A7 ^id=request.querystring("id")
" g- H: b+ h: u0 r1 h在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
2 O: w% C$ j. f7 P1 G; mid=request.querystring("id")就是把地址栏中的id的值读取下来, # U, s3 M( J$ Y4 g" s9 q+ G
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, " j$ M; g" v$ Y; a0 f; }
所以show.asp使用id=request.querystring("id")语句把数字读取下来 ' G6 `4 `6 b! P0 @, |
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
) n% o) \8 G" g$ h向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" + s# k! n' w! c2 i6 E% y
最后<%set show=nothing%> ) f3 i3 E! H: r; f' p% ~
% r1 G! B  {- E6 v( p; E- b2 g
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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