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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
0 B0 e/ \/ w4 u5 }, z# v* d真NB..佩服ing ...../ O) K! M. Z8 V9 H
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。( s7 @/ S* y% }+ y# J- E+ P
/ S7 V. }) a# I9 G& |. }& ^' e
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
$ }% [- P/ J& C
: B4 b7 f* d+ U# H3 r. d1 |% q( E* Q* `一、建立文件! 7 m6 R' g  R5 @* G1 t$ F4 i% _
最简单的论坛也要有几个必要的文件,就是: . n1 O. I' l9 N& T8 @0 b7 E- b

  l7 v* l, v0 M$ J) Q. s# a- Z1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
$ E; D( ?6 P1 R$ D8 X
& R' S5 ]/ z0 r* z) F1 @2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
2 d+ E+ t. Q: q, o/ P  G: s# `8 y. Y# B) t0 X2 ^
3、发表帖子的文件----命名为:say.asp
" N; h0 _" r7 H( v$ L1 r2 j. J* b0 M* D5 d7 H' R
4、保存发表帖子内容的文件-----命名为:save.asp % L' F! }, s* p8 |5 _

9 o, e% _3 e) j  Q+ {' D5、显示帖子标题的文件------命名为:index.asp 9 b. Q3 p0 P, m; t
" p% x! t. c5 v5 P! T6 K( G
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 8 S9 [; Z% z1 |  f7 E/ r/ l  R0 C* I
+ Z; u3 p4 o) z4 J$ S. @2 L
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
+ J% T( j9 O$ O2 t5 ~2 Y0 L0 H/ t0 T0 W) ~9 @! }
二、各文件的主要内容
, R4 P) i" O& r4 M/ H
6 a5 k, q6 H+ e+ p. L1、bbs.mdb
$ W+ R' _4 V: |4 v* `& u
5 d! h1 y9 [7 }4 J1 e, y( |& c打开这个数据库,建立一个表,命名为bbs
$ y  @9 k6 `! a# T* {
. k! e3 R0 G+ N该表中有几个字段: " Z% @) O* y1 c4 J- z

" v+ D' V2 T8 T; Did(自动给帖子编号),他的数据类型设为“自动编号” ' e! A/ h7 [  f4 E7 ]3 R- a
. w9 D# b( g" P9 v' F9 u6 S2 u0 l
name(用来储存发表的作者),数据类型为“文本” , j8 I1 U5 c* p
* U6 o/ h, e  s( B
title(用来储存帖子的主题),数据类型为“文本” # |6 S& U5 c9 g6 B

$ m- Y+ n, F; Ubody(用来储存帖子的内容),数据类型为“备注” ! k' _0 ]; w+ _1 R

) n+ \$ `* x5 o$ t  u- g2、conn.asp
, p4 m' R2 @6 Z# ]5 n! J, t源代码为:
( t+ H0 D5 E; M9 A<%
( H' `& G/ a  G4 gServer.scriptTimeout="10" - y( v+ F, [0 Y) o
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
/ {( F! u7 W+ m: z! e5 gset conn=Server.CreateObject("ADODB.connection") " m0 ]4 l& z5 a- i/ x( c) M9 N
conn.open connstr " l4 T9 |! r; U% t# @0 V) g& e
%> $ S6 x" ^3 Y+ K% j& R; ~( F7 f
0 J3 `* M: ~! w9 Y% m
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
  m! w# ?# @0 }* S, H+ p: Q/ q1 b6 X9 J- |% U
3、say.asp % E9 W0 U8 {# ?( }

! ^& o; a- ^; F1 g2 G- v源代码为:
0 W; i* h+ ?4 w4 M<form method="POST" action="save.asp">
* q9 F- [1 K, L- w" R( L4 D. m<p>大名:<input type="text" name="name" size="20"></p> 4 h6 m9 j8 A5 g4 L- F2 D- ]% m
<p>标题:<input type="text" name="title" size="91"></p> % W% N1 m4 j, E$ Y- l
<p>内容:</p> % ~5 P0 H" [' d! K
<p><textarea rows="11" name="body" cols="97"></textarea></p>
9 F' O# o# Q9 h: T3 s! L6 I<p> </p>
5 y, E0 K: S/ E) e2 F<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> . h, o6 m' G8 k5 M
</form> 6 m, |3 U4 ]3 N+ E' w
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 : }  J: L) F& o7 h* s& s+ T3 Z
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
' X2 G/ S3 o9 m; q9 q* Q. l* n' r
6 L* Q2 U9 \0 a4、save.asp
2 G/ f" k: |( E2 g% g3 b: E  r: y2 t& B
源代码: ! }' I3 z3 l& q1 V
<!--#include file="conn.asp"-->
' x( f' i- V1 p" r8 @- E# B, p3 ?<%name=Replace(Request.Form("name"),"'","''")
0 b7 r% J1 [3 A! r: Atitle=Replace(Request.Form("title"),"'","''")
! s. U# p4 R& Z0 T7 x: h8 }! i4 lbody=Replace(Request.Form("body"),"'","''") ( u! F* {  R* h/ V$ `" I# t
%> 7 `8 ^' k/ {. Y4 b8 _8 R# u/ J
<%if name="" or title="" or body="" then%>
8 Q( s9 U- v1 W8 h- I/ y请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 3 k- o0 [( d8 m4 y. w. e
<%else%>
2 ^0 L8 e! Z# i8 ^; m( W<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 9 m* _/ c: A" f0 n5 y
发表成功!<a href="index.asp">查看帖子</a>
* O3 e$ `: }- Q' ~<%end if 6 M3 Y5 d% y/ ~
set savebbs=nothing
  f$ V. Y1 X/ W. ^: G. Z%> 7 ?, H% @; i: ]( t6 i: x
0 H9 e' k0 n  I' V
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 2 E1 s/ I9 ~) i0 h0 v7 j) c
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 3 U7 ?: I- C) o( ?( z1 Q
接下来几句:
/ k+ t) w7 l4 sname=Replace(Request.Form("name"),"'","''")
# C+ r4 P! }1 _: jtitle=Replace(Request.Form("title"),"'","''")
' ~7 l7 L! m" K! ]0 ]/ T8 _body=Replace(Request.Form("body"),"'","''") 0 j9 j$ L' x( \# E: t% |8 l- i

8 {/ Q0 S( ^* r. @! \8 h+ P5 O+ A“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ) h9 V* Z8 i) G0 D* T* I; x
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, % ?/ a7 X) F& j+ [
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” - v1 E) u8 A% \" j; h: u
就是把表单中名为name的文本框发来的数据储存在abc123变量中 ' u' J! o) O8 d1 V' k
, P" T4 k* O8 P+ [  r
接着:if name="" or title="" or body="" then : s/ I- G1 X0 Q5 M  n' K$ m
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: * A8 g) D: p. L2 B
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
6 {: `+ C4 h: q该语句属于html语法,大家都看得懂的! 1 J/ q  l& F3 v

2 ?: |; G# ~2 {9 v! m"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
- F  d2 U8 Z  E% I% a& g5 f& Z“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
3 _7 I) k; Q5 H0 C3 s6 X3 c3 X发表成功!<a href="index.asp">查看帖子</a>”
4 N* ?! \! M* j: `' V5 ]# n# ^) m+ ~8 D3 k! v7 z/ q3 ~9 L" L& I/ C
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 2 x0 Y% Q3 Q8 F5 |+ v: x
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ; e9 J* w7 a: y, G1 y( Q$ c2 e
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") - q/ Y7 n; C" c5 A  E5 k
values是“值”的意思 7 _. S1 H) d- Y" h% ^2 k( h" ?7 }
就是插入向量name,title,body,向量用格式'"&name&"'表示 ! z' [  k+ V0 [

: d0 N1 ?) X3 h! ?最后:end if就是结束if……then
. W# y# x5 f- p8 W. z+ I/ D' B- h' Cset savebbs=nothing可以说是关闭掉: 1 l. m. l# W, }2 {" U
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") * v  |1 K5 f+ i$ E

( S$ S7 X& ~1 P; l2 s
7 v: S% A0 g& W  P, {8 E5、index.asp
$ R0 r! M% Y5 d4 ~0 z9 j7 a2 Y4 P源代码:
. d- I" M# M6 r- k% S6 y<!--#include file="conn.asp"--> 1 N, n1 m# z& g9 ~* x% O8 I
<b><a href="say.asp">发表帖子</a></b><br><br> 0 N/ T8 l6 z) n9 O2 N  K/ w3 p0 U
<div align="center"> # L6 _! v: J; y2 |* ?* s& H$ K
<center>
6 v9 N" W, _1 x& h+ D<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
7 u- T$ H: @) }; {* r<tr>
5 I8 V8 \" {1 r+ J( t5 E) R- G! O<td width="17%"><b>作者</b></td> 6 ?% N( _0 t% U; z1 d
<td width="83%"><b>主题</b></td> 3 h; g0 u9 U0 v0 E# }
</tr>
! @4 }8 c! }- R1 K% X</table> 2 G, a) y* P5 R6 ]% G- o. T; k. a% [
</center> + h: Q. D: Y* M0 `1 a
</div><hr size="1"> 0 a1 }1 I" u3 S1 P1 c$ D4 F
<%i=1
9 Z( N& x( G% T8 Q  _% Mset showbbs=conn.execute("select*from bbs order by id desc")
6 x1 ~- D3 K& P) u- zdo while not showbbs.eof
0 D' {9 N6 w! h9 R%>
5 T0 j. ~7 ^' y; w. N. _* Q<div align="center">
. o+ f( c! f" d, M<center> 2 I0 D% [& N" P+ h
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
, v1 M" B6 m6 U+ {) ]/ M<tr> , L/ @. t1 x8 e
<td width="17%"><%=showbbs("name")%> </td>
, i# C0 q2 l; y9 F4 \- y, a9 d& m<td width="83%">
" H4 e) ?% N  c9 h<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> , N2 ^8 E7 i# ?6 N& n
</tr> ! {( T8 V! u1 T  S# X+ d; l. Z8 A
</table>
7 ^3 u! A% e. c& u6 H</center>
3 O$ u" ^7 p# ~/ J</div><hr size="1"> 4 j- F$ s6 ~5 R
<%i=i+1 ' G- A) C8 A) T. Z7 i7 {
if i>50 then exit do 7 o4 X1 t/ d0 J0 _4 g) g
showbbs.movenext : w/ u1 V; O6 M) J- O( j' x" {
Loop % n0 V7 a4 Y- A' R
showbbs.Close 6 s: O3 F; Q! w$ i
set showbbs=nothing
3 q, L7 H5 }+ U2 x6 \$ v! ]%> ! A+ j  S/ y2 R+ m

2 q" }3 z5 E  ^% H  p9 I& y( B这个文件就不一句一句的讲了
. h+ o9 g1 o2 n8 c) M" o主要讲精华部分: 5 a6 c3 E8 j! C
set showbbs=conn.execute("select*from bbs order by id desc")
$ c2 R& n$ E! e: ]+ t意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
" b1 u* k; l4 f$ s7 ~* @. {) T- q还有这么一句:<%=showbbs("name")%> 9 w& m1 u. z1 Q4 W/ M0 Z& @5 }" `
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
5 D) d: H/ ~, S4 V/ g代码中的i=1和i=i+1
) V0 E& R5 J- \: f% Hif i>50 then exit do
  W1 }7 {1 ]) Z/ dshowbbs.movenext
8 o  A5 N9 Q! r4 Z7 W: ?Loop
' N6 _! s2 ^+ ^1 h5 |showbbs.Close
8 O* _+ Q1 H9 f9 k0 A! sset showbbs=nothing % e; p7 k0 |  [- U
) I: f! B" b/ J  L2 W( X* H+ v
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! % Z7 [; \' Y3 h3 J0 O" x0 r
if i>50 then exit do中的50可以修改   U. i5 i7 S( X- P: \  Q9 I
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 1 ~) c5 n/ M8 U$ y4 U! W8 [- ~0 c1 _
还有一句很有用的: - Z6 y2 _& H9 F4 g
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> - d/ [0 O4 L0 u" o6 m
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, # E$ g! S: x. K
等一下在show.asp文件中就有用了 8 ]8 T" s8 J% }* d

# a8 F, b) I1 q. T5、show.asp
: ]4 G0 g9 a- m. F3 @4 {源代码:
" \2 p+ _( q  H5 z0 q4 ^4 q8 t% w" V
<!--#include file="conn.asp"--> ) b5 K1 V& I, v5 V9 \  X5 O4 W& l
<%id=request.querystring("id")%> - d' U3 Z7 Y8 Z7 n# N* c4 `' O4 T
<%set show=conn.execute("select*from bbs where id="&id&"")%> " @8 m  f$ Q8 r- w
<a href="index.asp"> 2 i( K* B9 D1 h* m' U& b
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 2 U" m; A6 Q/ x$ {& j9 }
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
4 S5 m1 Q% H4 n& u  a<tr>
" `1 {) X9 H: T* p- r<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> / l2 I2 d& |) G% b' P# n
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
& k0 j0 F8 r, a5 {5 p</tr>
, g# B6 j% R5 k+ Q& _<tr>
% [% q3 i3 n* c! }<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> ( A$ W, U0 b1 D) j$ U4 V, W, H+ V
</tr> " U6 X( N# K, M5 x! }$ `/ `# S9 y
</table><%set show=nothing%> # D' X7 p' G' |
/ z3 P5 z8 h( B  |" L2 ^) e0 k
劲语句---精华语句: - W% c6 x/ K6 {1 j
id=request.querystring("id")
8 D- Q3 Y! T; ?( g: `/ J在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
6 P' n. \7 r* T; \8 V( z9 mid=request.querystring("id")就是把地址栏中的id的值读取下来, # O3 d" i+ z2 \+ ]
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, % A2 w/ W) O0 V( H
所以show.asp使用id=request.querystring("id")语句把数字读取下来
/ u: B2 l9 `# I7 }2 z, J4 p5 Z于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")   I% x% ]) x; Q, O8 N
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
, Y( h2 {9 v* H+ v* Y, d3 L4 K, k; [最后<%set show=nothing%> 9 t0 w' s7 v$ @; ]) D/ y) V
. @# a' j3 f3 y3 x: ~. `# r5 |
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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