标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
0 M4 m# N3 p o6 j
真NB..佩服ing .....
3 t" S7 h0 k$ T, D9 z5 M
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
* a! K$ E1 {1 B' F1 M
% B+ R9 F) ^9 [5 N/ {
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
. c/ ^! e* w* |- C! N) j6 |: p1 U* K
2 |; m( y% E' B$ ?- r! f
一、建立文件!
3 z: |( M% D4 o: `: H! w: D. ?) d
最简单的论坛也要有几个必要的文件,就是:
3 G, _- }* g' C+ \
; \5 S; A* t( \/ ^ V
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
0 f9 U- ^. W( z! M: K
2 p- y1 ^3 p4 H6 M3 h
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
% n! M7 d1 ] y' }% L# Q5 ^+ N
) I4 k! M" w9 ?) u: `0 G6 S& c" _0 b
3、发表帖子的文件----命名为:say.asp
, G. z* c5 ?9 Q$ h2 M4 n# g
/ w8 K9 `2 g. f8 q5 Q
4、保存发表帖子内容的文件-----命名为:save.asp
/ ], b4 A6 ]( A( w; ~5 D
5 b* f7 t6 r3 `
5、显示帖子标题的文件------命名为:index.asp
+ A+ y) x" i4 o/ Z1 D# q
5 E: m; E( A2 y* A
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
5 E. k9 f+ K. A/ U' Y. z' H$ y* k
. \3 Q( v' e3 |8 h2 y: B
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
' H* r8 I# Z+ ^" o; j; B$ r. r
( @0 S% L7 }. T& h! L, ~' ~2 ?- s7 U
二、各文件的主要内容
) ?. M3 Y, C1 H& r) F& V2 ?6 V; d, m
- L/ v1 G/ n5 K6 f
1、bbs.mdb
- O) l2 e$ W; E, j8 W( U9 x
; k' I' I8 H; D/ j% y, R/ Z) @7 }$ B
打开这个数据库,建立一个表,命名为bbs
! ]; H. U/ L; z+ m& B5 n5 ]
5 [. E+ w( r* e* C
该表中有几个字段:
9 h' s+ {6 t( p( F o# Z4 L
+ a! E5 c2 h* i9 C8 }4 l( p$ K
id(自动给帖子编号),他的数据类型设为“自动编号”
" N# _1 G7 o2 X- F( Q5 v% b
/ I# C! I& |. r% U( H
name(用来储存发表的作者),数据类型为“文本”
* Q9 @# {3 e' C# w. a
t, t N+ L/ @8 U
title(用来储存帖子的主题),数据类型为“文本”
2 W; R, h1 K5 }
0 S( t; L& H% r! n% k+ \& K
body(用来储存帖子的内容),数据类型为“备注”
E' F& D0 J' o% K4 _! w4 ]
6 a: L5 k" f% }8 i& `! k- }6 v
2、conn.asp
6 ^9 E# m+ {! B# [5 t
源代码为:
$ C% B4 e& U% q: p$ a% ^0 M; k
<%
$ g$ S9 @' C" j% P v' ]. _
Server.scriptTimeout="10"
3 |4 Q- X) A' D, ?' Q
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
6 F0 @8 k: X/ u- p
set conn=Server.CreateObject("ADODB.connection")
: @, ^1 ]+ l {+ D: S( ]3 N
conn.open connstr
! D: P6 {# g* L
%>
; X2 L9 a. o. v' C( N' x+ x$ w+ C
: [- e, v' ?* c; m9 r
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
/ u) [( S+ k c& m, p
4 G6 t1 d4 \1 S( w
3、say.asp
9 m. ?' ~# q. M n2 l
5 I0 l( r0 V8 b, D2 B
源代码为:
+ V- L! |# p* }
<form method="POST" action="save.asp">
" o3 c8 f* u* C- H, v5 f
<p>大名:<input type="text" name="name" size="20"></p>
+ ~% O. Y* E" W* O& z- T
<p>标题:<input type="text" name="title" size="91"></p>
/ j+ N9 `$ P; v# {# Q9 z
<p>内容:</p>
- R. f+ V$ U7 ^8 S/ Y) U# {# x+ k' P
<p><textarea rows="11" name="body" cols="97"></textarea></p>
, z2 k! {7 ?6 b1 I
<p> </p>
# N/ Q2 H# }; F( D; h+ Y) C
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
5 Y# r$ u! F* z" L. \, {
</form>
! W; A9 `/ u) z5 @
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
6 E0 x5 u7 O2 M8 D7 y$ f5 b: z' b
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
K" ?9 `) g f W$ z. p% ?
" |; B2 P! ~/ T/ q
4、save.asp
. | n" Y) j& |
/ z. y* y/ |$ g; W
源代码:
) q! L2 I7 o; H0 z, r5 J
<!--#include file="conn.asp"-->
4 E1 v2 t3 O0 ?2 S8 ^
<%name=Replace(Request.Form("name"),"'","''")
1 H7 ?6 x; U7 T
title=Replace(Request.Form("title"),"'","''")
% z1 c, Q# m5 ]
body=Replace(Request.Form("body"),"'","''")
$ h! {! U( E. l5 _# P, v0 A9 f, }
%>
2 E& [+ z# G3 {3 C' R4 A. q& X' o% ?
<%if name="" or title="" or body="" then%>
; C- B1 G- [2 p' f
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
( u3 t# i5 K7 D% T8 W
<%else%>
. N0 O: d6 H+ g2 m! S
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
( {' r0 F9 |3 Y9 U0 E
发表成功!<a href="index.asp">查看帖子</a>
! P" Z: j5 M: Q/ @( S, a& Y
<%end if
4 Y4 _+ s9 n8 m) ?: n& Q
set savebbs=nothing
7 `( E4 p* J& X
%>
/ w9 ?5 @- f2 t* \ z/ @7 Z, u
/ L6 `- \) Q9 R( G n4 \
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
' j- B- A# r4 q6 X/ B! ], E. C. {
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
5 j4 b; x! T. Z" ~; O/ L5 ?
接下来几句:
1 R$ k6 m, { }+ w8 q3 r" ^
name=Replace(Request.Form("name"),"'","''")
* H: F+ B* ^7 `
title=Replace(Request.Form("title"),"'","''")
# g5 c3 u. X# ^8 f
body=Replace(Request.Form("body"),"'","''")
. S ^0 A" a% Z9 |; m* B9 |
6 G. C6 y q6 E: O% ?( F
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
$ B1 c2 ~% Z/ W8 [: N" x
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
$ u: g9 Y- t& K$ Y
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
* {% R# v. J2 A {3 D' x9 \6 C
就是把表单中名为name的文本框发来的数据储存在abc123变量中
8 n/ `' z; B& c
- }& f1 W, ]( G9 u: a
接着:if name="" or title="" or body="" then
6 R1 ^3 m% _* K8 }3 D& g
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
( w# _& x7 D9 W
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
: ~/ f. S* R+ k+ V% s2 W& Q
该语句属于html语法,大家都看得懂的!
! t2 Y# n- L5 E0 t3 J5 ^
; z( ?4 d8 G% e A e
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
: L. V( k3 `, }7 ]+ K; r
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
% n8 A# w7 V( j/ y
发表成功!<a href="index.asp">查看帖子</a>”
8 i/ E* E+ x$ N' k* n: m: n
' e$ U2 Z& C6 X: L
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
( z$ D& g3 m V; Z( `
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
, N* a% C5 }( ~% w0 c9 }
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
4 M1 v: Y+ c9 b4 j# @- F: Y
values是“值”的意思
: F4 y1 N# A0 E& M+ c" ]
就是插入向量name,title,body,向量用格式'"&name&"'表示
* E( @4 R3 E: t1 K' d8 q* U# A8 b
% c& }' D" f# z5 O: z4 L
最后:end if就是结束if……then
) u( _6 a9 N) M \1 w3 T1 Z
set savebbs=nothing可以说是关闭掉:
1 z& S$ G) v( `# Y0 v3 ^5 n5 w( v
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
! ?7 P4 Q# i s/ [+ I2 l" w
5 x; c% t. ]4 f: o* V
0 f) Y* o* u. D- V- S( b2 Q1 i
5、index.asp
0 L2 t3 V$ n3 J9 B
源代码:
! z' z q' D. e% T/ ^ u$ Y% J
<!--#include file="conn.asp"-->
1 z( P! F3 x' X. N7 Y
<b><a href="say.asp">发表帖子</a></b><br><br>
; q- l/ j; D% m8 d, s1 m
<div align="center">
# H& |0 a: F3 ]; n! H* l
<center>
5 ]: N+ M3 u. `# r. p0 y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
) |- ~4 R5 v2 c' T/ e' o5 {, N
<tr>
: @3 k8 n- A/ o6 ~" d) ]0 Q
<td width="17%"><b>作者</b></td>
: m. ^5 @+ U: F% M$ Z4 P
<td width="83%"><b>主题</b></td>
2 [- r) n( q- f/ f
</tr>
) V, Q8 o; ~1 S" M; ~/ ^: a* Y
</table>
a" q$ K. ~. v" l/ F/ r# y# X
</center>
7 x6 G' D3 w' e6 M6 @( P
</div><hr size="1">
/ E% L) C% @ r; ~ D" E5 _
<%i=1
7 X; M) @+ Y* l! }, t1 n
set showbbs=conn.execute("select*from bbs order by id desc")
* L. h* V+ i2 y6 ]- g! L
do while not showbbs.eof
' m+ X7 c$ \/ D# m& x6 F
%>
* o: c5 l' I0 K9 T. i, X
<div align="center">
! m+ Q2 x5 Z; }7 ?! G3 M
<center>
6 _' }. H9 g2 U6 \- L
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
8 o0 K' ~9 ~9 A* Q3 F
<tr>
/ t& f8 ~! q$ _
<td width="17%"><%=showbbs("name")%> </td>
! L& I% ]7 K. K
<td width="83%">
8 {7 B" ]0 M2 C: Z
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
8 f0 h d+ L6 |5 U6 A- f0 |4 ?9 B
</tr>
6 Z0 L, Q+ b8 l; H5 N
</table>
0 k' O7 _, v, d* o, B" q# W
</center>
+ ^. D! x& Y4 m% V) X
</div><hr size="1">
5 d% a/ ?8 T$ }" ^5 V9 P7 S
<%i=i+1
4 s: {; L k a/ _
if i>50 then exit do
0 m4 E1 m; t ]' V1 V4 B
showbbs.movenext
+ v; t0 w2 `' w& a# R; ]1 P' ~2 v
Loop
/ r$ g7 u6 f/ s3 K l3 \# E
showbbs.Close
+ N% c* Y& J2 _! A$ U8 g: Y
set showbbs=nothing
6 `8 h% A! o0 S. Z* @
%>
1 N" R ~& p2 n+ G% N+ Q
( G0 v) m4 g% i& k9 E4 [4 n2 h$ a' q
这个文件就不一句一句的讲了
0 U4 F: J" R, T8 M% W% W0 y
主要讲精华部分:
. F) P+ H( H) u0 g
set showbbs=conn.execute("select*from bbs order by id desc")
: z) j& [& r' }4 ~$ D6 l; a+ L
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
! I: J& ^* b8 p B1 [. o' q
还有这么一句:<%=showbbs("name")%>
( N/ {: u# A# Z2 M! z4 N' h2 _ I' Q
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
1 v; h# K0 S& b. o$ n& N
代码中的i=1和i=i+1
! c; @1 p8 u" d
if i>50 then exit do
; L8 _8 R9 b) p: {
showbbs.movenext
* X4 X7 c3 n! }
Loop
q, Q9 [* r0 M
showbbs.Close
/ {3 a* z: {3 g$ B0 F; j! d
set showbbs=nothing
6 ]# F. n7 c5 [5 N8 [& f
0 u$ v/ P! k! F, Q8 u/ [7 c
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
7 j9 B/ x8 _) b R
if i>50 then exit do中的50可以修改
Y' T, t: t( W5 L4 k! W* ~. ]
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
& h9 ?" B- T5 V
还有一句很有用的:
* `# ^9 ~' ]1 y8 \0 O
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
$ T( E6 W$ e+ v
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
' J" A$ z2 P9 t7 A1 A
等一下在show.asp文件中就有用了
; I. R- n. R" e* H1 Q+ S1 r' {' c
. b" C- y. F' g. [* ^3 G
5、show.asp
0 R' M) u5 ]7 @; E" _
源代码:
) l5 F/ z) s. b) `3 _: s
8 @8 K9 _7 c, D3 y
<!--#include file="conn.asp"-->
+ P1 M- h% B F; C' x% ~7 P1 U
<%id=request.querystring("id")%>
+ p1 N _" \% q6 L [, |' D
<%set show=conn.execute("select*from bbs where id="&id&"")%>
- O: t8 U8 @4 I8 x* Z
<a href="index.asp">
! P% }0 v i( ~% {% n
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
6 E3 H+ |' c7 q1 Y1 W
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
$ w% p: ]! {4 M$ m7 R& q$ @
<tr>
7 M& j/ ]0 B4 ?1 p" L
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
- E% U N3 @' O% P
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
9 H7 C' Z+ |4 B1 {" |/ @# G9 _
</tr>
1 w- C M. ?' Q
<tr>
3 @/ E) ~7 N1 a E. h
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
# J" k/ j% S: v+ f3 f4 s
</tr>
1 P+ {, z/ o! K' H
</table><%set show=nothing%>
: U+ _# Q9 f% _1 V
1 O8 G0 }$ [2 S" h' E/ l
劲语句---精华语句:
; W0 S8 C* T9 v0 M
id=request.querystring("id")
) [2 m; H% g( `+ u u- _" v6 {1 G. y
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
1 E4 [; \: S" R7 }
id=request.querystring("id")就是把地址栏中的id的值读取下来,
$ I. x9 T: {7 L. p8 p# p
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
9 E& P9 d4 h3 J& V" j% J
所以show.asp使用id=request.querystring("id")语句把数字读取下来
2 C: k' b" b6 w% V! \' ]- Y3 j
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
* e# r$ D5 D. ?( V. }
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
, s2 i9 \7 k% `2 ]
最后<%set show=nothing%>
! x& {- M, K2 I5 M3 Y9 t& r
$ Z& }" P# L4 k1 {: y, R) Y
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://89w.org/)
Powered by Discuz! 7.2