返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
8 {6 S$ m* }% h真NB..佩服ing .....- L) @5 {4 N) O% ]; ?0 R: }
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
' D- z+ G$ Y3 l3 ~$ _: ]7 A+ {3 |
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 4 H% _; \# b3 u) q8 m$ D  m! h( c
% d  ?; a  \, z) D& H
一、建立文件!
' a1 I: m! T& l5 `! x% _最简单的论坛也要有几个必要的文件,就是:
# _) W0 h7 P( v; [) b; m" @- @0 q+ t6 J2 u
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 9 |( O6 F9 m5 V
# p4 K$ |$ X( M% X
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 3 m9 V4 [* x( b
7 v, T/ ^6 C& V) f' C; o; ?5 Z, Q
3、发表帖子的文件----命名为:say.asp
. o8 e7 @! L- C3 Z" f6 B1 x  B0 W5 F% U% x' [6 I, s6 p" E' `1 Q/ Y
4、保存发表帖子内容的文件-----命名为:save.asp
6 F* M4 F( T' P$ Z1 C4 H
0 K! c2 I" W/ Y" r( w3 W5 N6 `" a5、显示帖子标题的文件------命名为:index.asp . `6 V/ P& ]1 K4 n. x% v0 Y& \. g
/ ~; j$ G- h) E9 k
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
% w% y: f) E" [( d4 Z: D+ X4 m
" y* ~% F% {- F( ?$ q建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" - t2 `4 E( @' J
; E2 u* V4 T% x1 A3 [1 R
二、各文件的主要内容 ) f: o4 U' ~5 E; m

7 \0 w5 `! E% a- @6 ]1、bbs.mdb
5 v7 y( c4 b% a" y! u9 e% |( r, R* e7 e( m- \! |& x
打开这个数据库,建立一个表,命名为bbs ( l9 o9 C$ N3 k/ L

" L/ n* a6 ]/ X7 {9 w  N' {该表中有几个字段: 1 k0 z# a/ B; n$ }: g9 L. y3 M
3 y; {+ W0 T; m9 V
id(自动给帖子编号),他的数据类型设为“自动编号”
% O- x# T/ b! I, A6 a) E  g. W
9 t, ]+ O  H/ J5 [name(用来储存发表的作者),数据类型为“文本”
4 k2 x) t1 Z! l% X" ^0 P. L4 H2 {3 `
title(用来储存帖子的主题),数据类型为“文本”
% `  [7 f/ h  o/ [$ W2 V6 K$ p2 O# \1 t1 b7 ]! I3 G
body(用来储存帖子的内容),数据类型为“备注” 3 }" G) M5 B' L5 w

9 X' @. q, y$ L  Q$ {( z- g2、conn.asp $ |1 s9 w6 i! F& @9 D' j$ b
源代码为:
8 v/ X5 U+ D2 e# e& U: r<% 9 c% U) E- F$ F- h+ \7 [' w, G, z- {
Server.scriptTimeout="10"
0 H/ g  T& c9 W( W1 k% Sc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" / c  J- Q8 R. t: N- G9 l- d
set conn=Server.CreateObject("ADODB.connection") 7 Q( `( f! O- G9 X- |# a
conn.open connstr
% Q4 F1 g" i- d%>
5 r# i/ u6 |3 l( S, X/ v. C& x! M! {, v: h) \
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 7 X. F4 z5 Q9 s- Q

" ]( b( K8 n4 T% m% {+ r3、say.asp # O+ B! Y0 T, @  h, n! ?7 Y& n
7 y) c) ?0 h% l6 ]# h; g1 a
源代码为: 2 f$ V5 z( x. s& q( S; [/ L
<form method="POST" action="save.asp"> / ~4 x* c$ A/ s4 q, r
<p>大名:<input type="text" name="name" size="20"></p> , T' |* G# B/ w: W- F: Q
<p>标题:<input type="text" name="title" size="91"></p>
" S6 u4 ?( T7 ?( n<p>内容:</p>
' p0 {+ o; N. C6 x5 h<p><textarea rows="11" name="body" cols="97"></textarea></p>
+ P4 d; g0 S- h) S% n' N8 z1 o<p> </p>
# J1 b8 v) _) a: t4 `" g) y<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
. K3 n: @: C6 _7 D/ J/ D</form> ' d* H  _) {6 |+ L: Y5 e
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 2 i- j% J4 c$ Z% E  z
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
- k! O: W$ ^" N8 y8 @. h& D( }0 C5 ~7 ^! w
4、save.asp ; H6 \9 q. X3 g1 P
' o% p* P3 g0 s8 Q) _
源代码:
/ s, h2 L. ]2 Z3 E<!--#include file="conn.asp"--> 5 c. F2 L1 A' ^, U, ?
<%name=Replace(Request.Form("name"),"'","''") ' O0 f, h' a2 c6 o, o8 T
title=Replace(Request.Form("title"),"'","''") 3 l; J! u0 |/ ^
body=Replace(Request.Form("body"),"'","''")
( O; ?* [8 \# q8 k* j%> 6 K/ @4 S) p3 B
<%if name="" or title="" or body="" then%> 4 A* I& ^* r6 V
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
  i, Y+ e; `! X<%else%>
+ a  a0 ^# G7 g, a<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
& n, `# Z! e" J$ ^& w发表成功!<a href="index.asp">查看帖子</a> - @# Q" g- s4 D: B1 B4 E6 w
<%end if
( V+ i8 I# M0 n* Z  kset savebbs=nothing 4 T1 y1 h5 o% w
%> 1 i7 E/ M5 Q' ?
8 U! S" b! A4 u; ~
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 6 m0 p! e& e! b% }
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ( @; V% ^6 N) ?' L3 z3 B* }
接下来几句: 7 a, b) I& S: e9 i% C
name=Replace(Request.Form("name"),"'","''")
6 A( \0 F3 u5 M' o/ w6 L8 p8 _title=Replace(Request.Form("title"),"'","''") " G% u; X( ?9 Q
body=Replace(Request.Form("body"),"'","''")
) O; k* z5 Q& }# e
( }# z/ {) ^) G; Y3 z% h“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
# p/ [' {( ^- D' l. M3 L而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
3 f' w& ?. {4 Q0 n3 @  B# h$ ~* g如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” $ k6 a$ v) F& b2 T  H! I, {
就是把表单中名为name的文本框发来的数据储存在abc123变量中 4 s! Z8 q0 _. R% r. n: b
- k5 A- F, J- t2 s4 i$ c
接着:if name="" or title="" or body="" then ; \! R) G7 X% Y) H) }6 y
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
) i$ U/ d1 [7 y“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ( }* t/ o0 V- y( K  X6 n+ H
该语句属于html语法,大家都看得懂的! 0 g1 F) I4 o: ?+ Z
5 `! W/ ~5 |8 q6 X9 Z  e
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
7 D, V8 g( E- ~! O- D+ ]/ |“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
" c4 b/ j8 d; [发表成功!<a href="index.asp">查看帖子</a>” 7 R/ T8 ]' C4 q6 Q1 \( s

( e1 W1 C& h* p- U"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: " D5 e1 f7 m& \
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 4 d# s; b- f& ?$ O) R: N
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
4 j1 ^; K  h, g7 z/ d8 [, W+ D5 Kvalues是“值”的意思
2 d' ~) D4 I8 a7 U$ [) H就是插入向量name,title,body,向量用格式'"&name&"'表示 ( M3 [! M, c7 O4 C6 b

2 V  w4 y0 f% c1 S4 `5 k' Y% B最后:end if就是结束if……then ( I; m9 T" h  m0 Y1 J+ R
set savebbs=nothing可以说是关闭掉: : _$ D) h4 G/ m9 D6 p
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
2 e: g7 E: o2 y0 L  N" V& X" R+ C% X' r; `9 e7 S3 V
4 i: b0 }3 `  N9 V  h
5、index.asp 0 _8 R5 `% N  g1 j* t$ V
源代码:
- p4 k) ~' M+ L* Z<!--#include file="conn.asp"--> & b# ~( `4 t) d8 J
<b><a href="say.asp">发表帖子</a></b><br><br>
( E7 J# K2 \8 N2 @<div align="center">
( k; L2 |5 h+ D: ]<center> # e0 Y7 i+ ~( e5 H
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
' Z% {  k( `5 J& m4 E& R<tr> - f3 T) K" @& @7 U. U6 m
<td width="17%"><b>作者</b></td>
8 l: B, t( A1 O4 `+ r- X8 B7 i* a2 t<td width="83%"><b>主题</b></td> ! ]6 v1 P, [% M  W
</tr> . l% q  v) C2 J7 l. Z# {& M
</table>
9 A. o+ z. E) S2 K, ^/ h</center>
. f2 b3 f+ y% |1 y3 y/ c' H</div><hr size="1">
# O6 G/ u5 X6 M9 w4 C  q<%i=1 . _! g) n/ Q# H8 A
set showbbs=conn.execute("select*from bbs order by id desc") 7 ?4 y: j; W( l7 m0 G
do while not showbbs.eof 1 u9 J) [! K  z% r8 C$ w, Y
%> 8 }$ y- W( w( d% t$ M0 h! j
<div align="center">
$ @0 ~2 V" e6 g, o  u/ ?& X- `$ Q" r<center> * Y( Y0 M! [; E' y  _# a& P9 |
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> + K+ l% l8 R6 c3 }; p, B
<tr>
6 Y' n5 r$ o% r7 Z; D<td width="17%"><%=showbbs("name")%> </td> 2 X# V3 j- \$ c
<td width="83%">
: W) J) @8 j9 q4 j) q" y<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
$ u# A" f4 t$ ]  U& g+ F: ~  Y</tr> ; E  D. M2 Q1 J3 n+ R
</table> # Y8 `/ r5 x& q. H
</center> ' Q- Y6 @8 z# M5 l+ l
</div><hr size="1"> 3 j- P! E1 C/ R
<%i=i+1 4 F; q/ {. J  g, O' z. N
if i>50 then exit do
, w2 l7 s7 ]8 V& \" U' c- Tshowbbs.movenext , E7 L3 V. Y4 _2 F, P/ \
Loop
, i: g8 R% q8 ]+ Lshowbbs.Close
! W: l8 R" c* Fset showbbs=nothing
) s, @. g2 i2 E' l%> ! q7 B8 ~# y! K6 m4 w
4 s5 k' ^+ @' C8 u' ^5 D
这个文件就不一句一句的讲了 9 [5 I: R1 L" C. J9 v# D" @& ]
主要讲精华部分: $ v) r2 F2 P  ?9 n3 G( P
set showbbs=conn.execute("select*from bbs order by id desc") * y9 V$ x. i* U5 a$ P
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 4 i3 ?7 W3 N4 Y
还有这么一句:<%=showbbs("name")%>
  ], i6 k" ^6 [9 g! N6 q4 h6 E0 F就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
2 n% r; A, f( t! \0 g, ~+ j. H代码中的i=1和i=i+1
. X7 r% u2 E  h& p- M2 |7 }if i>50 then exit do
- d# u6 g+ P' Zshowbbs.movenext
3 O1 m! a8 p/ SLoop
0 y3 h& V5 d0 h: ?showbbs.Close
1 u4 f' d( V- }# bset showbbs=nothing
; S3 ]2 I/ e; i& B4 v: k- X# H  f4 t: L* C  k
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
+ y% r% ?0 T: m$ j: ]- f; Lif i>50 then exit do中的50可以修改   V! @9 O( x) z! _7 v3 q9 L# s
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
2 `: i' T9 S6 S还有一句很有用的:
2 v0 _; Y& v; m+ Z& O! j<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 9 D8 p6 g  N% c2 P2 `6 P$ b
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 5 G8 k$ Z# f8 A, _& c" e& R0 B
等一下在show.asp文件中就有用了 . b' K/ T2 Q/ h7 y  T& w9 B
1 O, E  L; s3 \6 k; h" K
5、show.asp 6 z: k9 G1 T6 Q# q
源代码:
' x' a2 {8 Y6 P. }2 R; a6 Z/ M" Y5 ~( z
<!--#include file="conn.asp"--> " i# e/ L$ C* E  }' U% w; B
<%id=request.querystring("id")%>
9 e8 Q: o  W3 e7 L+ [6 }$ H6 l" m<%set show=conn.execute("select*from bbs where id="&id&"")%>
; O4 F9 i" Q! B# g<a href="index.asp">
! J% V% y, P# }4 f7 T/ c2 f<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
+ X  p) o) v: x4 }# Q% X. u<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
4 I; F8 ~: p9 W' o# Z2 l$ w<tr>
! h/ @4 j) Z# U<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
7 L9 A& v& l% x9 j$ W<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 7 q: M' K, |' |0 E) Q! r$ ~5 k- C
</tr> + |" b; L8 _/ L; o; q
<tr>
1 L/ y5 Z0 [3 z6 F0 C<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> , J! t. k  M" w* c
</tr> ) \% Y! t6 t! h( b
</table><%set show=nothing%>
# |6 [7 ?8 N! t. K! a$ L; V: m  X
" I* Z) G6 m+ g  u6 Y劲语句---精华语句:
. b) \+ P  g6 G! ]( e* v! P! P/ d1 iid=request.querystring("id")
# k- p, X9 ~$ p- K1 G$ j: o; \; F% k在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, & X4 _/ Q  m! q" P4 V
id=request.querystring("id")就是把地址栏中的id的值读取下来, 5 ]# B) }9 b4 m
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, & S5 s) _# y2 O5 P- l
所以show.asp使用id=request.querystring("id")语句把数字读取下来
' _. H% [; P3 m) |于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") $ e1 ^! I( s  n; M
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
1 R/ D  g" D+ d最后<%set show=nothing%> % W/ [  f+ ?) Z/ P1 {
  U+ l/ ^! [0 B6 \: P
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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