返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西1 |$ O& k* R+ i' I
真NB..佩服ing .....: k! B' |- h* k0 R6 o
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。- l$ L' q' {5 b& U" T' f

& V3 g5 U3 w- S* |同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
6 v: n, |# c; @* ?- M6 w; Q* s3 I1 ~% z% v# R0 o& a
一、建立文件!
+ X/ b9 X* G- H" _- Y最简单的论坛也要有几个必要的文件,就是:
# ~* G1 q2 @& [6 A  Y8 t
8 k% e# W( j% t+ u& b: {6 Y! p6 ?1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
2 [' i1 s6 @9 W5 f+ c, {% W; n: M( l/ \% `& K4 Y, d; \2 ]! Q9 x8 [
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 2 h4 G' @2 w7 T/ N8 @- M, F

+ y; b; C- S: i. w3、发表帖子的文件----命名为:say.asp
& b& U' C. p$ P7 y0 w% @
! a. h% V7 g1 C) c* U$ ^2 _/ i: U" N4、保存发表帖子内容的文件-----命名为:save.asp 6 g- z1 `: t2 B& c3 I# X, p
$ x6 F) t& H* `9 [
5、显示帖子标题的文件------命名为:index.asp # \+ D9 K: Y  X; G0 n  M4 _

$ n- j7 _4 b" D2 z* x6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
8 h8 d) V* r' v. L, \. ~) p
! {3 Q3 c) u" ]6 m, O建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ) N" {8 G* {5 C2 z

/ H# u' ]! T! Z# i6 d二、各文件的主要内容
7 k# f% X; \6 x
5 h/ P4 `# p9 U# [# I& ]1、bbs.mdb * J2 X  W' ]+ Z. i+ `7 H2 N+ X
7 n: k( W* g3 Z
打开这个数据库,建立一个表,命名为bbs $ H$ B& \6 {9 }9 A
1 Y9 h3 g, e4 T( i1 p1 c
该表中有几个字段:
+ \. u/ {5 V+ R7 a
4 t5 n& p6 v0 V& ^+ ?0 v' i$ O+ `id(自动给帖子编号),他的数据类型设为“自动编号”
8 ~% j  J8 Y" m1 I' E- Y; I6 w4 \' G8 Z8 c
name(用来储存发表的作者),数据类型为“文本” 7 Z1 G- ]5 j% v0 D8 d/ r9 @

3 R1 Z/ }* j2 x5 Stitle(用来储存帖子的主题),数据类型为“文本”
4 K9 O" g- F$ q" ?1 g: D2 _
" u0 P$ Z8 `8 a! w0 f- o/ K3 H2 Vbody(用来储存帖子的内容),数据类型为“备注”
2 v$ s9 G7 d  W' b% v0 a- m  G. r8 L8 ~9 r" r
2、conn.asp / P; Q; r' Q+ M
源代码为: 5 {. D9 G0 e9 n. ]' j: g5 R2 X
<%
0 l  z- e, {/ }: F  H, Y6 CServer.scriptTimeout="10"
4 ~* N) y& A+ J& c* x) Mc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
6 [8 u- j8 V# Z/ X+ a$ m7 ^. Lset conn=Server.CreateObject("ADODB.connection")
2 W' P6 ?1 w- e! r) A' E+ lconn.open connstr 4 R0 n8 w4 o1 k$ q, s. L9 t3 G
%>
7 x5 k2 O% A0 J7 [9 t
- t: M3 u8 \) x0 N9 |8 s3 d( E这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 4 W) w! P1 T0 Q- |* k7 z

1 P0 H' q' D' N( U3、say.asp
6 M4 N/ ^" C; `( g9 T" X; ?, c8 E9 K) [4 o* p% h
源代码为:
, {% V, u, U" O5 ^: x: |6 ?$ X<form method="POST" action="save.asp">   F% l# e1 i4 h$ s, U7 n0 |* s
<p>大名:<input type="text" name="name" size="20"></p>
: ~) o8 _- r# d3 C% i, K' k2 q<p>标题:<input type="text" name="title" size="91"></p>
  I8 B# `4 z6 H<p>内容:</p>
' D* Q; i( [7 j8 S- y<p><textarea rows="11" name="body" cols="97"></textarea></p>
% E4 Y" o. V' L; \" C3 \$ M" z<p> </p>
, R9 \7 P4 U0 |! Y4 _& W8 p<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ) g6 R  q9 j$ B4 z. U4 e! U
</form>
5 A- T) w! P3 o+ R- t: V  Y3 s; w大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
. {: R" e/ [: m! U3 y; S不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
0 ~3 }* L2 Z2 K) ?7 h; i' u, V. d. Y# T  ^; u* K$ }6 g: u" o
4、save.asp 6 @) S; I$ K0 K9 A2 w9 U
& ?4 V4 l) T) y' Z/ R( k& F
源代码:   m4 _$ H7 P. ^
<!--#include file="conn.asp"-->
2 S8 V( @: K. D6 x' ]& Z<%name=Replace(Request.Form("name"),"'","''")   W5 \1 ^) z; }6 J  Y" S
title=Replace(Request.Form("title"),"'","''")
+ d/ t/ L9 b! s" R1 Fbody=Replace(Request.Form("body"),"'","''")
  o+ }) _  ?- A0 ~, u%> - j( W0 w: }+ y" K
<%if name="" or title="" or body="" then%>
) J: A% |+ G6 |' M  h+ \- P请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ' c1 t% S" d& Z& {0 E7 b/ X
<%else%> 3 V8 A2 y5 F/ P) p
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
4 Z+ T0 f( [! U6 t/ ]发表成功!<a href="index.asp">查看帖子</a> , V: p$ ]& y, |4 r+ a4 y7 l
<%end if 5 I& h# e1 h; n9 q8 M  ?/ S
set savebbs=nothing
( G8 M! S# M! w6 \6 e0 p- A4 Y! D! E%> ( W- R* L  c* C
) F+ o, H" X2 H2 ^9 P, p# b  a+ K7 ~
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
/ x3 @0 Y4 w% P* ^. \; Hasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 8 e, |8 \  o7 a& @2 h9 a9 j( s* n
接下来几句: 1 ^5 `  V3 u1 T6 a- P) j4 R
name=Replace(Request.Form("name"),"'","''") 8 ?' G+ ?! ?! U9 D& _/ H2 [9 f
title=Replace(Request.Form("title"),"'","''") ; ?; ?, s1 \( q: g
body=Replace(Request.Form("body"),"'","''") 3 n7 ?5 Q& O" J2 C

# p% q5 B0 C! l) m) x+ J“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ( |2 d- K5 u: E& a
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
* n* `$ {# a" w! u0 F如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ; a9 @4 J7 Q% T* z% ^- \) m' b
就是把表单中名为name的文本框发来的数据储存在abc123变量中
' Z3 I$ y$ B& W2 m' L& x; ?! z
. N7 h( j" U  ^  w: c接着:if name="" or title="" or body="" then : g$ P7 u7 S" f$ g, N" Y" I& U. ?  f
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
( C" _: G2 U" M“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
; d/ P6 W. M/ U3 G% ], e该语句属于html语法,大家都看得懂的! 3 \4 [1 ~$ _$ v# S3 v

7 C% {0 ?# g5 R2 C  {! e9 R: ~0 J"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 8 V" v* u. K9 W$ o  p: v( s: E; D
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> + L2 l+ }* j; O, T" d3 ?7 {. [4 q8 \
发表成功!<a href="index.asp">查看帖子</a>” 3 z& v2 B) d/ o
0 R1 M5 E% P- A/ g9 t6 d
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
# F5 o; a# I2 D4 I8 f( zinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
$ W1 {3 {! I0 T$ q: Y$ S$ m中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 7 e( V: i) `  s+ n; L& a4 H
values是“值”的意思 $ N3 i  d! A4 @5 Z0 V% o5 R& v
就是插入向量name,title,body,向量用格式'"&name&"'表示 : W# ?7 e3 S+ A3 L( O$ a# m

- ?" H, v5 a' ]( z! F1 s% ]6 a2 a1 H最后:end if就是结束if……then 7 p4 S5 H  _* H
set savebbs=nothing可以说是关闭掉:
0 H* l5 ^! h1 E1 @" M" {0 N5 q' s; V7 tset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ; d3 s: L: k5 b

  w2 U& d) ?) x, R1 r: W# P$ J; b6 L/ D' R7 x+ K; q
5、index.asp
0 T; D; |. X1 Q( r源代码: 9 C* P6 D; x  o/ Y* r8 m
<!--#include file="conn.asp"--> ) V9 M/ u/ I- s
<b><a href="say.asp">发表帖子</a></b><br><br>
- l/ s- u# S$ F0 f4 ~$ W8 h3 j, w<div align="center">
- }/ ^% V8 ~9 K$ I2 \' k<center> # E4 H7 i8 ^6 ]" [
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
9 x8 o; Y+ @" O; `8 m. H6 f<tr> 8 u) N  U* F6 \- R
<td width="17%"><b>作者</b></td> 8 ]( X4 v6 @/ Y; x8 q
<td width="83%"><b>主题</b></td>
0 U& c+ K0 W3 S7 P) l  Y</tr> + n4 q) C. J; `4 C
</table>
5 c2 n3 s) o! Y. K' J# r4 y/ @2 q</center> 9 W2 f; t" }# A7 Z% j% r
</div><hr size="1">
: A5 m: d1 h2 J7 n, O; k* h<%i=1 ) [7 O) @. N# y. J
set showbbs=conn.execute("select*from bbs order by id desc")
( K  `% j$ R) Y0 Q5 Q: a  ]do while not showbbs.eof ; N& [4 n9 L- I/ i1 }
%> 3 F0 I2 K; g  J3 U9 E5 D  ?
<div align="center">
; i+ j2 S% i4 d5 D, G5 n! A: b& i<center> 4 |2 s: [  ~6 T6 U1 @
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> / p7 d# q  L9 _6 N& b  W- G) G1 L
<tr> & I0 @1 Z/ N1 G
<td width="17%"><%=showbbs("name")%> </td>
; o! D) L1 g- p2 |. O8 s<td width="83%">
' K# t0 `1 W& f2 g( W7 b6 Y( _<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 8 V: j  b1 O1 X& g, D9 s
</tr> 3 f- [! J2 j" |) n9 K( v7 e
</table>
1 Y; g" ]! Z. G- N7 ?% u</center>
$ K6 F6 Z# f3 e* J' H</div><hr size="1"> , p1 h. ~# e+ F/ J' J2 N
<%i=i+1 # M. x  _: C; j
if i>50 then exit do
( B1 P6 Y5 Y6 W0 u4 ]; k8 eshowbbs.movenext
, a6 T! ^- x4 p4 Q$ f$ z& @5 PLoop , Z  f  i1 C6 f  A+ j. v
showbbs.Close
% W/ i. C; f, J& M, W+ i  ~set showbbs=nothing
- P0 Y* ^  @+ [/ u- X5 V1 A1 N%>
) m7 p1 W0 K5 u( U4 `3 o" r) I5 V: h3 g
这个文件就不一句一句的讲了
2 \% z% B% d7 F  p5 c主要讲精华部分: 1 X0 F3 V" T2 x
set showbbs=conn.execute("select*from bbs order by id desc")
9 J+ Q: S& c8 \  I$ Z意思是:向数据库中的bbs数据表查询数据,并以id排顺序, ( q* F- I4 q( T" G
还有这么一句:<%=showbbs("name")%>
+ H) M7 o3 j4 r9 r- t就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
$ o' @, b8 e5 I$ [/ |8 _1 t代码中的i=1和i=i+1
' Y, U' G/ h  \. L9 t1 U, Hif i>50 then exit do 6 T. D  ~/ V+ g( m: @
showbbs.movenext
0 d4 y3 N0 O( D4 BLoop + I; x# Q  b- G
showbbs.Close
# @3 E3 X& O( d8 g# wset showbbs=nothing 3 c' g0 k, o7 Y  q* g; o7 {
9 z( o% B0 p3 z' x* H" ~! M: ]
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
2 }* D" H+ B/ D  L  J+ Pif i>50 then exit do中的50可以修改 8 D: C0 C7 I% z0 a; K
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
% r4 Q0 g4 g6 B9 n) f" r还有一句很有用的:
3 k% I# R$ O# H$ l<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
+ `% f6 l8 K+ }4 T- t6 _9 K5 S2 h里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
, S, J7 g& h2 `% ~7 U5 v9 C等一下在show.asp文件中就有用了
7 K7 A) V; ?6 y- Q
0 r# z) M8 w1 D( Y# _* z. o+ y5、show.asp
9 E+ k2 B# x, F) R4 Z; y源代码: 6 u* l& u+ q, g
: }# Q# p0 y' ?" ?9 Y
<!--#include file="conn.asp"-->
0 I* r3 z7 @( ~3 S6 r4 Y<%id=request.querystring("id")%>
0 J0 L- c$ a( t& e# k<%set show=conn.execute("select*from bbs where id="&id&"")%> ! d, D, s$ {& l( {7 L7 o
<a href="index.asp"> 2 w, u; K+ c& E7 w: a  e3 `5 e
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . z" O( q8 s/ x$ O$ w' q
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> + @9 \! w7 W) @7 a! J9 \  Y+ y
<tr> 1 t$ X3 t5 x3 ]; C+ M% d+ |
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ) ~9 Y2 k  v/ i: |
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 9 I7 r( ?0 i# I4 o8 U; f1 n+ M# x
</tr> 1 P/ d# v' `5 i; F* K
<tr> 2 K; T/ u3 u5 T* M! {
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 7 y$ o' I- R3 K: R' X3 Y
</tr>
1 K' a$ c& B" s, {" }3 A" v</table><%set show=nothing%>
5 p/ m! X3 ]) t! L: T6 O6 [( J& G( s! Y( i) y+ W
劲语句---精华语句:
$ a5 I3 a9 {7 E, m4 h) F8 Kid=request.querystring("id")
* D9 D- ^2 S  g在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, * d. R& }: r- Q0 G: G& I! u. a
id=request.querystring("id")就是把地址栏中的id的值读取下来,
7 }" ?3 w- v! I因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, - P1 F9 f" L3 r4 U
所以show.asp使用id=request.querystring("id")语句把数字读取下来 4 i9 @; a( f& w& k
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
1 s: i0 A/ I; V! \; o向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" $ ~( I1 ^( C4 w" K% [! ?
最后<%set show=nothing%> . L. k! w  I8 g* L
" [2 D. p  `6 k+ E4 X! U2 g
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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