返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
. n3 p: L; i. S8 n1 L$ n9 ^; R9 A) ]真NB..佩服ing .....
9 E9 D* ?) ?$ r大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。. y$ l3 T/ r# \9 W4 h# q

* w6 S2 x! j. S6 z$ u; n" p3 V/ }同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
: v4 \" F2 |, {! W/ {  ^
" W' z  Q( a/ c, D4 M. f3 D' Q/ O" k一、建立文件! ' G; e! b& o# A, N7 {2 _8 `
最简单的论坛也要有几个必要的文件,就是: + D' ^$ n1 e5 r0 T. @1 j
4 h$ P, c8 {5 t
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
! E7 E* c) u$ S8 c
5 c8 {0 }6 O8 Z/ p& h5 b2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 3 x: g0 u# j& \

( W8 H+ \' o* Y" M7 I3、发表帖子的文件----命名为:say.asp
; k  G! g# u, F
& h' @4 T- \3 E) \" F3 u5 B4、保存发表帖子内容的文件-----命名为:save.asp 3 l$ `+ u' d9 q' D
: Z  b% H) v! g5 K  j
5、显示帖子标题的文件------命名为:index.asp 2 k4 D) G% x" ?  b4 \- K. e
" ^5 \* ?% H1 n, i1 z+ r6 \$ s
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ! S2 K" v: o" \% j
$ n* x2 s+ O' _% _# Z0 v* }' Y
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" $ v7 z% \1 a( Q+ J$ |! {2 K& H
+ Q% E* M" A9 z% ]
二、各文件的主要内容
7 B1 ~/ J/ C; _0 d" v
. e0 Q' ]6 H* M, `4 x; y1、bbs.mdb % z, l. k! N8 {/ G1 g' P
6 A1 r  P/ d3 i# q; ?
打开这个数据库,建立一个表,命名为bbs 8 e6 @- B; x# q7 p, W: C

' [( [, \% w; h& G该表中有几个字段: , @5 w% R. w) O; S3 D, W
+ Y$ O. [$ f2 ~9 @7 s2 u2 ^; _
id(自动给帖子编号),他的数据类型设为“自动编号”
1 r/ @2 g1 Z2 a6 }3 P: j, x! o" v; e# z# Z. j" p
name(用来储存发表的作者),数据类型为“文本”
( @& B. |  ^: n; k3 w9 J( c7 ^' {( f) j2 m/ B; ]! f6 m2 W
title(用来储存帖子的主题),数据类型为“文本”
! D& V' r( `+ \# X3 {
4 X: P0 i  k6 s2 |: L3 j. Pbody(用来储存帖子的内容),数据类型为“备注” # M- {4 w9 y( |. K& A$ ~
( Q* z! J% M- }% E
2、conn.asp
2 L7 V, q5 z' {源代码为:
' c% ^/ l2 K1 z7 ]. ^. {" S<%
& M7 @4 v# N! u0 k2 \7 D! L% t  QServer.scriptTimeout="10" 8 z4 d; o" U7 E; J
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ( F( Q3 c+ ^3 Z
set conn=Server.CreateObject("ADODB.connection")
! S! M/ h! Z" v1 ?7 |conn.open connstr
& c6 y0 ^1 z6 J. G& J7 k%>
3 \/ Z3 m! q# O8 s5 l& m. I
, x" |- p6 U$ S2 U这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ; u7 h; }' B$ J) C% V; ~/ @" u  C
  l7 ?# ^7 a& r8 c
3、say.asp ' }3 v+ Q: p/ d8 f
* G! ]# U0 L+ a' J- D$ P# C4 D, |
源代码为: 3 I; z+ N$ |) T
<form method="POST" action="save.asp"> 4 Q. }* g2 R4 E  z! Q- a* O0 w0 ]
<p>大名:<input type="text" name="name" size="20"></p> 1 k% ]8 k9 I: b" j/ r
<p>标题:<input type="text" name="title" size="91"></p>
$ {5 B+ a1 R. u% Z; K" N( K<p>内容:</p> : x3 J9 i' z5 F
<p><textarea rows="11" name="body" cols="97"></textarea></p> / J& M* ^2 i' N' A+ R( w/ ?; J
<p> </p> & ?' J( U$ n% F* K$ ?9 r
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
# K4 V' @4 K, ^5 ?</form> 1 l7 m7 @5 \- _0 q( e. q
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
* ?; ^% j: j0 Y, S7 ~不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!   M* _4 A" Z' a2 T! @
( s. n& b. s2 G: r; A
4、save.asp ) g0 ~# l+ h) N9 o2 {* S' _
: s1 z6 Q; e0 t3 P# |
源代码:
/ |( K8 p% H- T& {+ ~<!--#include file="conn.asp"-->
( ~3 ~$ e% g( y; m$ [<%name=Replace(Request.Form("name"),"'","''")
$ {+ O" N1 c& K% atitle=Replace(Request.Form("title"),"'","''")
, C6 B( p3 h, G% Ubody=Replace(Request.Form("body"),"'","''")
1 N0 E, h( ]+ ]7 j! z6 \' ?%> 1 b+ @" I' o/ @6 x' V
<%if name="" or title="" or body="" then%>
$ ?: p. ~( H4 Q) w  w7 O$ ^5 C4 ~请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
) {+ G8 `/ U+ A8 N! ?<%else%> ' d( R5 V( s2 C. S
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> " N9 [: O* W  ^* H5 y0 e, F
发表成功!<a href="index.asp">查看帖子</a>
. r8 ]' X. s. A+ Q2 d' B' u<%end if 5 ?: p+ z, q5 Q- \
set savebbs=nothing
/ U& i2 j" ]- }- `) w%> 8 \7 }0 k* ^8 ~( S: [8 Z* {9 L

2 s3 X3 K, r8 q( B7 C7 Q, G第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
+ [5 i. G/ M6 A6 Masp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ) V  g8 J1 `: }8 Y7 J: g' g$ ^
接下来几句: , S/ @% p& G/ Y; v
name=Replace(Request.Form("name"),"'","''") 9 a5 F! T$ b1 }6 p
title=Replace(Request.Form("title"),"'","''") 2 P3 F2 q" p" d8 Y( W
body=Replace(Request.Form("body"),"'","''") 3 M1 X: Z( U" i, a  i) f
# k9 e, W$ f; Y7 h# B& U$ c$ Y4 J
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
: H- |. @' R& k, B5 c, q而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
/ L* a# N$ C5 ?, v* S; i8 F如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ' p+ W0 }) o7 `# v3 j
就是把表单中名为name的文本框发来的数据储存在abc123变量中
' i% m5 }5 `5 `- b# |0 U. o6 a+ P, T0 f
接着:if name="" or title="" or body="" then * l2 P+ X' _+ M! X
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
, U3 ^  x3 u$ h3 c“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
$ [6 K4 P4 z' J. E该语句属于html语法,大家都看得懂的! ; q9 Z* {& U) K  ^: e& b/ M
0 A3 u; m/ q* A- J+ Y
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
5 @! u" l, R+ ]$ K: I; x“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
% E. I6 V8 H. _* c$ O发表成功!<a href="index.asp">查看帖子</a>” 0 M9 V. P. j3 p1 C* t

$ k8 S. K" r6 c% a. N"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: / K* Y& g' H2 a7 V1 ^! C5 i' a) M$ f
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
0 T9 [5 ]. {; {中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
$ m" l7 m" O% y" ], t3 t( @values是“值”的意思
4 C1 o5 b. z- H# |$ V3 [就是插入向量name,title,body,向量用格式'"&name&"'表示 " v6 w# U& W( k$ J3 B

; K" a+ H* ~( W7 |2 Q4 X! g最后:end if就是结束if……then & G1 U" \; s4 a
set savebbs=nothing可以说是关闭掉: % N2 {5 D& J. Y3 n. @0 {
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
2 V: V$ }0 Y0 R9 {5 s# Q
, [1 ^- ~- n0 U$ [2 F$ K7 Q( b  D. _5 s& X0 R+ s# g
5、index.asp
7 {  J( i) K" X9 O1 }源代码: : @4 I2 W8 l6 I# e
<!--#include file="conn.asp"--> 2 V8 H) h& H2 g, ]) F
<b><a href="say.asp">发表帖子</a></b><br><br>
1 x+ X, g) \6 x# N" v* H9 B$ f<div align="center"> ( d' c0 Y& R* ?! w) L. e
<center>
; a" j" V1 F  C; z- K1 T* x( A6 [<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
0 C5 m; \; A# @' y<tr>
/ f" @$ L7 T& x! q' O+ I<td width="17%"><b>作者</b></td>
. y* d; t, t+ i8 Z) G<td width="83%"><b>主题</b></td>
2 g5 w0 f8 k$ k" @1 U</tr>
1 @8 f% s3 a% L5 e) d  b</table> & c6 G0 r, r% M* v1 {2 x8 I
</center>
; t& Y$ h* N: X  C+ j</div><hr size="1">
8 Y0 Z8 f; @5 I) C# d, j<%i=1 " P% W" c7 s5 ?
set showbbs=conn.execute("select*from bbs order by id desc")
  h5 a1 O( m! L2 I, U) m& {& pdo while not showbbs.eof . A0 c$ A8 O1 w& W! H  ?  w* K6 ~
%>
6 M; A& r) l1 w. K" I8 o  I) g: x<div align="center"> 7 }' I; T% G* |+ t: w0 I- p4 A
<center> & A* {4 Q  m7 b6 Q5 [. e' [) |
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 9 l# E7 @! E, m( J5 J1 T
<tr>
: w( u( E# Y* g6 p0 I2 s1 h<td width="17%"><%=showbbs("name")%> </td>
' Z5 k% W: t1 y/ I<td width="83%">
, |* N9 f- n7 N0 }& u5 N<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 9 m- z# _$ Z& H
</tr>
1 S! b' r; t( V2 R, @/ ~</table> ! f* K. T) U, b  Z
</center>
8 I& u; c) i8 X% _* L: A</div><hr size="1"> 3 b" n6 l  P* J  }6 B1 L
<%i=i+1
% s# ~; r0 L% g$ lif i>50 then exit do 7 w3 ?- I- ?/ F( ^6 i3 ^
showbbs.movenext
0 F$ l+ ]* v1 b: lLoop $ |0 U# p6 A# w$ J
showbbs.Close + b% P. O, h% V% \1 ~
set showbbs=nothing # D7 K& g+ H' \9 U9 j: d
%> , t' f3 R: X; p) X9 f8 d

& t% `5 [/ O" n# I这个文件就不一句一句的讲了 3 x. q; e2 g9 N5 q# D6 }% U2 E$ d
主要讲精华部分: # ~0 u+ [' I' Y7 X) r0 r3 P9 h
set showbbs=conn.execute("select*from bbs order by id desc")
. {' F* F! B: _0 M7 U/ v意思是:向数据库中的bbs数据表查询数据,并以id排顺序, : A7 X% U2 m# h( V5 m$ S5 u
还有这么一句:<%=showbbs("name")%>
9 w1 x" }( n, z1 a就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
# a, _; y* t2 z% s5 j% o6 z代码中的i=1和i=i+1 4 R, w1 X/ K1 Z9 o! Q/ @
if i>50 then exit do ; W+ {+ {) t* q8 @& g+ w
showbbs.movenext : y" h0 M8 }: w1 _& _" ?2 T
Loop
( i+ }3 [. c9 C8 mshowbbs.Close
7 C+ U+ o. `5 w0 @; Z1 n& Lset showbbs=nothing
! C  f6 Z9 L4 ?$ z
4 t7 j) ^( c* B  c这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
0 M$ h9 O0 N7 n8 oif i>50 then exit do中的50可以修改 ( m  Y8 J; x: p; X$ o5 `& j+ O" N
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
' d, g# g, [0 m4 e0 w1 i还有一句很有用的:
. O3 d4 {* t2 D  z& x! o0 S<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
5 L1 L- y3 q9 H9 V( j& W+ I- T; `里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,   I# K* n9 S+ `
等一下在show.asp文件中就有用了
" \1 j3 D( S2 n0 M/ D  u9 ^( h+ W5 B+ C  f) A
5、show.asp
9 i! M) P# T* a8 D7 O源代码: ' I9 L0 G/ o5 \! j; O

# d/ l6 ^# D/ M/ A/ y: j( f- O" B7 f<!--#include file="conn.asp"--> 5 D2 B9 ], l+ F" @" a/ y; D
<%id=request.querystring("id")%>
7 h% I3 [1 V7 s' ?<%set show=conn.execute("select*from bbs where id="&id&"")%> . z8 E* D1 U7 B1 X3 W) ?; G, Y; r
<a href="index.asp"> 8 V# ^# ]' }+ T' z2 }9 G9 ^% \% a
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
6 W' l; D2 w$ J<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> : S+ n: c/ t5 I
<tr> 2 f$ V! A' q5 ~- P
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
& g5 W" H  y/ b<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ! Y% R6 b' ?$ p/ {
</tr>
2 t/ y! {5 \* Q1 E* y$ d6 w" z<tr>
, i* a; W4 L: H3 R6 b" p3 Q<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> - D  J5 J% Z2 V; c
</tr>
/ r& k  m8 @- q; ]( ^</table><%set show=nothing%>
% E1 [2 [% l6 ~( r9 Z7 Y
; f, x  j: x; L% Z! X劲语句---精华语句: ; w* o0 E. v, p
id=request.querystring("id") 8 ^7 u  h1 P/ x7 m  M  ~  A2 N
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
) F& i% D9 C5 z5 m4 B& A2 w% T' qid=request.querystring("id")就是把地址栏中的id的值读取下来,
/ x3 m3 x' G1 }- {4 B# a因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,   T$ z/ c; M4 H/ o) c, }
所以show.asp使用id=request.querystring("id")语句把数字读取下来 ! }2 P8 W9 [: h; q
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
# X8 o; u, @! M0 K* }. e% F向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"   |5 n5 \8 L7 h9 d  z
最后<%set show=nothing%>
) H3 Q, x; V- x# ~6 |1 m" ?/ i* M& Y7 M2 F3 B, A% {1 _  ]0 o8 S) @
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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