标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
- Z/ }# `5 H7 {7 G ]: {# Y1 {
真NB..佩服ing .....
8 C/ e4 \" q1 C6 S
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
! S' u. R6 g9 w
/ v+ j! X, i; u0 n0 W
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
( H! s4 M: b8 ^) O
* a4 F1 r5 F7 ~3 R
一、建立文件!
; p+ {$ C( J0 P* [7 f# |
最简单的论坛也要有几个必要的文件,就是:
( A8 H* B( R- w* X$ M
; b! I4 }; V' J2 j4 y, R( t
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
; s( l6 _, A) R! G, S/ F, c- K
. [! Q' w6 A1 u" O8 @+ t9 L5 n
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
4 W8 \7 m% h1 {' w* y
# T( Q. {* b' l2 W4 T, p* e# p
3、发表帖子的文件----命名为:say.asp
+ R7 [- Y, p/ B/ O2 A T1 o" s
1 O, K8 Z, _5 f
4、保存发表帖子内容的文件-----命名为:save.asp
2 `4 `9 v6 z1 U9 f9 O/ K, C
' @' E- R/ B4 A" G: I6 m
5、显示帖子标题的文件------命名为:index.asp
" }& z4 e; v9 L- O$ ]# s+ l
1 z, B5 x* d% j5 I; X7 @
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
. r6 ~! p$ o! ?1 U# e
* p A6 M5 D& h: v
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
' `3 W( i+ i5 C6 n7 H8 P
9 g( W0 X' x1 I6 ?8 S
二、各文件的主要内容
0 x. T* L8 Z+ L! r. V1 o, C& R# P
" o9 f& C7 O$ D9 j' z3 |
1、bbs.mdb
4 F _: J$ ^% s* V
1 f% k) p3 o) E; l3 P: U5 y
打开这个数据库,建立一个表,命名为bbs
( j+ q" C6 s3 I, p
1 \5 i9 K& l& o) o z9 r; f+ X
该表中有几个字段:
, a, [; y4 P! }2 f! X4 r& }
; h' K4 F0 e/ E5 Q4 N9 n. @( o) S
id(自动给帖子编号),他的数据类型设为“自动编号”
4 P- J+ f+ w5 v3 Z0 q
+ s) K4 a/ C% Z% T
name(用来储存发表的作者),数据类型为“文本”
% W7 L5 l. p) n J2 k
* Z; F6 t: y6 o# U
title(用来储存帖子的主题),数据类型为“文本”
- N0 _9 q. p4 @. y5 W, f. F
% [7 I, G! R) W8 y" j: X3 m* Q% b
body(用来储存帖子的内容),数据类型为“备注”
9 N }/ ?, E- X
" i$ g7 H T8 W8 i7 F
2、conn.asp
4 c) m) @! r2 k& @9 W; ?
源代码为:
% b! R6 }" N+ V# \% N& c' b- ^
<%
0 q' o- h# {( O6 w/ E
Server.scriptTimeout="10"
5 C# ~4 `" ]& w# ?! d- f. K7 T G
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
( n! }5 ^1 T! f* f) z
set conn=Server.CreateObject("ADODB.connection")
0 \" P ^ k7 C7 Y
conn.open connstr
9 p K) S% }, v' g
%>
- L8 _$ C* W& R" b9 T S6 X) ]$ Y
, O6 r4 b7 ^$ P; I1 p- |* e
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
) q5 ^ c4 G3 I7 I, q0 Y. b( w
$ U8 l o0 }( ]* W: ]1 V9 V
3、say.asp
& I9 a* q% X3 |# C
( ~) D% X6 f; g* ?1 }& F9 I
源代码为:
! j2 u2 k Y* `
<form method="POST" action="save.asp">
9 ^6 p' W3 I! L8 D8 a
<p>大名:<input type="text" name="name" size="20"></p>
) L- t# D1 h% V! o
<p>标题:<input type="text" name="title" size="91"></p>
$ J# d2 E) k3 x8 N$ {
<p>内容:</p>
3 ^8 @& s/ P- H$ b; K# B
<p><textarea rows="11" name="body" cols="97"></textarea></p>
8 ?; b* o9 J, h9 k7 ?1 i
<p> </p>
/ X% h, o8 s. ~" q
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
|0 B% m, b1 _8 e7 d
</form>
1 T" Y5 z! D& a. ?1 W2 P# c W
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
& O+ k6 ?" c% ?' f
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
% B7 X: V( E* m! K, j( K' G$ w
6 t0 v9 V# d+ i5 }% a7 H P
4、save.asp
! p( z, [ K" t# ? C. e
! V) q# Y. G% ^. M0 p3 n6 g! O
源代码:
7 _2 u1 U. d2 z
<!--#include file="conn.asp"-->
4 w6 _. R2 k6 ?
<%name=Replace(Request.Form("name"),"'","''")
) Q( B+ z% _2 z4 C5 Z2 u, u
title=Replace(Request.Form("title"),"'","''")
6 v% S' K8 k; z* @* n1 j8 Y( Y
body=Replace(Request.Form("body"),"'","''")
# `0 L+ t2 x9 f- l
%>
& c6 n. `& {. T# _1 @6 V
<%if name="" or title="" or body="" then%>
4 [4 v+ i. j1 m! l
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
; h& C- u- d9 H: }1 n ]* t
<%else%>
4 [1 T; Z( J4 `$ U& t
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
* k H7 ~3 X/ [! Y
发表成功!<a href="index.asp">查看帖子</a>
; c I& o- c1 D3 s: ]) e
<%end if
# M+ A9 }7 N7 W7 H7 K3 o( W
set savebbs=nothing
, }$ r H$ o0 ?1 v# v) I0 j
%>
0 ]. _% F" m; @1 I) j! O6 ^ B
5 w5 X/ Y* V( m6 X: U
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
* Z* ]( s/ R R$ ]/ O
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
( m: n! b( `4 _
接下来几句:
' L1 t+ J5 q; h! f
name=Replace(Request.Form("name"),"'","''")
( Y. `6 }7 v- V- m
title=Replace(Request.Form("title"),"'","''")
" J J, Y3 c2 N
body=Replace(Request.Form("body"),"'","''")
! `( y, O; q$ f' K: Y) ]
9 e' X x, B' M) x$ e' X0 t
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
& f6 e p' s2 d, `7 z9 a
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
* q# d. |5 G0 t! y8 P2 z6 j4 E
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
5 X0 p+ e) j. }. z: Q
就是把表单中名为name的文本框发来的数据储存在abc123变量中
) R) H6 f8 `; J* W; X% T v9 j, v7 S! j
: T3 o2 F% d" i0 q1 z5 Z. u+ s
接着:if name="" or title="" or body="" then
' b0 Q8 `9 I$ G
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
+ ?0 r4 r" k; P7 m, ^
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
, o) E$ ^, P+ `3 O% a n0 o' e+ B
该语句属于html语法,大家都看得懂的!
2 e0 y& Q' x: G) E
* O% T* B* M8 ]4 N' X0 \
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
/ U* v/ h5 s9 |
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
: l7 U8 A8 u, t: i* ^9 u0 T7 |! R) v
发表成功!<a href="index.asp">查看帖子</a>”
) o, ^+ l8 Q% I. N3 t' _& O7 p# K8 s4 _, m
! p( n' u/ o4 `
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
/ I' ^1 }+ w3 I9 n- ?4 G# E
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
1 u+ d5 d( V0 A% k. u
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
" z% P2 k& N! g& ?- l* m+ t; C
values是“值”的意思
& v' g: W2 ~/ \" G4 B
就是插入向量name,title,body,向量用格式'"&name&"'表示
' y$ R/ I4 p7 y/ h% L
- c2 ]+ O' u5 ], I
最后:end if就是结束if……then
8 x7 D, d4 C: U$ |
set savebbs=nothing可以说是关闭掉:
8 L" b8 z- J/ q( j' s6 m
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
4 e I! w/ l" }' y/ R$ D3 m
6 ^: N; Z2 n v9 T- ?$ \. Z2 _
, i" G* e% x' k* K
5、index.asp
U9 |! k; o: @$ U
源代码:
1 \; s. N4 o& p
<!--#include file="conn.asp"-->
4 P3 r8 a2 g% h( D
<b><a href="say.asp">发表帖子</a></b><br><br>
4 f/ b9 L& B8 e
<div align="center">
7 \! C x9 F4 {& a9 q3 V+ z" `+ S
<center>
" Y0 R9 `; G! ~$ B9 N c: q
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
+ Q. g" G0 B$ j7 ~% n: E
<tr>
r6 L) L h' \8 t2 @! Q
<td width="17%"><b>作者</b></td>
" j- E4 f) a7 l* j' H8 e9 g$ N
<td width="83%"><b>主题</b></td>
% z& y7 |: U1 `6 g' [6 p
</tr>
; o3 K, y$ j" H" A* X( u
</table>
; w1 s/ w+ b3 f9 h7 t. O
</center>
' g6 V- w7 l+ G( o
</div><hr size="1">
$ B1 t( L0 [* h
<%i=1
* ?/ m$ r" `( d @* E$ Y
set showbbs=conn.execute("select*from bbs order by id desc")
/ P( |6 z! E0 F+ P, W/ y
do while not showbbs.eof
! @$ j2 }( e! ?6 ~9 W- l
%>
" V" q: U' o; _9 M7 C+ k
<div align="center">
: y C- T; t5 d4 S0 O
<center>
2 W% x0 H& G9 n% h8 B0 I0 d
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
& ] z* y( J! {2 T1 B
<tr>
: V) Z7 F, q; X+ S) Y
<td width="17%"><%=showbbs("name")%> </td>
+ p$ J, A/ d6 F( C) m# f1 @
<td width="83%">
0 |" ? ?/ b- {" D6 x! b( B
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
9 X! r* I* \4 W2 Q1 V$ e
</tr>
; O4 r1 P% b' ~+ ~* y; {
</table>
/ I7 _- I) C1 G" R; o# b* m" r; ]
</center>
; I, V8 w3 H) ]- u0 d+ N$ Q. X* D
</div><hr size="1">
7 [0 d6 z) ^, x& ?
<%i=i+1
) u3 ~2 A! H/ h7 B* C8 J2 @! h
if i>50 then exit do
) B v0 [, Y- M
showbbs.movenext
4 g& q! G) l* d+ U
Loop
: c6 L- m5 @6 q/ U5 P! L9 `! |
showbbs.Close
. p4 l0 g8 x+ c' d# G$ _, }& W: O
set showbbs=nothing
0 K+ }. [, J1 h
%>
7 k% l" E& |+ h, q/ K/ D: ?
1 h7 `5 L" S# Z# R6 f5 r7 l
这个文件就不一句一句的讲了
1 l- r# C6 |4 X
主要讲精华部分:
% Z8 R" t3 N; D+ k- O/ k; C" _! F
set showbbs=conn.execute("select*from bbs order by id desc")
) J7 X0 t; s: X. F$ [; i1 t
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
6 B: ~, Q: c) O- I" g* J+ n9 \( D
还有这么一句:<%=showbbs("name")%>
- a, g6 s! z3 a. u& q$ v8 y, `# C
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
/ Q5 L6 x/ e) I" }9 J# @% Y* }$ \
代码中的i=1和i=i+1
% E% B, P0 ?& Q7 z3 y8 D- s0 j5 a( k) a
if i>50 then exit do
+ ~% Y5 V0 ?; m5 D
showbbs.movenext
4 n0 |- Q3 f' A4 k; `6 k. _
Loop
8 H- `& F+ F& T: E
showbbs.Close
; X: ?% m3 L. @, C, g8 @
set showbbs=nothing
! J; ]; [' J& G5 g! n# P/ Q/ K4 W& i8 } ^
& w* v4 \0 H) _: q U. r8 |
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
& a q9 t9 i, d+ D- Z/ d
if i>50 then exit do中的50可以修改
6 A+ f. w/ X5 G1 [. P/ D
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
$ y `! p/ L+ R
还有一句很有用的:
+ G, N1 t2 O* T0 W% g, }8 q1 U0 P
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
$ ^+ B/ D' R( U, ^9 n8 U! N% _, C
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
% Y9 ~ a2 G7 G+ ?3 ?; e; P/ l
等一下在show.asp文件中就有用了
) D' }. }1 V j$ \) c7 E3 x
* s' J% `6 V+ S
5、show.asp
& i* r8 @$ h: a, B; S, p c
源代码:
3 `: l. n' t9 L1 u; k8 T+ t) P
g, K4 \3 D5 g
<!--#include file="conn.asp"-->
- o/ F' a! u, H) ~5 U
<%id=request.querystring("id")%>
$ ]$ O; B. v7 h2 V
<%set show=conn.execute("select*from bbs where id="&id&"")%>
2 \! Z% l o8 _. |, Z8 \& C
<a href="index.asp">
* x$ Z$ W8 n0 I; L/ W
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 ]$ l& M9 l8 Q/ h4 ?% c2 d4 y0 u/ u
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
2 ~: [ h! P8 R. T ?) }2 h. Y: U
<tr>
2 R# S: G8 O9 T# o1 V2 f
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
1 K; ~% g2 W5 `4 |# U1 g" h" R& ~
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
! }' d. N" S& k1 g" J6 p5 R
</tr>
" ~- d8 t# k! f
<tr>
& I+ b% k# t9 B& o
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
4 B. X2 Q1 ]0 G1 H5 a9 F% G
</tr>
# M7 Q, r# V0 p) Y
</table><%set show=nothing%>
0 v( @' `* u" v
. K" N5 t; X1 W8 I- Y
劲语句---精华语句:
, A( N* p6 p) l8 Y: B9 k' U- u, e0 j" W
id=request.querystring("id")
9 U. [ H# K# `, J* E
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
9 f4 P# M; X- s. Q
id=request.querystring("id")就是把地址栏中的id的值读取下来,
8 I$ V/ ?8 p1 \
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
6 h; S/ a3 L4 f, J5 Y5 W( r+ n$ W
所以show.asp使用id=request.querystring("id")语句把数字读取下来
" C; S/ j0 ?& q* z7 o( V
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
) g" {; X9 L; c; a/ w3 ~+ @: w
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
! B6 E4 _) W( C) I- x
最后<%set show=nothing%>
9 @6 j* s/ C6 j, B
! Q9 G3 ]7 s- x# B# N4 k9 I
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://www.89w.org/)
Powered by Discuz! 7.2