标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
3 z5 N4 n! Q0 g- M8 t* t
真NB..佩服ing .....
2 i- V/ j/ M: | s. D
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
* n: X+ C A' g! @
7 {( {0 j3 a, E l
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
6 S+ c$ V9 p6 Q1 v7 y; O
' ^8 [7 }9 E+ s& e
一、建立文件!
6 h: u6 `, @9 n4 z
最简单的论坛也要有几个必要的文件,就是:
: a/ _1 u$ p! @4 t+ {" o. R( L
5 w, ?5 Z* A) x4 O+ k
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
: W0 X: V' P; |! _( E/ w( h( k
; h d- a- ?1 q5 X
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
; ?( h8 O. H# D* ~1 ^7 i% T
& s+ S r8 [. ^7 R/ Z$ c9 P" l
3、发表帖子的文件----命名为:say.asp
# b/ `5 `6 N6 s4 [
7 U7 i( i2 S2 |6 {! {
4、保存发表帖子内容的文件-----命名为:save.asp
* U/ }" Z+ q0 E5 m4 v' b/ e
- u% M: [+ n2 N! `
5、显示帖子标题的文件------命名为:index.asp
- b$ ?! f% \! A( x0 z/ k/ I0 G
: B2 V+ s8 O8 X
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
8 W+ E) a U3 a6 v
2 R. c/ d0 Z- m7 M/ T" q; ~. E
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
x* b) h2 c, D$ n
) W0 f+ T' }" [! \. J5 I8 e8 Y, p
二、各文件的主要内容
4 J0 M1 ~: r7 T; O/ L) V0 ~2 \
( N- i$ c% c5 e; ^0 f
1、bbs.mdb
' j) C2 K: N9 P7 \
/ ^, O0 S O: \( J* ~' g" M: s
打开这个数据库,建立一个表,命名为bbs
; |1 l# ^- ?! ]3 z5 K( i- u8 V
( K4 [$ Y! l) v& r- c' y( l
该表中有几个字段:
* ?$ c" X/ a: s3 z7 A9 F r# G! e
# S0 p4 j8 M5 K
id(自动给帖子编号),他的数据类型设为“自动编号”
* `) B& M# n* E
4 ]5 o7 e3 \2 Z% H+ s# B% C O
name(用来储存发表的作者),数据类型为“文本”
6 f; ^$ T# n0 o; P' S
6 k% F1 @. A- `; B% ?' b4 f
title(用来储存帖子的主题),数据类型为“文本”
% ~' @1 X0 |* ~
% ?4 Y, q- d/ N5 s8 P: g2 S
body(用来储存帖子的内容),数据类型为“备注”
) K$ h" V/ h4 g7 E8 \
" b- @, \7 |1 a! Q6 r: \; G
2、conn.asp
; @: `' q9 _) y7 k4 ?0 K. q3 q
源代码为:
9 _' ]2 D$ M5 s3 Q8 g
<%
* e9 A9 Q' G- m7 d- D0 i6 c
Server.scriptTimeout="10"
! f/ F+ G1 y; h/ a
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
: H" I1 K% l2 O. T6 U" n. f
set conn=Server.CreateObject("ADODB.connection")
7 B$ P/ Y* [) D* E' N- j4 _, t
conn.open connstr
$ C& }5 u# {* Q Y
%>
N- W$ d8 R5 ]) J; g" D
8 ^* z5 D0 ?6 L
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
& _9 A7 R# W( d/ ^
6 W3 j) Z, o2 P( t% |& T+ a
3、say.asp
, K0 s: o$ n1 I5 K: N
3 C: r) v& E5 z7 o
源代码为:
. V6 a- H3 |' L9 \: }3 ]" P
<form method="POST" action="save.asp">
! m$ a1 ]5 T* o% C
<p>大名:<input type="text" name="name" size="20"></p>
0 P- Z6 k4 I2 w! }2 f, f' ^
<p>标题:<input type="text" name="title" size="91"></p>
( O. b9 G3 r+ g( k$ \4 }
<p>内容:</p>
7 M0 J+ u" l: A9 f! e9 L K+ m
<p><textarea rows="11" name="body" cols="97"></textarea></p>
* ?' ^, C" U4 n, ~
<p> </p>
4 K9 ]7 `) F* {! R8 f: o
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
) ` r6 H7 B/ \' D& r) w
</form>
4 A0 s9 T3 m- ?
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
1 F: w9 Y* A# G: J
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
( @4 [0 M) |: @
5 u" |5 z3 D2 ~% _7 [( B2 R- z
4、save.asp
?9 _+ J8 b8 K" L" G! a
' _4 n2 X! E6 A+ P
源代码:
" _# C {& `. r% b* T; M
<!--#include file="conn.asp"-->
) ?3 g* e7 B" ?
<%name=Replace(Request.Form("name"),"'","''")
: O+ l+ t# S8 g/ M3 K( m5 Q
title=Replace(Request.Form("title"),"'","''")
1 \6 r# g7 ?6 i5 h5 d* [
body=Replace(Request.Form("body"),"'","''")
' B0 o( E4 P+ a" [- j# [+ L& E- k
%>
; N9 o6 [% w$ @- M8 s6 B9 Y
<%if name="" or title="" or body="" then%>
1 O: e \# v% X% D# F: N- E T! J
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
- g' p; H# A% T: y6 U) ?3 Y
<%else%>
* k+ [: c$ x6 O3 u+ \
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
s/ Q r. i- A# {( {) D
发表成功!<a href="index.asp">查看帖子</a>
" M% { d H1 R' Q8 f9 H6 A# Y
<%end if
! a. I2 L- `( x# i5 S; \$ Q" h
set savebbs=nothing
' E* [4 I6 Y9 N9 K; G# A& P
%>
0 p3 D3 y/ I/ S0 P
: S2 D4 S) [5 X( p& k* b
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
" i6 E8 j, b4 j4 i. h5 e
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
/ p* d- _+ p1 | @' Y7 M6 z
接下来几句:
" O3 g1 _- ]3 X# C$ w8 b
name=Replace(Request.Form("name"),"'","''")
# g- h' z i2 ~" v# C
title=Replace(Request.Form("title"),"'","''")
- x; g! h, y: g. n7 Q5 ^ X3 ~
body=Replace(Request.Form("body"),"'","''")
7 ~- s0 p5 v; e9 C
, S/ x5 B* L0 H) I
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
6 B. c) b( T9 {# S
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
3 s9 r6 u3 G: b) g# N! E
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
# U3 {, V% \$ o1 j+ p7 r
就是把表单中名为name的文本框发来的数据储存在abc123变量中
0 D- e3 C4 G$ V* N
7 k: c% e5 u3 O% c
接着:if name="" or title="" or body="" then
% i& E4 y2 u: n. j
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
- l V1 V! ] |; `/ C% \
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
# [% _; ]( f# F/ l
该语句属于html语法,大家都看得懂的!
* r* q6 Z! A. j* n* r ~5 e
+ _5 @" Q8 h5 H8 V( ]9 w& M4 M/ y
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
7 }; N$ d J) V& ]2 L }
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
9 O# @5 p9 i) Z# u$ u* w2 Q
发表成功!<a href="index.asp">查看帖子</a>”
" k3 U3 E% S2 P7 S8 J
" W/ M# N+ w2 J9 l6 V! \
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
7 l3 e( O# T: J a" U# k! @7 y, Y* O4 n
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
9 |$ {' U* w; _' p/ e' R& o, y4 e
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
' J3 w$ s% N& q2 v3 y" T6 p9 ~
values是“值”的意思
2 ^) W+ \. ~( c
就是插入向量name,title,body,向量用格式'"&name&"'表示
& H8 |, w- j& r( B
8 w w5 E& Q% J" U8 ~2 k8 f1 e
最后:end if就是结束if……then
/ H- R9 o3 S7 V# w+ R3 X
set savebbs=nothing可以说是关闭掉:
/ n8 N* T9 L7 j0 Z' r
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
S: {0 @& A6 r$ I
8 v( y: k5 a4 ?" y3 Y6 V' Z
2 X+ u6 B4 }$ m, w2 a( a
5、index.asp
7 ^' ~! e' n( |/ S' @ G0 i4 F- r
源代码:
9 y2 a1 X" E' m( G, M
<!--#include file="conn.asp"-->
! J: e* a; E2 x$ G+ \* ~
<b><a href="say.asp">发表帖子</a></b><br><br>
3 V& ^6 b$ _; f% u5 _; \# A
<div align="center">
) k6 z7 S1 V8 I9 v
<center>
! E1 n; B6 r+ d" K a
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
4 K: w( l. F1 ^& ?
<tr>
1 K3 M/ s4 F) X2 j, t8 q6 Q
<td width="17%"><b>作者</b></td>
' d$ ^" a- T& H" D7 ~1 W2 H% b
<td width="83%"><b>主题</b></td>
! y0 D8 \/ L! P- J, [+ ~! R/ ~
</tr>
( w2 A6 P# O7 ]
</table>
' h' M2 F. e7 n: ?/ O2 A' V, X& q! O
</center>
4 U: l$ n T7 ]& R `
</div><hr size="1">
8 k; M* Q8 E/ q \* r z/ M& E
<%i=1
8 C0 K" d# o. [8 j- ]0 l& N
set showbbs=conn.execute("select*from bbs order by id desc")
5 u5 i: Q/ \; n9 L
do while not showbbs.eof
7 `" s- I. d& {% W
%>
+ D- t4 Q" g' r$ C+ Z
<div align="center">
0 V: X3 d, I) Y; t( x
<center>
9 v4 [6 f7 N! a; H) H
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
2 i+ t' A0 a5 x( Q
<tr>
! k. K, j5 n ^! {
<td width="17%"><%=showbbs("name")%> </td>
+ Q6 @" X" E7 V0 }0 |+ F
<td width="83%">
& G) t9 v- g. J) }7 V% Z, x
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
8 x/ C. ^1 h. K; A- ]' d
</tr>
( z% ?# \* a3 i; N- b4 S2 {
</table>
, h+ C/ Y% [9 W; K5 ? m
</center>
0 `( q% E* S& v. c! ^8 U' E- w; Z4 U
</div><hr size="1">
, `/ f3 p6 {* [+ l
<%i=i+1
2 p8 a: s, S; D3 [' I+ l" [- j
if i>50 then exit do
0 X' p5 u% X! D) E0 ]9 |$ E; ?1 H
showbbs.movenext
# H/ d9 b% r; g9 N% N
Loop
7 y1 H5 B& `6 V2 ?) E
showbbs.Close
( V! A d M, C0 ?4 o6 `# {/ u
set showbbs=nothing
; O6 N+ _, e7 O/ C" O0 J5 w0 A' ~: e
%>
/ h# I2 `: [6 K
9 p* s' s+ l; h& o. Y1 y% G
这个文件就不一句一句的讲了
( I3 C3 e$ l! z6 ?1 Z
主要讲精华部分:
. u: s4 ?& r5 j, g
set showbbs=conn.execute("select*from bbs order by id desc")
7 i# [) p0 ? n; h
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
4 x8 }# j! b* l$ x
还有这么一句:<%=showbbs("name")%>
$ l. U& Y, K9 g0 ?0 U
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
" R" H) [5 i/ o6 A
代码中的i=1和i=i+1
- ^, Y- t9 @9 h, ~
if i>50 then exit do
7 ]/ D+ N( L5 M# u, H
showbbs.movenext
T+ w5 h) `- D% w
Loop
( u/ i* H6 m/ t) a1 R4 S6 j
showbbs.Close
+ I# n5 G, D8 N4 ]
set showbbs=nothing
1 P! J1 s6 [$ U& E7 Y {
6 f0 n. v) B8 }3 f! T7 @1 ?
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
8 o9 D# U5 i$ h1 a
if i>50 then exit do中的50可以修改
9 I; Q& _& j& g) F* T0 S+ ~1 i
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
2 E7 T" N* f' z! e
还有一句很有用的:
3 U' E$ i: h3 A$ Z5 {! ~) ~
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
) X* [3 q' ^7 O; @. {& l9 ?7 C' {: h
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
' j" M2 r, D' q5 `% g
等一下在show.asp文件中就有用了
7 y7 p8 G0 ]0 A4 @( _9 p" M3 K1 e
, d% f6 e( o+ \, g6 E
5、show.asp
1 s5 Q$ @: w+ W2 F# h9 b
源代码:
( u6 p% U0 Z5 l+ N" r1 y
8 \5 |: @& W3 E+ l9 h
<!--#include file="conn.asp"-->
; h2 y) q5 C7 H4 c
<%id=request.querystring("id")%>
# P* }, f8 h7 V- E
<%set show=conn.execute("select*from bbs where id="&id&"")%>
2 T4 }/ ~! {. J# O
<a href="index.asp">
6 g+ N5 u: X) [- T
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
7 H4 }( d) [& ]4 |
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
* x1 H: ]8 a% o' o s
<tr>
. R7 q! B# d; h1 h# a
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
1 P- s8 q# S7 `- D' I8 x
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
: T4 |/ S' B- s5 w# a% \
</tr>
; H3 l' T r( R) t/ U
<tr>
$ ]- H3 l1 l4 P/ a. d' H
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
2 _8 D& u6 E1 ?' J# Y9 T: H
</tr>
: t8 }. O: {1 `3 n
</table><%set show=nothing%>
, R& \$ v% |+ G4 J* r
+ q( }/ O$ T( n) d% k
劲语句---精华语句:
4 y/ j4 ^3 n' U# Q9 l; M
id=request.querystring("id")
7 w/ q0 r# d) M
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
% D/ {# O0 |% | I- j: j- A3 K/ {
id=request.querystring("id")就是把地址栏中的id的值读取下来,
9 B6 y2 A' ~7 {0 N v
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
2 P$ @& T! g9 A8 D
所以show.asp使用id=request.querystring("id")语句把数字读取下来
% b2 r( j# _) O
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
0 V1 A, }- e+ P' P
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
& q" l/ F4 s" }5 i" R! ?
最后<%set show=nothing%>
5 }+ N0 N. { V' ~: O, D0 P* Y/ N i5 I
0 q% y: o7 |3 f; E, M( Y
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://www.89w.org/)
Powered by Discuz! 7.2