标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
2 B2 c* \4 h8 `; o$ ]
真NB..佩服ing .....
+ E( I" T. M2 w
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
5 s3 N( ?6 v, w! o
' x# ~, }" J9 i
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
6 q& P% W3 b9 a1 Y+ j, Y- D
6 ^# G4 p0 x# S: `* S8 O- F, Z$ M
一、建立文件!
) v8 G6 y% w+ ]8 W+ u0 f5 l) j
最简单的论坛也要有几个必要的文件,就是:
$ Z$ L8 N7 e) M6 d% P
Y; [0 F. p1 n) {! q+ C
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
5 m+ _" {5 Q" S' f: {( z% L
3 \2 d i- l/ B7 Q- A- P! i
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
- W& G5 e- ~: h# f: ]- [& H3 b
+ ]! c2 D3 t2 s8 u1 S8 ^
3、发表帖子的文件----命名为:say.asp
; L: C( W3 d$ N j: r6 y. Y: g
( O( W! |. w3 ?% Q6 d! q- P
4、保存发表帖子内容的文件-----命名为:save.asp
3 `3 ~6 B3 E1 @* s: O
& @; |5 W+ \$ b6 y+ V4 I. J
5、显示帖子标题的文件------命名为:index.asp
$ y3 B" I# z+ c) [! G1 R& E' a
' K' N* {1 ]1 X' N; @6 Z5 s" V; d2 J
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
* R w5 M6 k, M7 ?
, x1 [; d2 D% y1 Z6 V& b% n
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
( [0 s1 i& P* L; }* }& D m: ]4 M
1 j1 C+ O! }0 \) P# d k" U
二、各文件的主要内容
* |3 \0 O4 j+ l f- Y7 \6 Q4 G
5 m! t5 X3 ?/ t7 n" u
1、bbs.mdb
8 E" w5 O! {( B; {3 L
`# G8 E7 l+ e" @# p- `& U
打开这个数据库,建立一个表,命名为bbs
3 q$ `) t G7 o- h
x4 N7 @+ a* ] O" M8 ^$ ]5 M" @
该表中有几个字段:
& j9 V4 _3 ~# n, R
. x X' L5 T6 _# ^ z: E; R
id(自动给帖子编号),他的数据类型设为“自动编号”
0 {9 a6 b1 x- @5 u4 w9 q
% w' P% d5 c$ K& n" q* i
name(用来储存发表的作者),数据类型为“文本”
) P, v9 T+ T+ z" W4 b
6 H- S, x9 P6 L
title(用来储存帖子的主题),数据类型为“文本”
5 \8 r" [' x3 I! p7 j1 G
* V; k" N0 ]& v6 S5 k
body(用来储存帖子的内容),数据类型为“备注”
2 q8 X T+ w6 B
: b; c' f" c; ^# \; [: `8 ]$ \( w
2、conn.asp
: R/ d2 c! l5 Q. Z; C9 ]
源代码为:
4 x3 z V( }4 c. v) `6 N
<%
$ H4 ?9 V- [8 _& d: X: {% A
Server.scriptTimeout="10"
7 Q- p) @: I+ x4 a
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
) W/ o$ k) y1 ~
set conn=Server.CreateObject("ADODB.connection")
z. a. f# H9 c. g
conn.open connstr
4 E8 ~( p/ Q1 {) m
%>
3 F1 m/ I" N# Y! v! K$ x# \' n3 Y1 n! F
- u: g2 j' |$ K
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
. f/ ^' K- D/ U$ C# h
. [- |- s# E3 o! Q1 C- x7 p
3、say.asp
! f+ ^1 F) O, g2 Y* z/ v
0 D7 i2 p8 k* {- t7 `. T
源代码为:
. E0 a# T; B5 F7 \+ m" q( z
<form method="POST" action="save.asp">
: K+ \+ x4 [8 ^$ E4 w/ c
<p>大名:<input type="text" name="name" size="20"></p>
9 w C' S; V5 m% t# v) _3 W
<p>标题:<input type="text" name="title" size="91"></p>
3 s- P( M+ d2 A0 p$ P
<p>内容:</p>
3 n! w/ Z, A6 b: Y3 c
<p><textarea rows="11" name="body" cols="97"></textarea></p>
( Y! C- x5 R5 f! z/ u, l! l
<p> </p>
* i( C$ d. h3 z6 E& P: f1 X& p
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
& }1 [" u% i* s1 `% x; a
</form>
; C1 `: v: c+ C
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
7 C% L& g% B8 t$ J
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
. L. M/ y; p! A# \: W; l) b- ~
6 p" X3 m% F4 m3 O) g8 `7 N) q1 H
4、save.asp
, W0 D, C3 A5 m& Z. A3 g+ O
4 V6 z# S% y: O0 e
源代码:
7 q- @, }$ Y+ a. E
<!--#include file="conn.asp"-->
3 n+ q/ i' f }* D
<%name=Replace(Request.Form("name"),"'","''")
; y, S: ?: z# V& n/ h0 W# i
title=Replace(Request.Form("title"),"'","''")
4 ~9 ~) X# S* q: y: I
body=Replace(Request.Form("body"),"'","''")
4 V6 W1 M4 s9 @" {& n9 n
%>
* k$ m0 j3 y% l: L) R* n( n4 k4 `: F
<%if name="" or title="" or body="" then%>
2 P0 W5 o: q% I$ ]! `/ } M
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
: t) {/ u0 v* y& I( z0 u
<%else%>
G% ]8 }1 W* g' @# R
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
5 w& [2 @. P( G) R0 `8 _1 u! o) o" H
发表成功!<a href="index.asp">查看帖子</a>
/ N0 l }; ~: C: Z) ]
<%end if
4 d% H7 y4 I2 x0 J
set savebbs=nothing
$ J' s: \" u3 f4 s
%>
2 K @7 k4 K/ n
' S- k8 h+ g3 V! L" [* _# J3 r
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
; {& R, }. @6 H- H' w# ~
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
c! l# J' i& Z$ b( S, D. b
接下来几句:
7 H( e) Y% Z6 P. h3 ?
name=Replace(Request.Form("name"),"'","''")
. c, e% ` t8 T. B4 O. ]! j4 P
title=Replace(Request.Form("title"),"'","''")
9 a- Z& |6 g+ }8 }; N, H
body=Replace(Request.Form("body"),"'","''")
+ g$ @3 u1 g8 S) n; c2 _
9 R$ {% K* W2 f% f- A# \: A
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
& H m w+ S: |
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
( A1 k% j9 B# c5 E. G& p8 p
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
! g5 i: t' r/ G+ m& @7 }7 k9 m
就是把表单中名为name的文本框发来的数据储存在abc123变量中
3 Z! }5 n8 M! q0 R
" q! N' k9 H" F0 H3 P% `
接着:if name="" or title="" or body="" then
% D" J M, G6 R. G B
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
* U% l$ m8 d: H" A# Z0 u$ P" f; @, ~2 T
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
& \9 U0 K6 Q5 |( h& K+ x
该语句属于html语法,大家都看得懂的!
: a. R6 W D1 M5 j# W- {& y! x
) V$ Y) x( D2 A& b( D# ^8 B
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
; D- D+ U+ |; p* m
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
1 d7 h8 ~. r# |( f
发表成功!<a href="index.asp">查看帖子</a>”
% L: C/ i; z, C0 i
: {; @, K: \6 L
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
$ k4 V6 e" G5 |" a& | r2 F7 K! V
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
6 w% X" A) P+ i5 J/ ]# F
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
l0 Y" M$ a) T. @
values是“值”的意思
1 J" C/ M7 A t+ i* @/ f! S9 B
就是插入向量name,title,body,向量用格式'"&name&"'表示
& Q& F- I% ?8 U: ]( w! |% |
. |/ {/ i2 A }( N; f6 R
最后:end if就是结束if……then
# j u5 p5 A; F, W2 ]! F
set savebbs=nothing可以说是关闭掉:
7 R. s3 Z* H" v( j5 m, g
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
( l: F) c: k5 z% C
4 e9 J9 D- _, W1 J% X
! G1 K( z! A$ \; m% M7 j7 T$ N1 R1 k
5、index.asp
1 x2 G+ n& @. v, U- p9 e
源代码:
x2 P% p5 U- _, B$ K# ]" g
<!--#include file="conn.asp"-->
2 I8 Q2 D/ U( K( ^7 C( z) p
<b><a href="say.asp">发表帖子</a></b><br><br>
8 ^' C# u& _$ p. }; v" H, c
<div align="center">
2 L( @) c) T$ e. \
<center>
# A ?# q( ^4 c9 h( G2 G
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
* W/ N, I( y) v8 k5 |
<tr>
2 F/ G1 w. ?' z$ b
<td width="17%"><b>作者</b></td>
: Y' T: t5 I. T4 S5 f: o* X: w4 b
<td width="83%"><b>主题</b></td>
0 [! P7 ^3 a) \& D( ^5 [
</tr>
, z) |& b' X/ b5 Q2 O; J0 t# H4 o; n
</table>
# E( a! V6 d9 a8 Z
</center>
J! W7 A7 C5 Y- T6 V, C
</div><hr size="1">
4 ~4 Z* K k3 B Q8 j2 x+ a% b& V' m
<%i=1
/ G2 A; Q9 h2 [: S) d! O. O
set showbbs=conn.execute("select*from bbs order by id desc")
% ^, D# y5 x# Q& a6 B
do while not showbbs.eof
* r! P: j5 G5 `1 n6 T
%>
+ G4 `' _0 a3 |3 [- r9 j
<div align="center">
: q+ P; V8 M. \% l2 m: ]6 T1 X
<center>
, O: k$ ~% o6 E/ H7 f6 t
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
4 k8 S8 r2 @/ L* `+ O
<tr>
: Y4 \# R% R- P. L/ t5 t
<td width="17%"><%=showbbs("name")%> </td>
! t) s6 M M- M8 ~
<td width="83%">
" u/ y0 K+ [- G0 I
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
, R2 P( D8 q3 O3 U) |, f
</tr>
0 h+ R9 P) y4 ]$ L! h4 F
</table>
$ V* |1 {5 J8 M6 _4 w, |7 L
</center>
0 a2 d! k% |& Q
</div><hr size="1">
" u6 V- p. i/ Q5 {7 D
<%i=i+1
: F( V1 p' `6 h, G9 ?
if i>50 then exit do
/ e1 m1 t: c$ ~6 F A4 a
showbbs.movenext
6 E3 k6 ?3 U% g0 Z O' i6 Q
Loop
/ u8 q* ?$ I0 @3 M1 e
showbbs.Close
& b( Z; V3 `4 w' Y2 y* T
set showbbs=nothing
* @& D1 t, w! m- [# G: J) A+ {
%>
, q6 \9 e8 O+ j+ ]& Y* Y
" s8 `6 {8 d9 ^
这个文件就不一句一句的讲了
" _5 D. C; A9 p3 s6 ~* e
主要讲精华部分:
\0 O0 P5 v2 Y# A; W* W
set showbbs=conn.execute("select*from bbs order by id desc")
6 O9 k1 S% B8 `8 E; S3 z
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
2 d9 v0 X7 h" N5 p
还有这么一句:<%=showbbs("name")%>
; i0 \3 s8 m/ _
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
/ K/ i: g/ \, m, S5 m
代码中的i=1和i=i+1
+ {9 u$ I/ U: g2 r7 E% S' s- v
if i>50 then exit do
/ O* \5 b0 q# Q7 s) H4 m* A
showbbs.movenext
- o. G" @; X B5 Z" c5 k
Loop
/ j- h+ }8 p- T0 f' A' C
showbbs.Close
* h! N, T2 s1 ?2 w5 d/ l9 S
set showbbs=nothing
5 S# g& Y' ?# i3 H6 a# I4 k
. y8 T" |- l# g% a# u( v n5 L
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
L. |; v- }. r9 P7 C3 q
if i>50 then exit do中的50可以修改
5 e6 b! S5 H" x# J2 A3 }' m
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
* V" x( x0 ]+ ^% N8 t) C
还有一句很有用的:
, F. a- |1 L( q! Q, T/ \
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
6 e8 l3 f6 {- t( m+ W" r
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
9 P' e5 ?: D, f, m" g& o
等一下在show.asp文件中就有用了
; p/ n, k5 o" n1 p4 }: U
% r h+ M% }7 Y- ? w% s8 x
5、show.asp
& I& r8 { k( l$ c X/ t2 v; |
源代码:
% C; L' U" a6 ]" c
; Q' }' U- M# T t* _( T8 e
<!--#include file="conn.asp"-->
" v+ a! M% o! O6 f9 Q3 z9 s
<%id=request.querystring("id")%>
, O6 T- [, G; ~8 R6 o
<%set show=conn.execute("select*from bbs where id="&id&"")%>
, Y' l% I+ F4 C+ X7 A4 K, D
<a href="index.asp">
7 z3 x, R6 i* @
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
3 r" N' i& A7 T8 `9 ~( a
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
4 X p+ @' \ ]
<tr>
$ @' b: \& [5 n R$ U
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
: L( s1 A6 z! u% |8 V
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
( ]; L( \2 h6 T* V x5 j* u2 c
</tr>
. Y! @! E; u, y
<tr>
/ ~4 I5 [( K* f* ?2 u% x
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
( a: Z: Q& J) B+ ^$ a
</tr>
: T; ~0 k' S0 W9 v/ V8 k7 F* v( b' Q
</table><%set show=nothing%>
4 x' `% \1 j9 g. m
" d4 n8 W. j* \3 a
劲语句---精华语句:
/ L/ \, f& M& b9 {
id=request.querystring("id")
1 W, ?- v4 c# n2 Y
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
$ r0 b) _. m8 R+ E! ^
id=request.querystring("id")就是把地址栏中的id的值读取下来,
. R, ?( o y( f& ~% R
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
7 A1 W- w+ Z6 }% o
所以show.asp使用id=request.querystring("id")语句把数字读取下来
3 P9 |8 N* |) u
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
7 J# ^* w& o. G' h
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
8 ]0 y8 [1 S; E
最后<%set show=nothing%>
' \- L6 y3 |" n, r
. H3 B* [) X/ n) @8 [3 b
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://www.89w.org/)
Powered by Discuz! 7.2