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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
! [' A7 }' |, t( y- F* w8 L$ n) V真NB..佩服ing .....
" G9 B  ?0 ~/ M& G, n大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
4 K0 v2 Z" p* q4 @* s- p4 P+ u5 |$ g" z' t4 r! ~/ ?
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 0 r% O* R5 ~. Q- h
7 d& J5 g* v3 O: n9 ]- Z# J! n
一、建立文件!
9 f$ P( @2 c( t8 {, m$ d4 |. C最简单的论坛也要有几个必要的文件,就是:
- N+ c: c& }( c* T' t! Z
! c6 p! k: ]. _- x* K2 B) x1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 1 E# }; D: S' w1 H& K; u
; x" k$ n8 s1 Q, c
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 5 b% W, H4 A1 l. t- \

: [2 i# m' R6 I' }2 k% S( O/ M5 s3、发表帖子的文件----命名为:say.asp , u% f2 D* u# ?5 L4 S+ ~5 \

3 h+ p+ E8 t" g2 |6 G. @1 ~3 ]$ J4、保存发表帖子内容的文件-----命名为:save.asp 4 Q2 p5 q5 i& f8 G& B
  D: k9 p) l1 }1 ?7 b
5、显示帖子标题的文件------命名为:index.asp 2 n. z% F* e" e* g; f3 `% b7 ]/ ]

% P$ `$ [/ n9 K# L. |1 [7 C6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ( J. a# a) b* D# b- }7 h

! K9 N1 ?2 a8 `& _- a建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
) w) F3 g8 F, \' N0 G
& ~* n+ s" }) j) Q8 {8 [二、各文件的主要内容
' |( B  X7 K+ o; m, b" B7 Q, h$ k( K# H# \; M+ y
1、bbs.mdb
/ I& J. M- p, L
; M; Q: O/ I/ O' a7 O& `  z打开这个数据库,建立一个表,命名为bbs 2 T9 s- G/ \6 u1 G. U
; Z) w3 }6 I# h3 b
该表中有几个字段:
# Y' ^3 W/ G6 I8 o& _+ [* Q
8 s( P: X' Y* g8 K: Z' J1 ^id(自动给帖子编号),他的数据类型设为“自动编号” ' ?" V- r4 @1 W2 Y3 g5 G

7 u/ t7 Y  D: ], f7 f6 S# ^2 xname(用来储存发表的作者),数据类型为“文本”
0 O+ ?3 x6 g( ?, G
$ G. O+ ^; q7 h# Ytitle(用来储存帖子的主题),数据类型为“文本”
; n2 L* A! V1 S4 i* V6 v5 n8 k' p2 c6 k2 u
body(用来储存帖子的内容),数据类型为“备注”
4 |, a: Y9 r  x* d# A2 f
% N* ~  u) b1 w, J5 \8 e+ o2、conn.asp
2 g; L& K) s, o- n# K0 m. S8 L源代码为:
" I3 l/ @0 r! T9 M. L- u<% ; E) p2 p+ e1 c) t8 c3 C! h) e) I
Server.scriptTimeout="10" 6 N1 ~* F. F0 b( e- o3 i
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
+ K+ M1 ]8 q0 ~- p/ Q& f0 Qset conn=Server.CreateObject("ADODB.connection") 2 r( N( V4 e+ T& n+ N( E2 }- `' |
conn.open connstr 4 D9 I  }8 ]$ o# _  C/ P( C1 d  f
%> 1 k0 w9 Z7 u1 q) `9 ]# c
" P, y% C! S, x0 P2 N
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
0 M$ i7 B' ^' x2 m' B  W' }. D2 y3 W
3、say.asp 3 E2 Y+ o0 v, t1 W1 E9 J' B" O
, G( E) h' D3 x
源代码为: 7 y- \' _' b' g5 x
<form method="POST" action="save.asp"> . K- G6 d% p2 g, c8 N, F
<p>大名:<input type="text" name="name" size="20"></p>
( U3 ?8 L2 Z7 F3 q<p>标题:<input type="text" name="title" size="91"></p> % U" G6 d6 T; h2 b% X0 q( i' D
<p>内容:</p>
1 o1 v* ?( ?4 ^7 }<p><textarea rows="11" name="body" cols="97"></textarea></p> 3 ]& }) d. A* c6 K
<p> </p> 0 C( K/ p8 N  A' e, J# _
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 9 }+ L3 K0 j- o3 r5 g, [5 w0 S
</form>
* o; \! u- l% h! S7 H3 w) v4 Y大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 6 z2 p, N! ]9 I
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 6 f& ^9 n; ^! ], [* Q

7 w- A, H0 C) M4、save.asp 3 ^; N4 E) m. Y: S( t8 y. l% `
9 e, ]3 H- K* v6 n: r: S+ e, R
源代码:
- e1 W7 y# y2 P5 h: @" V( t$ c* h- U<!--#include file="conn.asp"-->
( u2 k- x, I! M2 v3 J4 I; s  H<%name=Replace(Request.Form("name"),"'","''")
3 U3 ?. O- t5 _) M/ Z* e$ ftitle=Replace(Request.Form("title"),"'","''")
6 R8 F4 N4 Z7 c! b. O. J" F- Zbody=Replace(Request.Form("body"),"'","''")
/ |# N1 d3 e4 _%>
5 @" @4 p- q% H" }) d$ ]& P<%if name="" or title="" or body="" then%>
1 d7 X, P- o+ e请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
* C9 Q- T, P: f8 @* ^<%else%> ) O+ n, I4 h& L7 R5 K: n( W% ~
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> # Q( g8 ], ^7 P% N! l
发表成功!<a href="index.asp">查看帖子</a>
& |! B1 C* l1 z! H/ W<%end if
& z% E/ g5 ~/ X4 m  Oset savebbs=nothing   c0 G6 _; x0 f$ |
%> 2 ]  N( W- }+ \

! r1 q5 ~0 }- D第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
7 z& E' |$ B7 v+ ?4 v9 _2 _asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
  j- @2 w4 w, c- N+ d接下来几句: 6 {& F, A7 y) e; C. U( g0 |! N7 M
name=Replace(Request.Form("name"),"'","''") ( m; X3 o5 P) k0 s; k" a. _2 m
title=Replace(Request.Form("title"),"'","''") 6 j/ v8 _. Z8 s
body=Replace(Request.Form("body"),"'","''")
+ _5 q" M) E4 `8 E3 p+ `  S/ ?$ B. Q  U2 }
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
( y1 I( Z0 d5 E% f* I3 }$ s* M" @而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
0 U3 B9 t8 L8 X$ j- ~如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
3 K$ e! f) ]9 S% [就是把表单中名为name的文本框发来的数据储存在abc123变量中
# i/ @  y, D2 f
3 W/ y5 m3 Z6 J; V接着:if name="" or title="" or body="" then 0 ]- }" }% m) T0 B
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ) i( \" M% j. I  ~: j  c
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
& |9 G+ u2 Z; F" Q8 J% S% x7 y该语句属于html语法,大家都看得懂的! / r8 f/ F9 [/ u% M

) D8 r5 q1 h$ M4 v5 \"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 5 b8 @2 n; k$ I' F
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 2 A/ b7 a7 U5 d0 l. k4 J; ?% n
发表成功!<a href="index.asp">查看帖子</a>”   f, }8 H9 V8 F# _: y6 x" F$ \" x6 l
( q$ Q+ x2 x; k( `& l2 ~
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 2 J+ T. K  [0 |$ v3 F+ n0 T
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) + V3 N8 k) g& }4 W
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
; }+ T: G$ n- x6 r! _7 [& b8 dvalues是“值”的意思 6 d( K. I9 h' j
就是插入向量name,title,body,向量用格式'"&name&"'表示 2 X6 m4 N/ J8 s$ A" I

8 n6 H, b) `2 d5 u2 p8 Z最后:end if就是结束if……then
9 r4 \. X; c* Z6 X2 aset savebbs=nothing可以说是关闭掉:
3 e' J6 Q3 u6 _( ~- j( l* T1 zset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
# }3 t9 A, Z, D3 o" u, R) P. ?: `% K, g3 x1 k5 {6 j. {

' V5 E4 j+ }( g$ j9 p, P. n5、index.asp
, T$ y; W  a; P, u% ^. X源代码:
& u+ y( P3 z) p4 f# E<!--#include file="conn.asp"--> 9 |1 g" K8 X; D
<b><a href="say.asp">发表帖子</a></b><br><br>
$ u: y  y6 v$ o<div align="center">
% J) O  [  P6 L<center> * Y8 ^3 i( V5 U8 R8 D9 i
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">   f9 ^1 R' o7 S. @0 ^/ Q0 J* l! _
<tr>
5 e% e. C1 P/ d9 e<td width="17%"><b>作者</b></td> % v. A7 u% |- j& X7 _
<td width="83%"><b>主题</b></td> % @. x9 G. _4 l: d. K
</tr> & Q" g0 S4 K$ P. x8 S9 q
</table>   d( s" |* i' {4 ]6 g+ m+ _
</center>
! @' ^$ @4 Q  m9 w! B</div><hr size="1">
  @7 t) \1 N) C* ?8 [& A3 n<%i=1
- ~# D3 o( h$ p$ H+ k6 Dset showbbs=conn.execute("select*from bbs order by id desc")
3 D. E$ O6 j* s) U2 b, x( Ado while not showbbs.eof
/ P/ g! \( x" ^8 ^%>
4 k, w! t" ]7 n1 [<div align="center">
1 R$ H! R& I/ L  @2 t<center> ' q$ ^( U' D5 x8 o8 s
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
( q5 S: ?+ L2 F% h: {  N$ \<tr> " s/ P9 L; s3 z" f& ~- o! ?
<td width="17%"><%=showbbs("name")%> </td> * j. m+ ^, l8 q( u
<td width="83%"> 7 ]8 F; E1 g$ y3 ~
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
; A2 u0 o# B. j. Y( M6 q1 h</tr>
, a5 z1 W6 `5 D</table> % Z7 ?. L3 ~) V- ?) v$ |4 o& J. x: f
</center> ' i8 R# E4 j% d2 R/ x
</div><hr size="1">
5 N5 F7 Q* z9 i7 ]6 u5 q5 T' q<%i=i+1 " r* P) Z# X6 }( a8 X6 l
if i>50 then exit do
9 j0 h& \- z7 {8 hshowbbs.movenext ; f  H7 W$ ^* W& {. U/ m
Loop
  p) y3 R9 I9 b5 U3 ]6 I( Wshowbbs.Close
+ H9 ?9 G) T5 H9 q! v" u$ Z$ m& mset showbbs=nothing
" }1 _1 W- j- F# g( i% H%> 3 U. o4 V; H0 b9 L

- v0 c) ~3 \* L' N0 y这个文件就不一句一句的讲了 / {4 w+ H& l; }$ u. v! \
主要讲精华部分:
& g, r( D! O* H0 A" m$ pset showbbs=conn.execute("select*from bbs order by id desc")
7 c- h! ^  V. k  S9 i- F- l意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
3 B; s9 h8 o/ j# f' B+ B4 Y还有这么一句:<%=showbbs("name")%> ! g& F1 a$ r$ a3 d4 w# Q! A8 M
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs , S1 t+ \2 v! @5 b% b
代码中的i=1和i=i+1 . O/ V* y" I& D4 {0 F
if i>50 then exit do + c- f0 L$ V( e
showbbs.movenext % O  z  G, ^% m: V+ ]
Loop
# \6 V2 p( v2 V6 {' m8 A4 cshowbbs.Close - a! P! b: y* `, J/ F
set showbbs=nothing ' u9 ~( l# e+ E

) }4 D, b; Q0 y0 A这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
; F/ i, n8 I' E$ {# @if i>50 then exit do中的50可以修改 - k9 ^) \3 S- `$ O- ~% {
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 ' @3 K8 l% \: o6 u
还有一句很有用的: 5 p; Y  K) f* W. F/ m4 v/ q6 l
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
2 ~/ H* |1 [. S3 m( V0 Y; a9 V里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 0 A/ H5 E' f( U
等一下在show.asp文件中就有用了 3 o6 v. _$ z2 M

$ ]( f2 C1 \" I% Q* X8 Q5、show.asp * i  o. Z9 f% f( U$ M. V6 N
源代码: 9 F6 y  ^" x8 U! d

$ _2 H5 y4 |% G( V' {<!--#include file="conn.asp"--> & A: \0 ^$ g6 a$ i" z3 l! u
<%id=request.querystring("id")%>   p8 V: i) q7 c+ X+ `" s7 [& F
<%set show=conn.execute("select*from bbs where id="&id&"")%> 2 |( n# g. ^+ E6 ]( I
<a href="index.asp"> 0 X2 e9 z/ N- j5 Q( e
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
' ?# G4 X" `4 h<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
# \$ f- @  a: j1 H# v, I# P1 r$ u' i<tr>
, A% A' x5 w( O! @<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ! p+ _" p: H3 ]+ S$ B' e& j4 G
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> - ^* w! g, u* n) Z5 I& Z3 x
</tr> ( F0 R' {1 @, }) E7 ^# i1 z
<tr> # I+ T# d7 [0 u& O/ |
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
( k4 r% ?% ]4 \' H; H& y2 m" d; ~% q</tr> 8 I; e) v6 n# p& c' C
</table><%set show=nothing%> - h( l# |7 q! R9 t

9 \5 s, V6 ^- }3 W劲语句---精华语句:
2 _( X% C' L' E' q+ c% x( G* yid=request.querystring("id") 5 Z8 ~- P1 |# a8 G3 W! B
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, . i- U5 k7 P& v: V
id=request.querystring("id")就是把地址栏中的id的值读取下来,
, p9 H& D1 V5 S1 ^" ?2 H4 K因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
2 {- D7 A5 C) h  v, ~, f" A  O& S- S所以show.asp使用id=request.querystring("id")语句把数字读取下来
8 l2 R2 `) V( r! ]于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
+ X; B, o1 _( p9 B7 ^向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
# N- H1 e4 U! w8 G" F最后<%set show=nothing%>
2 a. z% x. u/ k# i& {! s1 U: y6 c1 z, o9 f% U$ B6 H9 U
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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