标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
3 z/ Y- \0 Y1 w9 B
真NB..佩服ing .....
$ Y& f8 c) s# c( ^
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
0 M u9 B+ P: j/ Y( t
* y3 @! Q3 ~; P# x, M7 S# Y
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
+ s0 l( u4 K0 k& k/ n1 m' V
- ~8 }& Q+ j- c( o6 d* w9 n
一、建立文件!
8 u1 X; H: _. r. k
最简单的论坛也要有几个必要的文件,就是:
9 \: M) B) D8 o% r3 l3 E
3 H4 x: u: x+ l8 K N
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
- b" Y9 @. K- \
3 l; n( |, X% \; o
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
# r: k4 l5 _- [5 F- b- j( C+ p
* G3 F B. p) O
3、发表帖子的文件----命名为:say.asp
1 x+ f3 J4 _9 ~, g$ F5 _% M
+ `% ~3 q% _9 \+ e+ g
4、保存发表帖子内容的文件-----命名为:save.asp
- s' M9 {4 }2 c- Z
# k0 ?2 M: B: e9 y3 d: s
5、显示帖子标题的文件------命名为:index.asp
- U7 M- @: Z6 C- \4 C& J! L
. ~% f9 b( o8 k7 X7 O/ E. J
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
, j" \0 F8 y2 S. x6 `4 o* C/ Z6 T$ M
& p& @2 E) J! j& w5 I" E# P
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
H, ~/ [# r! X5 z" P4 @
/ Z6 `( w& d3 H
二、各文件的主要内容
, R% M& Y2 t0 X+ _% r( P$ o
5 ^: k+ z/ _6 R. Q3 k
1、bbs.mdb
2 F; |7 G! m3 M5 e: j$ P
5 L5 X9 A( w( f, z4 B& r
打开这个数据库,建立一个表,命名为bbs
" ~; D- u( m; t' [$ Q5 i- f
2 v0 a. [) o5 S7 m% j9 D
该表中有几个字段:
0 O* s" t( H% a. s
, O4 v& ~8 j, t+ {$ {' R! {. c* O6 M
id(自动给帖子编号),他的数据类型设为“自动编号”
: g& Q4 v% a8 r7 B
& v6 |: S' H- F* e `3 W
name(用来储存发表的作者),数据类型为“文本”
; M1 k9 J4 b7 D5 q R
: e0 v0 `. m( h1 h0 d1 O: T
title(用来储存帖子的主题),数据类型为“文本”
6 [# s5 @8 ^. ~. Y: X4 L- ]
; o; U* ^9 L7 A& N& U
body(用来储存帖子的内容),数据类型为“备注”
8 D& X" m- W' w4 m
e% M; \" I0 N: ~# B5 _
2、conn.asp
. q& [ |2 `" a# M" }. q
源代码为:
5 P8 w5 d) J) F: g8 S
<%
3 a- `% M% W8 h4 _, \# N# [
Server.scriptTimeout="10"
; d2 ~: n. o8 j+ `. J
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
, K, k% Q( F% o; S
set conn=Server.CreateObject("ADODB.connection")
, ~5 T5 M8 r+ q
conn.open connstr
& d' {' c! c' r0 F
%>
; L; m% s, ^' K" S% p+ f) p
9 z7 [( |1 }1 d6 d l' c4 W4 s Q
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
7 l# `6 e: L* c: l# E
" H4 A4 X, j: J% u, F: h* o/ w
3、say.asp
! G; r9 N+ F( k; i- K
- G( S, x% z9 }$ k- J9 z& w
源代码为:
9 K. o B. S( l5 U8 T# v3 D
<form method="POST" action="save.asp">
* s& r5 f( h! D/ k+ b U( U
<p>大名:<input type="text" name="name" size="20"></p>
! f6 a) u% C3 j$ u+ r$ C
<p>标题:<input type="text" name="title" size="91"></p>
W( j0 E& H1 U( ^- q
<p>内容:</p>
\. j# `1 P3 T8 f
<p><textarea rows="11" name="body" cols="97"></textarea></p>
- Z! s' H% p6 S- m: }8 @- [
<p> </p>
: c1 h l4 _' D$ K) [" [: K
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
5 a! |( _4 u* V% k3 _+ D1 V" c! {
</form>
. L+ D; W* i Q( \4 f, {' c
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
: x! E8 R& Q5 ^% b
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
" y5 r4 H& J1 J
; c' X) H, F7 u' {
4、save.asp
1 L% g* c( f* w4 E5 i9 l: I
: p2 N; R3 u$ z
源代码:
( u9 P* @* [* x7 l
<!--#include file="conn.asp"-->
; U( S4 |: l5 c2 r
<%name=Replace(Request.Form("name"),"'","''")
, H' m+ L# B( T+ R: P) \
title=Replace(Request.Form("title"),"'","''")
1 z& Q9 }# @ h0 z
body=Replace(Request.Form("body"),"'","''")
5 [. I( O A R. }7 p1 K
%>
1 k; p" n; c/ f
<%if name="" or title="" or body="" then%>
& y. Q# a* R% Q* x# \
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
, a% z: m; e% c1 m1 l2 Q" b
<%else%>
" `. e7 B9 n; M; Z' ]- Q. ^
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
* q1 O1 e' D: a" E, P# E
发表成功!<a href="index.asp">查看帖子</a>
5 [& I8 H H* @# S3 S* j9 v
<%end if
* ~- M) s: M7 [9 y; \
set savebbs=nothing
' E; Z9 \* Z5 b
%>
% I; V5 g: N9 x1 F: _
$ v6 ]! f/ X! o' z
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
! r Z2 V# ]: b- |% W: ?! z
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
$ s5 n& N7 l! W; J c |8 w
接下来几句:
. x" Z7 B6 t6 A7 V( T0 G" n- g
name=Replace(Request.Form("name"),"'","''")
4 O7 Y$ q5 h5 I# M& U, x) n
title=Replace(Request.Form("title"),"'","''")
* s+ h7 _: R# K, S* F
body=Replace(Request.Form("body"),"'","''")
. P) Z( r8 u, d& X
1 }4 j3 u+ ^- |( {5 r* p
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
3 Y) R: X8 _* p
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
% ?# s4 r3 D9 X1 K0 i" i! {
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
3 I( l& u) }" A% p
就是把表单中名为name的文本框发来的数据储存在abc123变量中
N. E8 {. m8 @
9 j9 r( X6 C4 M; n* r0 F
接着:if name="" or title="" or body="" then
0 s. C+ a& ~: A' t
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
- _: o$ F+ v# y8 c5 t' S
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
" U" Y$ c9 l# x6 P
该语句属于html语法,大家都看得懂的!
# t1 \# y: g$ H
. ~+ ^% S/ n' ?: y) C
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
7 M, k( @+ I! s. U& M
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
5 H- Q1 d4 B F
发表成功!<a href="index.asp">查看帖子</a>”
1 B- F; K+ G* R; r9 o
' e/ l9 ?- L0 j# B
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
, o% a1 a9 {, j* }& p+ H
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
9 F9 u9 G& q+ _! C3 a( S
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
6 V9 [2 h. N Y# y, I
values是“值”的意思
9 C) a* b) e9 m0 q5 V6 b* R
就是插入向量name,title,body,向量用格式'"&name&"'表示
5 s& k! \% t3 Q6 e. b
2 u# |" i* Q' j
最后:end if就是结束if……then
& ?$ U4 P: K9 Y! S6 x
set savebbs=nothing可以说是关闭掉:
. X* {% ], y" ^, r0 e
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
9 b4 @8 U- j, o$ T
3 [) C; }! D+ Z1 _3 G& {
7 R8 p, A+ A1 k* I z" q0 K
5、index.asp
. ~# n" B) }, p, L4 d
源代码:
~) W. c# {: W4 ~* Q- Q4 i( ^
<!--#include file="conn.asp"-->
" M) g) i" t* H- v% r5 x
<b><a href="say.asp">发表帖子</a></b><br><br>
; l( N# `/ g+ L. L1 c% u9 Z
<div align="center">
" z& ?! H! J) x8 i: V6 Y3 k4 m
<center>
' [" z2 `; a4 ?5 ^+ H' z. C4 @
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
3 l+ h3 }; a' a5 G- B
<tr>
3 S p" b0 h; b/ l5 L/ p5 |( k
<td width="17%"><b>作者</b></td>
" `( u* Q0 \+ b! M& d6 F9 X2 t
<td width="83%"><b>主题</b></td>
' c2 w+ u7 T9 l$ j. Z1 J4 W6 T
</tr>
: R; U# s' _) c2 u+ X" O
</table>
6 b& Z2 Q* i, ?6 w
</center>
: y% S+ s" N6 y
</div><hr size="1">
7 I8 f3 U1 W% p" e* e V* Q
<%i=1
+ x* y7 O: W. t7 @1 O
set showbbs=conn.execute("select*from bbs order by id desc")
8 G0 h% N0 L0 i E5 h$ a8 C& b n
do while not showbbs.eof
9 i0 O. i3 K8 m3 t9 h: B" }0 G
%>
$ ]! R0 W1 P! O6 Q; c+ \
<div align="center">
) ?5 v9 v+ G ?7 U9 \5 x
<center>
* y' T: p& ?! K" E
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
9 p* F6 P$ F K7 G# q
<tr>
% A; V5 C; a- n
<td width="17%"><%=showbbs("name")%> </td>
+ r) F1 s! v7 l, a( c( h- Z& O
<td width="83%">
# e) c/ G- m5 k! A4 D, |
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
# ~% y; K8 {5 B# G! A# k
</tr>
& m; L* L, z3 s( ^ @' W
</table>
2 h O, ?6 i# H' F9 b* k
</center>
& T& t5 `# F2 n2 g
</div><hr size="1">
# i8 a8 ~( n- m
<%i=i+1
# ?3 Q: J( ~+ L. N
if i>50 then exit do
- ]& I& d+ e, ]1 w5 \( V
showbbs.movenext
# H( N) d- \* ^6 _
Loop
$ w o# H% Q$ n1 D' Y7 e H" J
showbbs.Close
- ^) r9 [# D! f
set showbbs=nothing
9 r& f8 N* I- q- \: a/ i9 ~$ u
%>
8 B% b5 W3 H7 g! w* g* Y' q
- J% f Q( [7 T6 p& u) y
这个文件就不一句一句的讲了
5 q$ J2 L( q/ p/ @0 _$ r
主要讲精华部分:
9 }& @1 X; n& _
set showbbs=conn.execute("select*from bbs order by id desc")
; t- L3 ^& C* E# F
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
* V# `" `8 c- v m; f3 w" T
还有这么一句:<%=showbbs("name")%>
* P& W+ t* }% A& H* T2 z1 M
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
; X4 L& x7 F' `! Y6 l- K
代码中的i=1和i=i+1
9 Y( B) N& R0 p& n! K3 r
if i>50 then exit do
9 e5 P. D( \- J9 b5 A8 \
showbbs.movenext
4 m0 S" H* h* ~0 t6 @" J" c- j
Loop
( j: s! \2 h X: {
showbbs.Close
5 L3 E) u8 g* z2 R ^
set showbbs=nothing
' }/ W6 s- |8 Y* ^4 ?$ D7 a) F q
% H( }7 T1 P! x7 M, Y/ i
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
) E9 d7 ]9 U! Y
if i>50 then exit do中的50可以修改
: ?% ]1 l# E) |# d
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
5 c& i1 P* X0 O3 s7 J0 l
还有一句很有用的:
- s1 L- s- |$ A p/ ^2 z
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
. x. s& u* M+ p6 n) ^
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
6 t, h; O- e5 g5 F7 @. W
等一下在show.asp文件中就有用了
$ K8 j+ b! }% N+ C" C
/ k8 F2 J4 M: f# R! t
5、show.asp
3 U' q r+ x4 C! R
源代码:
8 z9 r" M. I& ]- h
7 M" u& _9 p5 b- w. i6 R+ O
<!--#include file="conn.asp"-->
3 `; m+ a3 f! n/ d0 K" Z
<%id=request.querystring("id")%>
$ ]0 ^8 n3 \2 p2 W
<%set show=conn.execute("select*from bbs where id="&id&"")%>
% }9 z4 A! u" W- R& k' G4 G( @
<a href="index.asp">
3 A8 z5 B |& E% x2 B3 Q
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
( x- A% Z6 s8 k' [; ~; m
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
4 ^8 K7 w7 N" O% m
<tr>
" i4 m; v1 S, O2 I' |
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
% ]0 M% d5 V+ u; a* J9 }
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
( `% y% A' }9 @8 ^ S
</tr>
7 c# @! K+ D3 U- y
<tr>
7 |8 d* \4 s: B
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
4 u4 s) C# i( L4 g" p X1 E
</tr>
- j7 E. b' I5 I2 b2 M' C8 h8 R
</table><%set show=nothing%>
5 V9 l' k2 B( C" _! r' k
7 k4 R9 n/ T( g. n
劲语句---精华语句:
$ ]6 `9 q! Z9 r5 D0 d
id=request.querystring("id")
4 V4 H v5 s1 F$ i9 N& n" T
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
& K4 k1 c; X ~# h, M* j0 |' x% B$ y
id=request.querystring("id")就是把地址栏中的id的值读取下来,
6 R7 {' i2 L( s6 H5 W0 G
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
' z, ?- S$ {9 Q" e$ K
所以show.asp使用id=request.querystring("id")语句把数字读取下来
2 x# N- x9 W8 \- C6 S/ w2 z
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
1 I6 m/ h: e9 s, ]1 ~' g4 r0 `; p* p
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
5 o! K# j: F$ K0 X
最后<%set show=nothing%>
: ~3 r/ M, z- Z {0 h! B
7 _& A& P& Q5 [5 Y
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://89w.org/)
Powered by Discuz! 7.2