返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
2 {- |, x) S! y真NB..佩服ing .....# @; \# T7 i" \& m0 W1 u, ~6 }
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。' B7 _1 v4 d1 h% C6 D# X0 \
" y! G. t8 E) ?% q4 J
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
* y( S) M+ q& ~, z- `# {1 ?7 a: I5 r) |/ i6 E1 |
一、建立文件!
. p9 ]- |7 D4 }9 H* ^最简单的论坛也要有几个必要的文件,就是: . a3 T3 F, N3 X( F5 U
3 Y; ~& [, S; W
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
2 _5 F: R1 R* O% o0 B% [# P
8 o" D2 P% I- V% L3 k' C, D4 `& q2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
& H# N( O& s0 H, }% Z9 x) M, d9 ]* @! |6 G) b0 Q$ b! c
3、发表帖子的文件----命名为:say.asp ) [3 h6 `* ~" [! Y. `, U+ T3 D1 G# f

, o! z. V: n* d1 h: `& B' n4、保存发表帖子内容的文件-----命名为:save.asp
. c. e8 X: S' Z1 N& F4 B8 t9 l) d/ Q/ u3 x
5、显示帖子标题的文件------命名为:index.asp . Z' h6 o/ x4 |- |8 E
1 a: q( x) O0 D$ W8 ~% M/ n* D
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ( q: v1 O& P3 A$ i* w7 m. Y$ _

, G# y$ i5 n6 z2 {" K& C! p建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ( L5 b6 N' {( v- k. o9 J8 P

" h* `5 C8 V- H) W" x二、各文件的主要内容 ! P; a! `/ A$ a
) Q) F! h5 I% L
1、bbs.mdb . s  o% G7 d" N* e3 s

) d* L( p  g4 _6 L打开这个数据库,建立一个表,命名为bbs
8 k1 u. u. q' y3 {
& f! m4 t: q" C: d$ W, j该表中有几个字段:
7 U3 ~/ k! \. {# V/ X  J$ R" b* z! l1 x, U+ h# t
id(自动给帖子编号),他的数据类型设为“自动编号”
8 ?8 o0 |8 G4 ?' ?: M, Y: a2 D3 v) @
name(用来储存发表的作者),数据类型为“文本”
' A% W0 B' E9 ~- {  Y. ~( @: C
) [* Z# E! c, [+ B8 ~title(用来储存帖子的主题),数据类型为“文本”
* j+ W" ]0 Z. I2 W" D4 d/ K8 N  D8 n. A7 i
body(用来储存帖子的内容),数据类型为“备注” ) f8 b- l8 R. |  j
% o9 I6 D) E# |5 x. ?
2、conn.asp
5 {$ s9 X8 Z# ^4 @0 b& g% w6 w: g6 m源代码为:
5 B0 d3 L( X9 _, {1 M3 `<% 3 s# r0 Q/ z% o0 X+ x: \1 i0 Q
Server.scriptTimeout="10"
7 _! l, Q( y5 I1 e/ P  B8 ?% sc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  `. H+ X- V/ E0 ~6 Gset conn=Server.CreateObject("ADODB.connection")
) L) V* |/ @! w: Fconn.open connstr
" v( E5 N6 ?# W( n5 j$ k% P%>
7 `. l( {& Q6 U7 B7 T7 o* D1 T
0 |" t) r$ g0 `; J! c; K; r' _3 z这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
* ^/ W( y, K. q9 H5 x7 @* H8 _+ G9 ~' d
3、say.asp
  d- {9 x4 e# e2 V3 ^. Q" C2 ]1 \5 a/ r1 a1 x
源代码为:
# x+ k8 s' c% E; o9 a+ t<form method="POST" action="save.asp"> / V: t# x: ]0 C
<p>大名:<input type="text" name="name" size="20"></p>
$ S% `" l. e/ E6 l& z2 p& H( I! a8 T<p>标题:<input type="text" name="title" size="91"></p>
, B5 L, Z1 t9 c4 K7 d) z9 V5 d7 x<p>内容:</p>
- z: }2 j9 |. B2 |8 e3 P<p><textarea rows="11" name="body" cols="97"></textarea></p>
8 w1 t0 O9 {9 n0 e8 Q<p> </p> 6 m8 [) d6 S; B3 \+ ~
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 1 q5 K) d/ h8 d1 k" Z7 X' r, \+ B
</form> 8 c. v) d& l; G% c
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
; X2 z# x& m) B6 E8 h' s% t2 C8 w不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 3 k# E# P% }+ r4 X4 k3 ?* p
" w! d/ l% \  C
4、save.asp 9 R) i6 T! _- I* s: X/ f
5 T) I2 A$ ], T( D! t2 D
源代码:
6 i! [1 H( ~( ]0 V; \<!--#include file="conn.asp"--> 6 X% K" a8 S1 u* Y" Z
<%name=Replace(Request.Form("name"),"'","''")
. y! v% A% ?# l: M4 p5 Vtitle=Replace(Request.Form("title"),"'","''")
" |4 U9 A7 l" C2 [5 Obody=Replace(Request.Form("body"),"'","''") 1 m3 A2 k- ]/ N2 \9 X  f- a
%>
0 K2 W3 ^2 }4 i& x<%if name="" or title="" or body="" then%>
$ {2 |/ [3 A, V5 J9 n请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
( F- M" L8 f' A3 M/ Q<%else%> 6 l0 D5 ^# a4 ^" \, G7 b( h
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> & E& |8 m& E" }8 ?2 u- x! C" F
发表成功!<a href="index.asp">查看帖子</a>
" O0 W& T! O' M6 Q3 a! f/ o5 P+ ^<%end if
, k% m# u  y% h/ A: wset savebbs=nothing & n/ v" g+ T+ e( g
%>
3 }" v8 u2 D$ l& t/ J& i# U4 T$ S* b, E( ?# F1 M
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! $ o5 O7 g  D& K8 r4 o4 |$ c1 x, J
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
, Z8 F) c" K8 u0 E, D接下来几句: 3 D! m$ q; J, |* w; E
name=Replace(Request.Form("name"),"'","''")
) p5 J) W+ R( i6 utitle=Replace(Request.Form("title"),"'","''")
" x& z* [$ q& v9 r; H) |1 Sbody=Replace(Request.Form("body"),"'","''")
& G/ {" p2 I' y1 W) K' B# Z5 n, h0 j2 A5 g0 S
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
% x( i4 \7 t2 O0 ~4 b+ q/ [而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, ) L* K+ }4 y8 ^: p9 I! }
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” $ w4 T6 q1 C/ x2 Y! w) H% P5 c: K0 K
就是把表单中名为name的文本框发来的数据储存在abc123变量中 0 z+ u0 u- i9 @) ?* ^! v& {

* `& M* |) S2 z接着:if name="" or title="" or body="" then   K) U0 t0 Y4 p  Q0 m" x8 r
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 6 A* G; w4 c* B$ t( o+ q0 U/ W
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
9 d+ q3 {, ]' S( V: s该语句属于html语法,大家都看得懂的!
. I( t0 C8 \4 z8 l3 z
3 p( W  C3 F) U3 B7 i"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:   a2 g6 @* J2 _0 f) \. f# z& q
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 3 W4 k! r) y( F) N# n& x( l; W
发表成功!<a href="index.asp">查看帖子</a>”
% k; \, B, ?/ n  W) I1 K- s$ o# M* y
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
: O2 w3 U  I9 H; A: \/ b2 o+ kinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 3 M6 x" P$ o& H( w5 j) O1 F
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ' N" ?9 A0 ?+ y* P* F
values是“值”的意思 # j* ~6 C- _9 C5 a# C% I5 |
就是插入向量name,title,body,向量用格式'"&name&"'表示 " P: K7 {8 |* A5 o5 _7 h

$ B6 ]0 }- r1 S) y4 Q4 e. K  f最后:end if就是结束if……then
0 o0 Z6 K$ o) H" B5 G5 g& E  iset savebbs=nothing可以说是关闭掉: 0 E6 N/ Z9 u8 a- G+ B' n7 L$ h
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
1 e+ s: B3 W0 I, ^0 K  B0 {$ C
1 s$ q% ]0 `2 N5 n, d
" e& }  q( {( d' ?8 t5、index.asp
" y# g6 l# z5 b9 B; `7 ^% }) m# K源代码: # [$ I& ]+ U+ N3 D
<!--#include file="conn.asp"-->
0 e' X) X, n7 v7 N<b><a href="say.asp">发表帖子</a></b><br><br>
6 X1 A: J* P$ O/ J<div align="center">
) Z( j% C% N% d3 q; o<center>
" @$ b4 G" w% T# U<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> / r, u# B  g+ ^1 B# z, Q0 ]
<tr> , S. ~* c& i; d# E& V
<td width="17%"><b>作者</b></td>
1 D# s" ?% x9 R<td width="83%"><b>主题</b></td>
$ _! L$ ~, q8 F</tr> * i% [8 U) I: `# S4 |! U
</table> / Q+ @( ~( Y' [$ r
</center>
! X" f2 H! Y, {# Q</div><hr size="1"> % ^, A. g1 B( Z2 O0 O2 {# ?) M  S( K& P
<%i=1
/ ~7 V. W9 n9 b( hset showbbs=conn.execute("select*from bbs order by id desc") 4 j/ n- c1 n7 ?; _% c, u
do while not showbbs.eof
" V9 S. S: c4 w  J$ ^7 E' ?; H: @2 K%> " U( X7 }( B' s( J5 L3 k
<div align="center">
8 e5 |- u5 ~6 y<center>
  q8 t( ?0 o9 u. @: O1 h$ a<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
& v) O1 [, S& [0 I) ^0 ^5 B* I<tr> ; _. s0 a6 l9 `: S' n. P* [1 d# o
<td width="17%"><%=showbbs("name")%> </td>
2 _1 B5 S6 H/ Q<td width="83%">
7 k1 t1 V' ~) V( }& R; ^: R$ e6 `<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
9 F! h$ r" w2 M. q0 S4 ]$ m</tr> / t6 I0 S1 F3 ~0 h& u1 N+ M
</table>
5 G* s& r; @# h  i# I# _</center>
. w0 B7 J% K6 c9 K1 L5 C</div><hr size="1">
; ~& [9 N9 e2 ^, b% g0 O<%i=i+1
4 V+ {  |( @2 C' tif i>50 then exit do 5 e% Z0 X8 e# y  p( m+ N; c
showbbs.movenext 5 F: p/ z8 @# g  z( A
Loop 4 I/ ~4 x' O  @9 b+ S8 y! J
showbbs.Close # Q  S5 u: i5 G/ [
set showbbs=nothing 4 O/ o8 Y* U1 k2 F
%> ( U& t, V1 C! Y( x& F

4 ]/ s2 ?" n9 B0 x+ C+ e这个文件就不一句一句的讲了
$ V) S% N- G3 e! B6 u主要讲精华部分:
6 f9 W* x. K7 ~' p9 Y" \) p8 Jset showbbs=conn.execute("select*from bbs order by id desc") + U& `1 {/ o( R* X/ j& X
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, ! B/ q2 ]$ ~% n
还有这么一句:<%=showbbs("name")%>
2 q( x) Q& F* j5 n就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
) }3 p' T0 g8 e代码中的i=1和i=i+1
5 J& t' @; x! O7 uif i>50 then exit do
2 ?" t: I2 G( I% f9 g. o2 h, Yshowbbs.movenext
: l3 d9 Q. M& A0 Q1 sLoop + S3 R0 l8 ?5 b! y
showbbs.Close
1 P( B+ u% h# H0 h/ ?( _% [1 b- Nset showbbs=nothing : V/ ]+ E* E8 T3 n$ Q5 u0 i# U8 b
- H' ]6 E0 Y2 v, u. z& z! L8 C
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
: b5 q% r0 R7 D1 D0 rif i>50 then exit do中的50可以修改 0 A8 I* |, X2 h& v% f
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄   X5 t+ Y; ?0 S% ]0 y
还有一句很有用的: * D6 l# u3 ?$ J; }' l
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
- H* r1 w8 ~5 I' W0 g+ @里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
4 V3 x) a  i: \3 ^& p7 R2 J等一下在show.asp文件中就有用了
" X, _8 T+ y% \. q5 R4 }! Y
. z8 s$ j* b$ x" k9 {5、show.asp : R. m! k7 B  O0 M( Z2 n6 ^
源代码: 6 {7 L8 `: z' g, F

, r8 [4 F% ~( ~* ^( r$ d# l6 k<!--#include file="conn.asp"--> ! p: y; E* x" I# O& b+ d
<%id=request.querystring("id")%> 6 H' n( }( S; c- S
<%set show=conn.execute("select*from bbs where id="&id&"")%> 1 z/ Y; q$ [4 O+ C5 A* q
<a href="index.asp"> $ C. F2 p# e" `- s4 A! [
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> $ Y; @, L2 G: \* V, ?
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 3 I  T, z( j0 L! b- o
<tr> + o) f' p! ^3 n
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
% h  ^$ `$ w' J) X8 a0 ~$ F4 i5 g<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
" [5 {8 f$ k+ l</tr> & k4 p! J0 P0 U2 L% S' e: L6 |
<tr>
) O3 e3 F: l& D+ C<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
' }% J$ K  O) N$ Q</tr>
1 Q; a1 R, M5 Z* ?</table><%set show=nothing%>
9 l2 s. x# u0 A7 F7 G) Y. S0 p6 `/ Z$ n7 V4 o
劲语句---精华语句: % W5 Q% h& q# A. h0 a
id=request.querystring("id")
' V( O6 Y7 @7 r2 _在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 2 A' v8 S+ m" J% Y/ R+ D9 ^
id=request.querystring("id")就是把地址栏中的id的值读取下来,
4 B! D9 W# S+ g因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
7 M3 x2 Y7 e0 m! F; v+ b所以show.asp使用id=request.querystring("id")语句把数字读取下来 3 X: d! U1 ]1 ~- r7 g% v2 ~& G
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
4 ]% M& W9 h8 y9 K- y向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
  T2 m- s' f. V! M  }& ]1 b! w最后<%set show=nothing%>
" P) l0 s. \5 e9 @- ~$ I2 n8 y4 L; ]! a
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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