返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西1 g& e2 v8 h) ?+ F
真NB..佩服ing .....
: X9 G4 x4 x# Z7 p' v大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
- [. Z) |& V8 ?, F+ J) Q7 D1 V7 m
, p, I( }. o" i) d  h8 e同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
) a$ ^& b- O) }: ]
" b& x4 Y4 s' D2 f. m) B# M2 G一、建立文件! " h* |2 s  H3 P, c, o& K8 @8 k
最简单的论坛也要有几个必要的文件,就是: 8 S1 y+ [3 }! c$ J

- m$ x1 v& @* v! d, Y1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
+ K6 P. S' n" e) c7 l( x" x5 f; p8 X2 J
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 5 R3 v3 k: i/ m! j0 h/ k+ u0 J
6 q6 e) l7 s! ], D) i8 D) B
3、发表帖子的文件----命名为:say.asp : u3 b$ a; R8 m! v# d; }/ M3 ?( g3 j/ d

: h6 L# J1 G# Q, E. i5 j* G4、保存发表帖子内容的文件-----命名为:save.asp + r7 h6 g  e' F3 W* X; @0 P; C

* w( M0 k4 ]* F( c5、显示帖子标题的文件------命名为:index.asp . v6 q; E3 z- N
; a5 b8 w5 |* p0 ]: z( H8 c2 `
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
( L2 H  j( \5 T6 b, L( G
/ X" R; O! s, O1 l, ]3 C建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
0 f; k( {, x; u) w" W/ {9 C
% j; a8 T; e; w9 A8 j7 A, ]& p" s二、各文件的主要内容 2 w5 l0 y# d' A9 z

/ ^$ `$ }& X4 L( q' t6 X* m1、bbs.mdb
: y  c0 x2 {% u: ]5 S! E# u: _4 Z- E9 f, V
打开这个数据库,建立一个表,命名为bbs . Z" c/ P2 Q8 [8 d) r& u  Y0 y
! G1 p' }+ P. v9 V/ y5 Q; P. ?
该表中有几个字段:
' `' A6 W9 G- {& a2 d4 i+ I$ l$ k& r6 d7 U
id(自动给帖子编号),他的数据类型设为“自动编号”
+ v( w( R+ u$ g( L/ i" c! T
$ z* Z: D* Q" Sname(用来储存发表的作者),数据类型为“文本” 4 f) l% x5 \; a( W5 j- G
) T& u7 f1 h8 F1 V* E
title(用来储存帖子的主题),数据类型为“文本” 3 c  H6 W  b) `0 Y1 o- K  a

* K( Q/ M6 \. Q; ]: Ibody(用来储存帖子的内容),数据类型为“备注”
% S, v! \  V" T, t1 j+ U* D/ N) G, V( ^
2、conn.asp
, ~- Z1 M: g! q# L/ ?% X  J源代码为: ' D, r' q. E7 r4 a. i
<%   N' _2 X3 O* }2 q
Server.scriptTimeout="10" % g! P+ y7 D$ h5 u
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
1 V3 |3 ]3 C5 \5 [4 n2 H* ], ?set conn=Server.CreateObject("ADODB.connection") 2 B* S5 i& v% B! V
conn.open connstr + @1 L7 E) |- d+ O, X1 k4 G& t
%>
1 m, M# e; V7 u# D' ~) T
; w" Q5 m3 }, U$ ]$ i  E5 k- M4 j3 [这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! % H& ?8 V# a9 b1 o! y
4 m: [' s. {3 O4 y; n& O/ ?" R
3、say.asp
6 w' U, d4 p+ z5 x  ~- R  N; N5 Y8 z. L% D
源代码为: ) C& @% H' Z4 i6 h
<form method="POST" action="save.asp"> , ?, e, l5 s! R7 `2 }7 L( H5 i
<p>大名:<input type="text" name="name" size="20"></p> : P5 ^9 K& ~3 @' _- [( W
<p>标题:<input type="text" name="title" size="91"></p>
, i1 p0 j7 b: B4 G3 X2 C<p>内容:</p>
% A) Q# V8 |$ M' v5 H' p/ |+ b<p><textarea rows="11" name="body" cols="97"></textarea></p>
7 {, s3 L4 ~+ T) K9 O* t<p> </p> . W( z$ e  r; `/ P! q* H
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
: X0 a" X1 w4 a* ~6 ^0 N+ W; k% q</form>
6 Y8 {2 o" x, |0 N大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
8 ?( v: S  u, b% ~% ^不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 9 @* T6 s" V. b, }$ Y7 E$ W( ^

1 w- @0 C4 r0 Q  Z4、save.asp
4 @6 Z9 o) s! S" |8 s- v/ e7 w7 N" C6 V5 d, Z* t& S5 L% x' ?( N
源代码: ! r6 w/ a* s/ F
<!--#include file="conn.asp"-->
: W+ r9 Y3 h  B: J1 \7 a. q<%name=Replace(Request.Form("name"),"'","''")
0 C6 v" Z, s$ `title=Replace(Request.Form("title"),"'","''")
: U6 [5 p5 Q. P* qbody=Replace(Request.Form("body"),"'","''")
9 v  Q, q8 P+ x0 A8 F+ x%>
& _( j- X, f* S5 E<%if name="" or title="" or body="" then%> 1 N4 i, a, a2 s" d3 _+ D' R
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
9 a  I! p# q3 |<%else%>
8 I/ T$ s+ a( F+ H<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
) G  ?8 z$ u5 ?: ~* \. A3 a) {5 f! [# J5 l发表成功!<a href="index.asp">查看帖子</a>
; z9 d7 U" p0 \# v% s3 z<%end if
' R. M1 {' S  O7 gset savebbs=nothing 5 H6 y; v. ?, Y' [
%> 3 k9 S3 Q4 Y; f" R( q
- b0 h3 Y2 `& S4 k4 @
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
( U* @& l' `" x6 v- Y) gasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 7 Q* b  O* R% e# X
接下来几句:
/ ^6 K: X7 I2 }" H* L& w" i9 iname=Replace(Request.Form("name"),"'","''") 3 |9 \5 p! H% C1 Y  j8 a
title=Replace(Request.Form("title"),"'","''")
' o9 e3 A0 z9 e+ C9 E; p& ]5 h) h% gbody=Replace(Request.Form("body"),"'","''") 0 \8 r5 Q! J6 e) \3 @: `$ u2 ]2 N

4 t( F: [3 o8 `7 O$ p. i4 s“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 9 m7 @9 H1 |' [1 I/ a  L
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
4 d( }3 L# q" a" K  B  F! e如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
' Z% O6 _. k8 K9 f# r' Z' y就是把表单中名为name的文本框发来的数据储存在abc123变量中
  ?- _$ D$ X( t( ~
! a8 C" N4 u2 B接着:if name="" or title="" or body="" then
& {# X- o) E  v8 t* t' g0 |判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: $ w. ?3 W2 a4 }3 r
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 9 P- P/ m4 k1 c. `1 L
该语句属于html语法,大家都看得懂的! 9 v$ b# H  K+ Q
0 F' r+ ]9 s5 |: a1 A/ p
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
8 Z6 Y9 X4 L0 i0 G) L“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
) ^! S0 L) V- t7 G发表成功!<a href="index.asp">查看帖子</a>” ! f! }! _  }$ G9 K3 F& L8 G( i
$ Z: C4 q# i  n7 m, q: ]' m  |
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: / m5 @9 P" x9 E2 p. r! X
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ; Q' \6 q5 b2 O/ z! ]& m
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
: t7 X% Q9 D% s* l' jvalues是“值”的意思 2 I: Q! q% r" J! g% u
就是插入向量name,title,body,向量用格式'"&name&"'表示
5 F, `: @( N, n- A8 X  f
# |  }2 o: E3 X) s8 |" M# E最后:end if就是结束if……then
& t9 O% y+ W$ N4 j! F$ t  Oset savebbs=nothing可以说是关闭掉:
$ T; H" J0 Z1 f1 L4 Y' j  Yset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ' h; g2 l. p3 T% Z- O& j

  P" d8 g1 c$ Q8 o1 Z; J3 c  U- n) C9 u- j' I% a
5、index.asp : H1 t1 p8 V3 n4 i8 U# s
源代码:
* v6 j; |2 }3 E<!--#include file="conn.asp"-->
0 t4 N" L0 s! O4 l' e<b><a href="say.asp">发表帖子</a></b><br><br>
0 L4 W0 {) h* c  E<div align="center">
1 _( d2 S" {/ m! _<center> 3 ?: h1 _- y0 @- j
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 3 ~! H5 @: S$ E/ J
<tr> 5 K* ^" G0 l- Q' }  J' Z
<td width="17%"><b>作者</b></td> $ B( X$ V4 s( ]) S5 L
<td width="83%"><b>主题</b></td>
/ H2 j; L2 D2 J' D</tr>
. `$ n% J3 j) k8 c+ }9 h. o</table> * {2 K1 L& }8 p2 f
</center> 9 q$ t+ I# e5 @  v% I* F
</div><hr size="1">
& p- c$ u' H. \7 U<%i=1 ( @' a- z5 F& l' L. W/ S
set showbbs=conn.execute("select*from bbs order by id desc")
6 w3 t/ m5 E) O/ M2 bdo while not showbbs.eof 3 D2 t. Z+ C, Z) Q3 j! Z& H# p9 O
%>
! w; K' R" u- F, N; O+ {<div align="center"> 7 j: G$ M3 h1 ~
<center>
; v$ ]7 F' z% ?<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">   s; \9 s6 m3 L) t) I+ Q$ t
<tr> ! _; j1 i. U. O% l9 V8 v
<td width="17%"><%=showbbs("name")%> </td>
/ W: a' \4 t* }2 \& {<td width="83%"> & l( S' U/ q8 U+ c6 S
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 4 w( n  C; r/ w2 p
</tr> 3 P* @8 ^0 k2 G
</table> 6 ^3 h2 P2 p7 Y
</center> 4 s' O3 y$ ]; j/ i/ t7 o2 w1 g
</div><hr size="1">
6 [" J5 h4 I; `0 D; z/ _2 E<%i=i+1
/ f, F. R: }) o) M9 uif i>50 then exit do
& K- `3 N# p% X' J3 a8 Wshowbbs.movenext
+ y, e- p8 ?4 j1 j& e* JLoop
. X5 Y# G& [, ?2 `4 Xshowbbs.Close
, x) o9 h+ Z% c. s0 Jset showbbs=nothing
$ z: X/ D3 d! J3 M3 J5 [  A%> : N5 Z4 z- J& t+ l& U

- l, D9 j4 V% ^7 G3 A; ~* G: c这个文件就不一句一句的讲了 & p8 S& T8 V9 O) K
主要讲精华部分:
6 h* z# A$ _. r3 g8 T# _8 }5 Pset showbbs=conn.execute("select*from bbs order by id desc")   H) g, T) j5 k
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
% L  |+ n  j: O: f, W) ^, T还有这么一句:<%=showbbs("name")%>
* c, B' g! ?2 [0 m就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs - L" W5 u/ m% g+ n
代码中的i=1和i=i+1
6 C  I, p6 |2 l8 u" f- lif i>50 then exit do % j. U" y0 p; g
showbbs.movenext 6 }/ {) u/ p0 F! Z  I+ D
Loop
  C  ~6 l# O0 a- G/ m; Xshowbbs.Close % j: I' C8 H( n& {1 z; T
set showbbs=nothing
% a1 F( T* q7 c" d  v; b5 k) f# M* u8 [' {
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 6 ]; u4 o$ ?7 A6 L
if i>50 then exit do中的50可以修改
- ~) M$ J2 X6 o) @/ H但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 # Q, I, x4 T# i, t. `
还有一句很有用的: 1 \& A. n4 K- }/ h4 X
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
2 e/ h- n  h3 x. Y里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
3 ~# o  X. f7 S等一下在show.asp文件中就有用了 5 D9 A: F1 e2 ~- `/ y! `& s

/ L+ z0 @, r# e2 K5、show.asp 9 Z4 k; g$ p" ^4 ^* v; U) q3 }
源代码:
+ m/ c# D0 r+ o/ y9 O& u
" h% y: K7 m: F- T: ^+ M<!--#include file="conn.asp"-->
) e3 L$ L  y; }<%id=request.querystring("id")%>
$ w$ Q( O5 a% i( o- L/ @( }1 s0 G<%set show=conn.execute("select*from bbs where id="&id&"")%> / A2 e+ }  [3 l' V8 h
<a href="index.asp">
7 G0 ~0 S' z4 n* _7 b) I<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 a, y# U5 o5 p+ P3 D0 D* S( Y' L<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ; ~9 O3 ~9 J- _: V
<tr> ' y& l' g9 c* ^$ l
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> , L1 `; @% l( y) F2 ^
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 1 E0 ~. O& N1 ?% y3 t& K& \
</tr> + v0 X/ G4 m% H, U
<tr> ' @% b7 a2 a  P
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> ! N+ \. `) g+ Q2 }
</tr> % I; U) |+ S! K3 k* n$ ^& y: {, N+ T
</table><%set show=nothing%>
* S' i1 r% u7 W9 b6 D% \4 C3 i7 l# n" w8 N- X( K' \
劲语句---精华语句: & P" g3 g9 ?2 r! _0 o8 |- q
id=request.querystring("id") % s# M, R: m0 G4 z, I; N
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ( p! d$ @! ]0 V9 X% R1 D
id=request.querystring("id")就是把地址栏中的id的值读取下来, - }$ C( r! ~/ P
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
0 c7 E# x0 O% g$ l7 J/ }所以show.asp使用id=request.querystring("id")语句把数字读取下来
6 r! I8 z% F, P, N. y于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
5 J* O8 N: R( l8 U向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ! ]# @  s4 U; E
最后<%set show=nothing%> ! A& W7 T  e* o6 O+ K: Q8 d; Q
) V1 A/ {: X2 z
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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