返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西6 x2 E2 {0 @: t( k
真NB..佩服ing .....0 @9 ~# O' g; H" ?+ y* E
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
5 c3 s1 P  h: \# V5 ]: k% S0 e6 K- Y# Y% W1 v( M4 a4 V
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
7 H. D: X2 [* j  }$ M$ s5 |$ p, L+ m  b2 P
一、建立文件!
2 h" A' M" J9 K最简单的论坛也要有几个必要的文件,就是: 9 K0 w* t4 u+ X9 R* m$ p* H

# C7 `+ M* v# h) g, s1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
' t6 w$ Y) X' t' ?. ?2 ^7 K
) |* |+ R7 G  u# ^3 S; z0 L2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
3 K) K, c# g* \! T3 Y! s; Z% Y  T& Y
3、发表帖子的文件----命名为:say.asp
- v% C5 \9 u. g. a9 L, Q7 Q  \
! v5 K! A1 A/ I7 A  e4、保存发表帖子内容的文件-----命名为:save.asp 2 J! c; f5 g8 v9 ^) {
% u, o) M0 q8 I$ C" v3 A, E
5、显示帖子标题的文件------命名为:index.asp # Y+ f. N1 @, k: M7 m

& Y1 ^. k' l- C3 F8 e7 U7 }6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
& d5 _' N* V0 r! i
) @( L3 p+ Q/ P8 h' ]8 M! P* T/ k建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
0 \/ L1 ]8 y$ g8 V' h4 C
! d& C2 Q  m: Y0 h4 E# s7 `2 o二、各文件的主要内容
! ^9 M6 m+ a4 S; \. z
2 P. S- c1 S0 c( {! i1、bbs.mdb
; r( Z% @$ v8 ^) Y/ k/ F  f& D6 s4 R
打开这个数据库,建立一个表,命名为bbs
5 }! ~. ~) x% M- V" \! X0 ?5 r6 R4 D" h1 p% [6 Q. ~8 N% p( i( O) j
该表中有几个字段:
* V1 E7 D, t0 W" b
1 X1 f+ ]2 M2 D/ L- R/ \0 Eid(自动给帖子编号),他的数据类型设为“自动编号”
7 w  x+ ?) m6 W4 g# g1 `( l$ n! Z1 B. P( @4 Z
name(用来储存发表的作者),数据类型为“文本” % r; m% ]7 U7 o( E2 W
) Z  S+ v1 ?7 a% l: H
title(用来储存帖子的主题),数据类型为“文本”
! @5 }) ?) P$ c/ P7 R7 n6 k; e/ r6 }; J/ e
body(用来储存帖子的内容),数据类型为“备注” 0 V* U0 t  O( z& V9 u* C
% [2 X; n( r$ ]- E4 w" e
2、conn.asp : l8 e1 Y3 ?( [
源代码为: 8 m7 W& {* M$ A' o3 ^
<% 1 p# c' r9 A7 e$ P# z
Server.scriptTimeout="10" - ]1 G& ~6 k+ w2 Y" G" F8 }6 Z) R
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 3 b! p1 m* \2 X( t: [" B
set conn=Server.CreateObject("ADODB.connection")
% r. P* ?" m3 fconn.open connstr 5 O1 A1 {# s1 Z0 r! ~. i6 k
%> % x# M8 [% {4 C/ k- c* {( ]8 r

9 l" n7 @* r! r4 [7 Z8 u这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
! D9 C1 Y0 Y" d2 b0 N2 k1 s1 g) U- u1 a, [
3、say.asp   T% i: X: D' Z' d  Z0 E, A, T
$ f. E. y& p: q) v6 V9 s: l
源代码为: ! r- k0 g: G, v' c' B/ r
<form method="POST" action="save.asp">
8 Q  \8 B' L9 B+ `8 F<p>大名:<input type="text" name="name" size="20"></p> 5 b; X; i" d# U7 ]) M" y
<p>标题:<input type="text" name="title" size="91"></p>
% ]* R2 ~* w( H, U3 J, ~( e<p>内容:</p> 8 n" {  D, w( m
<p><textarea rows="11" name="body" cols="97"></textarea></p>
' m1 f+ g, C( o( I7 B7 }2 z1 S<p> </p>
! `) S$ I9 n3 m% Z( J) H<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ' ]8 ^$ k! u  h# W. {* c1 d* C$ _
</form> 2 ]. X5 m: X2 F) I6 U7 m- \
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
# `. t7 F, P& M; @- i不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
4 R8 W" x5 Y1 _/ Y$ ?7 L2 c8 d4 @9 w# `+ X/ d
4、save.asp
+ }* ]2 P; p" l* @1 O
# o; m9 g- a) B- `源代码: - E1 m& K. b+ {1 R+ \4 P
<!--#include file="conn.asp"--> 6 f4 I( l& ]) t' O+ e6 v
<%name=Replace(Request.Form("name"),"'","''")
; q0 {8 M1 O- D) Q1 dtitle=Replace(Request.Form("title"),"'","''") 8 W6 n0 v1 e* ]8 o0 W
body=Replace(Request.Form("body"),"'","''")
. h% U5 o" A7 m1 N& P%>
6 M% d5 X$ Y) g- k" f% f<%if name="" or title="" or body="" then%>
. }6 c' I; n. Y& l5 v; a请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 6 L& ~1 d' F/ a7 s+ f- Q
<%else%> 2 z% X9 h% i+ M7 g- p* J3 \6 \
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
- b6 }0 f$ o" M: A+ l发表成功!<a href="index.asp">查看帖子</a>
9 Y- B# f, b5 `  \' t: U0 q<%end if
' g! Z+ h+ y! y2 dset savebbs=nothing / ?2 j) \* L; ^9 I
%> + q( H( ?+ \+ F, r' U
, z( X( o4 C3 ]9 Q8 g5 w
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
4 L4 u- @% E$ K5 hasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
, w: @3 _2 N4 q! _接下来几句:
3 a7 g: I: M- K6 J0 `: yname=Replace(Request.Form("name"),"'","''") ) |; I: F0 H7 k9 W6 @
title=Replace(Request.Form("title"),"'","''")   o0 a! C5 k9 j
body=Replace(Request.Form("body"),"'","''")
7 p) R& x; r$ ^' W; W7 L+ z  ^, j- Y6 D
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 9 `( l1 m& ]/ @  r. ?6 D" {9 {
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
7 n6 Z+ o4 g- V如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 5 e. D$ C, ~1 Z& p0 P8 q
就是把表单中名为name的文本框发来的数据储存在abc123变量中 5 ]" R$ H  `/ [$ S& ^- G3 Z' V
' P" k+ E3 E' t  J( m; o
接着:if name="" or title="" or body="" then
1 N, m: {; v% o; o& h. d判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
' u- \' F! i- N( H“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
$ Q3 C2 D4 z9 M$ P该语句属于html语法,大家都看得懂的!
' Y; ]# p( l5 Q# Z" Q6 z
6 F9 z5 o" J6 X"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 8 a5 _7 E- \  y/ @# k' C3 p" Q
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
6 _" W2 s  x* f$ ]发表成功!<a href="index.asp">查看帖子</a>”
$ [4 x, j' O: o: I7 s  N
& ~% _7 R  V/ h; N7 c8 B"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 9 r. Y! H  w! V- G+ {6 S3 t( ^- m6 q
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 6 J! z. z5 v0 Z  E% ?& r5 W$ Z
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") " Q) ?" v8 |  i! s* f
values是“值”的意思
. m' k' A+ N3 u  x2 T! J- h6 R6 v就是插入向量name,title,body,向量用格式'"&name&"'表示 ( Z0 C7 _, m9 E( a& Q

( k2 V/ p2 Z+ n; U6 Y$ ^* ]$ n最后:end if就是结束if……then
2 Z" @0 S/ _+ m0 t& ?set savebbs=nothing可以说是关闭掉:
2 J% {) w! }  {7 p  ~set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
4 m* [( \+ ?  T
( s- L8 o& q0 c! J* {1 {1 g$ h$ n( _4 h1 \, p, _  {4 v( t
5、index.asp
, s8 E: |: p/ F: w* d: P- j% P  @源代码:
/ U' _- N7 ~9 }7 j, ?<!--#include file="conn.asp"-->
9 `: p) ~  G) R<b><a href="say.asp">发表帖子</a></b><br><br>
. ^* w# u* U3 B<div align="center"> 5 s- S, k, |2 x& u7 ^9 o
<center> & }* h- \7 _, [
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
  c; x) `8 J  z7 L<tr>
: m; J. U3 g, D/ S/ e4 r<td width="17%"><b>作者</b></td> - S* Y/ w, g, _- ~1 [4 K$ N
<td width="83%"><b>主题</b></td>
3 U% b$ O$ a  ]8 q' L5 b& T</tr> ' y* |6 N! K7 t% b7 U
</table> + ^  S6 [5 ?. X; E& X5 Q
</center>
8 I$ r; ~1 r& W9 K" g</div><hr size="1">
0 h6 L. m& `; h: F+ z+ A) ^<%i=1 3 `9 |$ G7 h  M  Y* P  \
set showbbs=conn.execute("select*from bbs order by id desc") 3 x) s5 K+ U2 k/ z4 _
do while not showbbs.eof * K/ g! E* F! r# C% s
%>
, N7 B' ]1 J+ s$ b- d6 D<div align="center"> 1 P% g5 W0 O' `% P, ~% l% T
<center>
$ b0 }2 D& U8 _  n0 r5 {  z  q' M<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
. S$ v4 X9 p& n7 u. k<tr>
2 Q4 R6 ^/ \. U  P+ q<td width="17%"><%=showbbs("name")%> </td> 3 q  Z+ I( U* L) U' A& u' B
<td width="83%">
+ }$ i/ a) R. O1 D' Y<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
, d3 U  l8 x1 p# i- y8 ?8 g/ [1 c</tr> , A! C% b9 i4 h( O
</table> 9 [: ?& O) Y- h0 `) J
</center> , E4 i& L. M5 |3 H" D5 C( Y
</div><hr size="1"> ; g* z, C6 |7 g1 q/ x
<%i=i+1
0 m. @7 x- o) ^4 E0 J# _; J6 L; ]- sif i>50 then exit do / t' ^1 @+ p2 J
showbbs.movenext 1 V. Q; b! Z9 |0 o
Loop " |3 T  Q' e% d
showbbs.Close + g( ~4 }2 J9 F% }' k  }8 l$ Y
set showbbs=nothing
/ f( ~5 m6 V5 f0 r- X5 U%>
1 k* [0 b4 R+ ]8 L6 i
9 I5 t" F: n# `这个文件就不一句一句的讲了 8 b# r  P, n  D5 N* _5 A
主要讲精华部分:
. m; j# m; f* I* Jset showbbs=conn.execute("select*from bbs order by id desc")
1 J, D8 \# u% n意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 2 z" e, a& y% p' f8 i
还有这么一句:<%=showbbs("name")%>
7 w3 M" l) X3 W就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
# M' M, d' _3 g' _代码中的i=1和i=i+1
' y# L( o  a* K# R" m, Q9 t2 @if i>50 then exit do
4 _2 A/ S- I$ Ashowbbs.movenext
6 H( E5 W9 @5 W, _% BLoop ) c( U. t, L/ a# e2 j
showbbs.Close , o5 U7 u; o3 F% ~
set showbbs=nothing 2 J: q8 `, C" D
+ M1 K& E9 ~) o! F4 }
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
, B9 o8 w9 M! U8 f" L% f( `3 Rif i>50 then exit do中的50可以修改 ) y" c: q% u& f& Z
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
+ d# y8 \$ p1 B- l+ r* j9 }还有一句很有用的: 1 Q3 d# o0 O* n' V0 J
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> . w7 Q4 c' }7 l: H; e, P& ~2 T7 U: m
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, " y) m$ B0 q0 O  V# c; V4 V* R
等一下在show.asp文件中就有用了
; ^+ D2 L  L- ]; L6 f& f" J
9 t9 `8 H6 t5 m( |; q/ v5、show.asp
0 D- K% b6 e; D- j" ?源代码:
0 v: C( j. A4 i5 s. o3 H0 J/ m. j+ ^; v' h; Z2 P4 z, h! d
<!--#include file="conn.asp"-->
4 s6 n* d+ h* d5 |<%id=request.querystring("id")%> 2 X. f$ ?% z7 D/ ?2 Q3 \
<%set show=conn.execute("select*from bbs where id="&id&"")%> ( ?. g: f5 g! B: f  M; E7 O" h( {
<a href="index.asp">
( E' N+ g) g0 q% _) {1 M2 [' S; E<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 1 [) K! n2 {) C0 y+ L
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 6 W7 S% J! V1 r; e" Z' c2 D
<tr>
" m; g- }  v/ D! o! m<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
6 y" H% L7 j  h  R* Y% u1 v2 @1 ?<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
8 B& d8 h% K$ x% j( F/ D+ m( Q</tr> . N( a7 }9 k" R7 e8 }% n
<tr>
) w; J% B: ?4 ~  R+ W<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> - J% G6 r6 O2 H( E6 K
</tr> * G1 g9 ^, N% |6 V& p
</table><%set show=nothing%> 7 d& z# {; \2 V* V2 O% Q9 l$ A

, A' |' i: o; p' i) r劲语句---精华语句:
. i. D/ P# w) ~% M8 m4 b: Eid=request.querystring("id") ! J% \3 |% E0 p% y
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
# Q* s9 r0 b* x: h- fid=request.querystring("id")就是把地址栏中的id的值读取下来,
( P9 I7 q0 N& k" {1 s因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ! K4 O8 W9 ?3 m! O: f
所以show.asp使用id=request.querystring("id")语句把数字读取下来
$ x# P- D0 `# H& v+ r2 r于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
% I* T$ _6 r  J+ b# ?1 _9 ~向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ; x- {( F3 V; o' Z
最后<%set show=nothing%>
( S! H- ]3 R# [6 X$ O% f$ Y2 H6 @. }. L# f
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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