标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
W5 p* z, C( M5 ]+ G; y
真NB..佩服ing .....
8 X3 v/ a8 w+ ?% Z7 Y
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
0 h0 |3 B+ O9 c: r3 L n4 E! I# v
: r4 O: w! n& t6 b
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
5 k. a b3 v0 x% T) q3 x
( J3 c) g3 t# t* j
一、建立文件!
+ h; V# p2 k0 G# m
最简单的论坛也要有几个必要的文件,就是:
4 S. _- x! J8 z, ]- }4 k! T
0 f# s8 r U7 p( u6 x# k" |
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
4 e: y# a: [7 {
9 i( z2 a) H& e2 i& I' E; c
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
- ~# {1 S, \. r: i: N" y
6 A' t( c, Q# e; t. `. s
3、发表帖子的文件----命名为:say.asp
, z! [& v3 ^( K2 u6 v
( P, Z1 O. w- W. O
4、保存发表帖子内容的文件-----命名为:save.asp
]6 ?( P$ h( |& b, d5 T8 M: C
N9 t: X3 Y' L8 @
5、显示帖子标题的文件------命名为:index.asp
: i* D6 N8 H8 T1 Y/ C+ J) ^
: j% u/ `8 g( e. Y( F6 v' [3 q
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
6 d0 K3 U$ v j, S# P
% K/ {2 k( C% ^/ }1 E% w/ S1 \% Q
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
' a; i; c4 V5 f+ I6 a: G+ z
( r9 x7 }9 n# B6 W. k5 b* e
二、各文件的主要内容
% D* b5 M& l! D6 c5 ^
* ]) ^: d+ c% Q" c: z- d+ K
1、bbs.mdb
" Q# _" M9 e8 i0 Y( ^% ]
4 ~8 t( u* | U, `9 A, l4 ^
打开这个数据库,建立一个表,命名为bbs
0 ~$ a2 Z! s! W6 _( h. f
& f+ i t* b! O+ h+ z' q7 R0 S2 U
该表中有几个字段:
* _$ O+ s) Y6 {2 S% h
6 ?8 ` o D! x& S* g
id(自动给帖子编号),他的数据类型设为“自动编号”
4 l- G0 d. X/ M" e+ @
/ e) B5 D. j: C8 v
name(用来储存发表的作者),数据类型为“文本”
+ C( }. l: c! z7 c3 L& U" W2 w0 i
, z, Q9 ?$ C, A# H1 ]9 ~
title(用来储存帖子的主题),数据类型为“文本”
$ D9 b1 Z: `0 y- ^
; G! C* a) u% c% A# W- `0 S
body(用来储存帖子的内容),数据类型为“备注”
0 ~- v( k, S% v! F9 s5 n
# y0 t$ Z% z, c0 @/ `4 E6 @9 f
2、conn.asp
( n1 {& ?( y# ]2 p% T
源代码为:
' z N$ z$ P8 w
<%
6 {7 E' q8 o6 V) d5 u' }
Server.scriptTimeout="10"
' j3 x( F4 s$ X& k2 j+ [7 @: ]6 E
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
3 B! ?: Y& t9 a$ I+ o* H; E+ Z$ D3 ?
set conn=Server.CreateObject("ADODB.connection")
; N% p' v6 A! N# d/ \
conn.open connstr
3 W( f' I/ C# A/ \$ f& {, @
%>
, M0 I- m3 l. d& F
& B" ?" Y8 o2 U. j" Y5 I" s' z
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
5 f: ^* m3 ?3 i( E0 L) h) v$ k
6 k7 `# o0 Z* Z, D1 [
3、say.asp
6 O9 e0 @/ M$ f
& f. H9 q% C" u& q
源代码为:
: T# {% k- E5 j- \1 O6 ?6 @( s
<form method="POST" action="save.asp">
3 K( H5 j+ M9 w& O& _
<p>大名:<input type="text" name="name" size="20"></p>
+ ~% F+ f4 ]) o! R0 S6 S9 L
<p>标题:<input type="text" name="title" size="91"></p>
% i$ g& h, I3 o7 v- v$ M
<p>内容:</p>
! B& n+ g' [& G% h1 z
<p><textarea rows="11" name="body" cols="97"></textarea></p>
2 N9 q7 [! r" b6 E
<p> </p>
7 r8 C0 h* d( q4 x( Y3 U
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
4 z( V% k2 }. ?* w9 D$ L x' k Y
</form>
7 e I# R# o1 ?6 j8 {% x6 S H4 \
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
# L; Y& T* W3 ~1 l
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
$ p" A. S* ?" O
9 I1 F& H# k6 a7 U5 [$ B K
4、save.asp
# `- s4 R* j( y* I
. G5 t/ y; u! q3 F/ L
源代码:
* R/ J E4 x7 \' _1 y( S
<!--#include file="conn.asp"-->
. t1 x& \. \. |8 f9 ^
<%name=Replace(Request.Form("name"),"'","''")
% P4 Y. ~9 M- m7 y1 [
title=Replace(Request.Form("title"),"'","''")
7 C1 V, W/ J0 B& g4 Y4 e2 ]
body=Replace(Request.Form("body"),"'","''")
/ |8 A2 I9 b, I( |7 B1 Q2 }
%>
5 J H* Q; X! @
<%if name="" or title="" or body="" then%>
! B, ~5 P5 R! p
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
- s5 I6 [, l: ~, S: A
<%else%>
, y) g% z- J4 x9 P: c# E
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
[4 m. l/ P7 o
发表成功!<a href="index.asp">查看帖子</a>
) G- O& |" L: }! Q
<%end if
0 ^, ~* e3 [. P3 N2 m% \) N
set savebbs=nothing
j" q( P% w1 g6 `" ?9 Y* Q' @
%>
4 D7 ?- X# @1 m% p
F |0 Z) [, ]
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
) {0 ]& d( z. o2 t4 _
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
! Z+ w9 B" D$ c' J, }: ^3 O- U
接下来几句:
. G# X& J0 v2 S; K- G. g& k
name=Replace(Request.Form("name"),"'","''")
4 f" {/ _5 e2 R
title=Replace(Request.Form("title"),"'","''")
6 X; `& @9 K- c4 b! k3 @# D) s
body=Replace(Request.Form("body"),"'","''")
- g! m9 O9 a- `; X0 y) R! x
1 _5 J; H7 @! |1 c5 ]
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
2 z; Z6 ?7 a7 g* H7 C! }! h
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
2 o3 y3 z0 x4 y5 {$ p2 }' k( d% F
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
- d5 X) l1 r& n7 {6 U
就是把表单中名为name的文本框发来的数据储存在abc123变量中
( W, _* Z/ O' z0 }: Y8 H/ j
; p; e/ K' N' _' I4 _
接着:if name="" or title="" or body="" then
- Q0 E6 P; b; _) o/ d" R
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
+ |( i/ Z+ d7 G
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
2 K. {2 p- Y( V: J" G3 N6 c
该语句属于html语法,大家都看得懂的!
& Y5 `* O* I& N* J2 _5 P
' t9 Y- @2 j+ M( v
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
8 S: d5 @; w& \" m7 N7 R. g7 G
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
" `+ _2 l2 y9 {* R" K
发表成功!<a href="index.asp">查看帖子</a>”
4 }& O( b3 w1 r k G
8 [3 O+ i+ w0 b8 Z" C
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
! f# n0 d) N, x; y
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
; }& ^4 Z9 V# m+ S2 |/ k
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
8 |. v0 E# s0 t9 S, l7 }' X
values是“值”的意思
, q% y4 m" k x# v: g2 j
就是插入向量name,title,body,向量用格式'"&name&"'表示
9 X/ `& L1 a2 z$ H% p5 k0 m
9 O8 g7 }: a$ l* o3 P7 Q' W3 K6 ~" x
最后:end if就是结束if……then
7 Y, J o/ ~) g9 U
set savebbs=nothing可以说是关闭掉:
5 |$ ]+ ]4 G) T6 y
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
- h2 l9 a w, ?$ D. `8 l; P b
* j1 M4 \+ i% G* H0 I" E+ F
5 [# D9 m. L, S9 e; D2 q' p3 u
5、index.asp
" j3 a9 m* ^% @; v
源代码:
5 K& a% _" y. t" G p
<!--#include file="conn.asp"-->
7 B2 ?/ w8 F+ j5 I0 [
<b><a href="say.asp">发表帖子</a></b><br><br>
2 t1 p \0 d4 l
<div align="center">
8 A0 D/ c2 f! X2 Y, c
<center>
- x9 _& E2 q# w; {4 P6 y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
- i" V }8 d3 T/ F! v- v3 s
<tr>
/ H2 u1 \4 x, V
<td width="17%"><b>作者</b></td>
8 z# a$ P5 R" D1 A
<td width="83%"><b>主题</b></td>
; |% Z4 W3 h; O3 O1 Z7 C$ a
</tr>
7 a" g/ {- X: U
</table>
) Y0 m/ n9 @3 \0 y1 U. B$ ]$ ~* M+ u+ V
</center>
1 v2 B5 u0 y5 m6 i x
</div><hr size="1">
' [1 H0 R/ B1 L/ `- R( @, ?: r
<%i=1
& f H% Z- O5 A
set showbbs=conn.execute("select*from bbs order by id desc")
% b+ z9 d2 f% d) s [4 [# A' ~
do while not showbbs.eof
9 p! W$ j, j4 e& J! ]: T8 Y
%>
, J$ B$ Q( V/ C3 D0 F) F3 `
<div align="center">
4 w! P- L2 k3 k& u$ Y4 s+ g
<center>
/ m8 l4 Q: J7 @- }/ y" g
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
# A6 Q+ X3 [* ]$ }' W$ c! _/ V) E
<tr>
: \& ~+ b3 `2 u8 K/ v- a* e4 _$ f
<td width="17%"><%=showbbs("name")%> </td>
. Y6 t9 w; q! I) r5 U/ V
<td width="83%">
7 m. j) K8 v# I+ L6 Q, M! R! S
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
2 b) i" q5 s) v$ ~ h/ l
</tr>
; h3 t# z' z; M; [1 D
</table>
1 Q" D. W8 W/ r+ I9 t
</center>
) a2 x+ i: e' u
</div><hr size="1">
, \! V$ U) L: ]; P* r( `& q0 n/ H
<%i=i+1
3 \/ w1 H8 A+ g6 B/ a% I' t$ H9 J
if i>50 then exit do
; \ w. x6 [) s# C! m* R
showbbs.movenext
3 w9 u2 j8 b6 S% J% _
Loop
# h9 C4 V, h( O. Y3 U# M& P
showbbs.Close
h" h5 F8 g7 ~
set showbbs=nothing
3 [- \3 x% K& k' d: ]+ S
%>
6 ^& K8 y* P$ r" R+ C
% l# \5 D6 ^& [: A
这个文件就不一句一句的讲了
/ N; N8 f- s, ^5 k
主要讲精华部分:
; t: \$ a" K" h$ J; T1 n
set showbbs=conn.execute("select*from bbs order by id desc")
. ~# I! u% ]9 a+ l
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
0 R5 m* Z/ W* s1 c4 }
还有这么一句:<%=showbbs("name")%>
9 r% Z! B( j; F6 f8 g% r5 ~9 n- D) n
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
) \8 L% M t4 r7 y! F
代码中的i=1和i=i+1
" x, S1 C7 A' [% t
if i>50 then exit do
; B! ^7 J, w* d3 {! E" ~
showbbs.movenext
3 i0 |2 H9 E. X0 r
Loop
$ I0 x* k( @! q* k
showbbs.Close
% _9 {- N1 S. |% q6 C7 j0 L) M. o
set showbbs=nothing
5 x& p8 ^& |. I: A& M
. Y: |* ~4 r5 g( V8 e. i
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
8 J/ H; U+ X) d3 c: y0 a$ R. p @! y5 d
if i>50 then exit do中的50可以修改
3 Y4 z+ ^$ q3 N; q: N2 n
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
: o4 N" D: s* E: R/ n6 Z/ |$ G
还有一句很有用的:
7 J: x' B0 V; t5 @8 _
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
1 v; k+ B) i; d* [8 e6 f% Y0 c& |% A
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
/ Q, i8 j$ {" x3 l J
等一下在show.asp文件中就有用了
% B/ m5 x: `! N$ C
F R1 N4 {3 ]
5、show.asp
, v" d: l- t* T' Q9 L0 ~
源代码:
& d& A3 f5 T- [7 B
9 e7 e, M4 v& X8 [% T
<!--#include file="conn.asp"-->
8 J& H0 o( Q9 W# Q
<%id=request.querystring("id")%>
/ f$ n! x. M- Q$ B5 l1 y
<%set show=conn.execute("select*from bbs where id="&id&"")%>
! [1 d; p( F6 v" V8 ` ~" A. A
<a href="index.asp">
) `& k5 H9 X3 x* P
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
4 F; x4 ]1 m, T
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
8 i9 ~% l9 \+ H- w& x0 l+ @" b/ T
<tr>
% @2 j6 m P" J' M b
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
0 P6 w7 O. p5 d, V3 u* P
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
1 t: Z" P! \3 o1 D8 U
</tr>
3 Q L2 m3 s9 I6 g3 s8 s
<tr>
% E o5 @* ]5 _4 Z1 Z6 j+ Z- I
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
" x$ T/ ]4 j3 y
</tr>
- M6 I$ V I: T/ S6 p' n
</table><%set show=nothing%>
2 D H8 f" b+ n# `! V
/ p3 ]- ?7 }" h9 _; b
劲语句---精华语句:
+ o% U. {: |9 y, n+ h
id=request.querystring("id")
1 O+ K2 x D6 P+ e
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
+ N7 L! z# m6 L
id=request.querystring("id")就是把地址栏中的id的值读取下来,
1 q* B& d+ i# n. o
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
+ n* y% o: Y7 v6 p5 h c: T2 v$ {( ]
所以show.asp使用id=request.querystring("id")语句把数字读取下来
# g" c5 T3 H& @! w+ F; Z" s
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
; x! `4 k4 c" U& _. ~
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
* w* B2 \6 _* A( T7 c
最后<%set show=nothing%>
% e0 r9 ^0 {- u) W
W1 D) v) e. n# x( [, H! a
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://89w.org/)
Powered by Discuz! 7.2