标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
, z7 j1 r) T9 C9 b
真NB..佩服ing .....
" l* [3 D/ T( ~8 T
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
7 _$ p2 K* k$ N! T1 v+ w# g
: a; L: u2 o! T" j' `2 L5 ^, q
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
6 i: ` L) Y" Y! m; c' S3 M2 F
5 M- l8 _/ r4 l" C# f: Z* M* g, |
一、建立文件!
& @( K6 u# x9 R& _2 P3 c9 C
最简单的论坛也要有几个必要的文件,就是:
/ T; b# b5 ?+ E6 e3 ~
! B+ f p) z) n( Y9 U
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
6 l7 H: A$ r1 O+ i1 q) i
: g; V& J2 i* @
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
$ w7 c' i" A8 [9 |8 x
# e6 i! p4 a# g' v
3、发表帖子的文件----命名为:say.asp
- J% M! k B- g5 F6 W* X9 a% F
$ W0 M' L0 `& d! Q5 p
4、保存发表帖子内容的文件-----命名为:save.asp
* Z) ?; \8 S+ A' C9 L3 ?
6 u6 `# m8 C( G0 P# a- J8 X
5、显示帖子标题的文件------命名为:index.asp
; ^ {; `+ u$ j6 ~; b( _
; i. u- Y1 b+ Y, w
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
3 ?* Y" C% @: R. {9 l
% {7 m& b& Z- Z; B: C
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
- H- S1 Z9 s0 W/ @, q+ N3 M
4 R5 I t; j) I; z0 h
二、各文件的主要内容
1 g" e7 I: w6 Q8 g I" e
- r4 w$ e, M9 N# y. ?3 L
1、bbs.mdb
/ H. f- C- W" c) \6 z, h. Y
; `% s) O* F, ]) B' b
打开这个数据库,建立一个表,命名为bbs
" v2 w- j j) i4 K
! U& s- _ V, T, U9 U
该表中有几个字段:
! ^5 k$ p% o8 H
1 _) J8 R4 E9 U% `. T& T) O
id(自动给帖子编号),他的数据类型设为“自动编号”
7 g) Q9 I: x9 \! {% C
# X" G: D8 L- X: M
name(用来储存发表的作者),数据类型为“文本”
7 ]% [2 Y( ^9 w8 |# `! ]
+ J# p* c* M- v" S+ M4 y
title(用来储存帖子的主题),数据类型为“文本”
& Y; e& B9 r" R
- l+ W* q, y3 l7 D. d' t& }
body(用来储存帖子的内容),数据类型为“备注”
$ l4 @! q% W% H4 O2 \
3 ?( d, B+ o ?* S) D# [
2、conn.asp
& _/ h: l- j A# H# `, a) P
源代码为:
7 ~6 W* v- ^% h" H# A4 }0 w
<%
/ Y c$ m3 x2 { q# e) {* ~5 g
Server.scriptTimeout="10"
1 \" W# L* p5 i- {( c
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
6 u3 I" |2 A* e( P+ a- r W
set conn=Server.CreateObject("ADODB.connection")
. e. x0 G3 s% N# Z' M
conn.open connstr
7 [ m% I6 n" x' m$ g7 x
%>
* V( b0 X' d- K
L2 B; o C. f: N, R) @
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
& o1 {/ `/ G0 p* N
* s/ o' x4 v2 W/ C) Q! x
3、say.asp
. P; O0 z) Y$ {
: a+ k( `, Z, z# d& ]8 ]
源代码为:
: Z7 m1 I1 L; Q) Z6 y p
<form method="POST" action="save.asp">
4 {3 f$ j8 K |: m% }9 k# B
<p>大名:<input type="text" name="name" size="20"></p>
6 Q* N. h, R! p/ Y' Z, _
<p>标题:<input type="text" name="title" size="91"></p>
, D3 L) L" \/ i* D2 ]& r
<p>内容:</p>
/ E% d% e7 t. V& Z! @6 |; Y* x
<p><textarea rows="11" name="body" cols="97"></textarea></p>
/ {4 x F* A! o) S8 i
<p> </p>
: Y3 r/ b) e( y
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
3 Z# m+ Y" a) I+ _ F
</form>
; \2 _, F! [! D# G/ @
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
3 y! T" f$ P! P
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
' W4 O w2 g! c1 e
2 T; A, {6 O+ i5 F1 u
4、save.asp
: @8 l' _% V% y
% e, `$ K7 d, {. X) F
源代码:
! }8 r, Z% o$ g ?
<!--#include file="conn.asp"-->
0 V1 Z: w) Y U+ D* X' c
<%name=Replace(Request.Form("name"),"'","''")
+ @# @: O! W7 ~6 p4 D) s
title=Replace(Request.Form("title"),"'","''")
" q0 T$ l/ ?* l8 P' b( K
body=Replace(Request.Form("body"),"'","''")
6 V) k- ~0 |" n. T: {4 p$ S
%>
" J1 T9 Z! q6 k7 l
<%if name="" or title="" or body="" then%>
; s. I0 G" ~1 |- Y7 |; i
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
* q4 ^2 Z& Y4 [) K
<%else%>
" ~5 |' y l" W8 ~+ l ]+ z( t" t9 a
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
, J0 B' h6 ~; t' D: Z: b- s* q
发表成功!<a href="index.asp">查看帖子</a>
1 X3 v( g( }( r' a+ w% r/ S
<%end if
/ h2 K7 k# L4 g6 {4 x& U
set savebbs=nothing
0 j2 H: ]9 u& Q
%>
$ g( e* T3 v9 J/ p
* f% O% K3 `( S% _+ d* ]# T c
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
* }1 u& \& h4 s, D
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
; z7 F7 F6 x+ v- } C4 F7 C9 Q: K- ~
接下来几句:
# |$ M! [- U# s" C+ ~5 v* B' A
name=Replace(Request.Form("name"),"'","''")
3 E. P: u1 l8 F! X
title=Replace(Request.Form("title"),"'","''")
3 j8 D0 R. |! U0 J$ c" h
body=Replace(Request.Form("body"),"'","''")
. ?3 l; `) ] U5 ~0 y, w5 ]
! S. `8 p( Z+ I/ r o: f
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
* T$ F: x1 T" u2 j9 k. ^
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
) N, { U$ E) x9 O/ y9 A
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
) g6 W; P% A4 F' Z
就是把表单中名为name的文本框发来的数据储存在abc123变量中
: d3 t! V' k- }2 B" D
M' c* \6 ?! A. f$ y* V! F
接着:if name="" or title="" or body="" then
' u+ n/ [% x4 S7 I1 }8 k
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
5 A& @, q1 D6 J6 M% f* u) L
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
1 A( d% _9 |! }6 P4 ~- g
该语句属于html语法,大家都看得懂的!
4 _1 s; ?& x6 `- C# }' P; L
! \+ P. u* O9 Q& s
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
9 K! |/ ? O) J
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
' S! R* Y3 s; t
发表成功!<a href="index.asp">查看帖子</a>”
) f5 Q: ~) n* Y* O# f2 L
3 K) M" ]: E O' t
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
1 K9 A0 e8 e5 O N# W% R
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
& W: l1 i: o' T5 J3 }
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
0 b4 J1 K3 g$ O. s8 ^" h
values是“值”的意思
, L8 b; K2 H5 W! y
就是插入向量name,title,body,向量用格式'"&name&"'表示
g& a7 c8 n& K4 S- G, F
2 o8 v. t# X; [2 B% O6 Y1 ?
最后:end if就是结束if……then
/ Z, y& t, F9 d3 U: f
set savebbs=nothing可以说是关闭掉:
1 P x7 p" v9 `/ b. ~ y) S, B
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
% v. P6 x# e& m! ?+ H0 v- D
8 Y4 _. {5 P3 \$ A
" d, s7 v0 @2 U
5、index.asp
( e2 ]8 ]$ F# J. T9 f4 h$ ^
源代码:
/ ~- a8 O o r: f% g0 {
<!--#include file="conn.asp"-->
# J& m& p% k3 R! z
<b><a href="say.asp">发表帖子</a></b><br><br>
% [5 |4 M- K: i. Y
<div align="center">
z. B3 A8 w6 ^& Q2 y9 V3 t; e
<center>
3 V+ ], m2 Z. d8 d% g
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
; i: O4 }: J0 k) X
<tr>
+ g6 D# Y) {" {0 J) P
<td width="17%"><b>作者</b></td>
, k5 C+ D# o$ A1 ?2 x- ~3 H
<td width="83%"><b>主题</b></td>
8 |2 H1 L3 F% C
</tr>
% R5 o" g. x( H u
</table>
& l6 i9 r6 m/ F3 H; @/ h6 b. F1 b
</center>
) X2 h" T" I& G) L
</div><hr size="1">
- A' X+ x9 X+ ~
<%i=1
% G3 k3 Y' y7 b }- K7 z9 ^
set showbbs=conn.execute("select*from bbs order by id desc")
C. s7 l7 [. N; [7 C. q ^
do while not showbbs.eof
( x# [/ h( C& W- o
%>
3 W; V3 S5 \$ q# L1 T8 z
<div align="center">
* E4 b: H- b3 f- O1 d
<center>
; G% o$ j: k( l0 @
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
' D7 {2 V5 E7 X0 n. Z1 H( j# l
<tr>
! C9 f A* d4 R* k7 N7 c+ o& p
<td width="17%"><%=showbbs("name")%> </td>
, d5 V3 ]6 C) L$ A1 |# V
<td width="83%">
( u; i. |% `- j# C
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
( c3 N( i( r+ y$ m
</tr>
2 ^4 N2 f c" {+ M+ o
</table>
% ~/ K: I6 Z4 h; Z3 P, X
</center>
/ W1 ^7 q- a5 w$ R7 L
</div><hr size="1">
5 K, m6 p- L8 f5 V/ _2 f7 Y
<%i=i+1
& B8 N/ l' \1 a
if i>50 then exit do
/ R; B* Q7 Z$ Z! g/ O7 u4 }
showbbs.movenext
, s" S6 _+ @" r
Loop
& F$ B, x- W5 t
showbbs.Close
3 b2 `9 c% n% |4 O8 O- }7 n
set showbbs=nothing
+ t7 o9 _, b! B+ g
%>
, F0 d4 c- _' y) ]9 a$ ?- A3 ~
# D* E% U- Y0 w6 Y3 H% m
这个文件就不一句一句的讲了
" U# o- {# n( J' [+ n# B7 `; J( J
主要讲精华部分:
. P% ]4 N k: r+ a; t
set showbbs=conn.execute("select*from bbs order by id desc")
4 t% ^% T( a. S: f/ S( s' A, t+ R
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
w. K2 t- g, _) l, |- j; R/ ?1 J
还有这么一句:<%=showbbs("name")%>
5 T$ M8 y% N$ I1 m* e: ?
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
9 [1 m$ L' d& |9 c" T
代码中的i=1和i=i+1
. [% t0 }* B# ?3 G8 [1 W# M
if i>50 then exit do
0 [( V& @2 ^ q; V
showbbs.movenext
* i6 Q5 T% T, r1 t8 H8 i+ G: S
Loop
) n6 c9 t6 N2 a8 b1 y
showbbs.Close
1 Y& h* i1 z. p7 a# M
set showbbs=nothing
$ I# x' Y0 x+ l8 A8 F8 {
' c% u/ ^ p+ Z' Z: ?
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
9 W$ A! H+ ]/ g
if i>50 then exit do中的50可以修改
1 \" j+ Y; U6 Q
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
+ d0 A9 w: A, d% h6 r* M
还有一句很有用的:
4 P, p5 h, W+ g" I. @: X+ G
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
( ]6 a7 A3 m# o
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
3 h T3 ^4 C) E! q
等一下在show.asp文件中就有用了
) B2 s+ V1 @& F
) j) J$ Q2 ^) A4 W
5、show.asp
6 s7 ? R$ [7 T1 M4 ]: `
源代码:
6 ~ R( T- N0 [, v8 o
( L7 ~6 S3 `7 f$ T* L, m$ P
<!--#include file="conn.asp"-->
. D2 F5 s: T% f
<%id=request.querystring("id")%>
r3 P3 R$ T. v+ Q! r b8 V
<%set show=conn.execute("select*from bbs where id="&id&"")%>
" k& A, W4 R$ S
<a href="index.asp">
+ f3 k J/ }0 R) J3 H
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 N! a8 O. o! @" K$ l8 G& T( Z) s R
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
. y8 R; u( t. |
<tr>
/ ^ B2 B6 c% ^ f# }7 w) p3 r
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
. N9 J% w- p, a* o& \, Q" x# n4 N; ]
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
" W' q9 A. o& d( N/ e- r- s
</tr>
( [4 z2 m. a1 f' o' y, ^% T8 l
<tr>
9 w5 r" B L7 F! `
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
; o% A1 @! |5 h
</tr>
6 @# [# w' Y5 b
</table><%set show=nothing%>
. y" V+ {: i! l' O4 c+ h
3 u7 ^& g3 O/ i v G; ]0 B
劲语句---精华语句:
' \" ]$ m1 I! g8 s
id=request.querystring("id")
2 q% `/ R5 \. A% i. W# N4 F" g
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
0 E! N! W$ d/ M5 U4 K
id=request.querystring("id")就是把地址栏中的id的值读取下来,
6 M+ _9 j, O z4 v+ Z" H' s$ B8 T5 p
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
6 O6 [) A! `' }; Q! f# _2 M' v+ c; T
所以show.asp使用id=request.querystring("id")语句把数字读取下来
: N( l. V/ H9 f4 \* ?6 I) q
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
: l- S8 _% P' j" \1 |) m& U. S5 h
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
6 D; D: x; Q( z" ?6 N! x6 p% \
最后<%set show=nothing%>
' \! G) P c. u% R+ b' ~: I
R5 K% c: Q$ o; w7 s _1 s/ z, U
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://89w.org/)
Powered by Discuz! 7.2