标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
9 E/ t. f$ @0 k0 V5 ~+ B5 R' t4 `
真NB..佩服ing .....
3 T6 _1 |; W( M8 G" S5 G8 P* b' O
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
% D* f" [- ?$ h. u
9 b1 O' j: \. C+ | ]
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
! O1 k6 D* O* M5 Y. i5 ]
" k# t3 z' }# D/ k
一、建立文件!
# w) ^! v+ A. W; I) t* {% ^* |
最简单的论坛也要有几个必要的文件,就是:
1 C7 `" I$ m& L p$ _, F3 J% e
7 S) _8 Y, f$ t9 t7 N* {' r
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
# \# P& v: T e$ a. A* M+ l
) G; I9 j% Z( f6 s. S
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
' ]' M6 C8 U/ f5 S$ ]2 g% S
6 L, P$ C( Y1 t$ o$ U4 o' t
3、发表帖子的文件----命名为:say.asp
& Q7 O8 V, w7 z) _2 ~
8 K/ g! J9 i' B/ D
4、保存发表帖子内容的文件-----命名为:save.asp
$ d9 `9 G- F5 p( w @2 O
0 E# e& G+ B7 Q! u5 d' S
5、显示帖子标题的文件------命名为:index.asp
! _# N' n: o% S/ g6 W( s1 Q
% X) `/ w5 [7 _1 j( K
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
: n: l. I& q d4 o; t
4 p+ d: U! P/ L0 r4 H8 m. ~, \
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
3 Y( M( ^- M# l" F Z- K( |! Y
% I: u& i. v0 i5 H0 A; O/ D; h
二、各文件的主要内容
0 D( b/ V. E% {
, b+ b' r% M5 t: z& k) C* S
1、bbs.mdb
4 g8 G) D' T* y w& w, B2 e
" R( T1 S- i( N! ]& N) b
打开这个数据库,建立一个表,命名为bbs
1 Q7 g; P* |0 H2 |, g& E
2 N4 d; s4 C/ @ p& E% h
该表中有几个字段:
0 f/ f& J Y8 n( W a; C& H4 r6 P1 J
3 L, y; M) T7 ^3 C% `/ v
id(自动给帖子编号),他的数据类型设为“自动编号”
) i1 Q! ?7 p/ D3 K; ], X+ M% u, {
. N+ s* \( M6 x% n
name(用来储存发表的作者),数据类型为“文本”
6 e+ [3 c- z( i4 X
& a8 E% ^ [+ }* W! u
title(用来储存帖子的主题),数据类型为“文本”
( R5 e M3 q1 r2 E
; @" d' a H g' R" N& y# n3 X2 t
body(用来储存帖子的内容),数据类型为“备注”
# s: v' \2 ?# k) k0 i& H
3 `0 Q$ W$ q9 s8 D1 K/ [' h" p
2、conn.asp
. |( \8 g; ?- Y# g4 Y& {
源代码为:
) X J0 D8 B% m- A& U
<%
9 }0 Z' l2 u' r. y' N* W
Server.scriptTimeout="10"
" I0 S( J) S0 x
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
+ U( W- H) _. I
set conn=Server.CreateObject("ADODB.connection")
U9 R6 l7 U! F/ Y
conn.open connstr
R+ N/ R' r( g$ a% _8 { z6 k
%>
! ^! k9 C$ F, q0 P
- S: u" g. @( F, A* O( Y
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
1 G9 p2 p7 @; g
* F4 y, |) F. Q, Y
3、say.asp
1 Z' Y5 P u9 P
- X) n3 x3 O: ~' f# | x
源代码为:
5 x" J) Q5 p+ i" M9 m& U
<form method="POST" action="save.asp">
% P4 k8 e- Z: d, k
<p>大名:<input type="text" name="name" size="20"></p>
) {: _4 Q6 w, B/ D6 u N: Y
<p>标题:<input type="text" name="title" size="91"></p>
+ U2 W4 x8 H; f4 h' Q% x; m- E6 L
<p>内容:</p>
/ p- F( c9 s, u9 o% N" x# f5 k5 C
<p><textarea rows="11" name="body" cols="97"></textarea></p>
! I8 o# \$ p: C, |0 p" J
<p> </p>
1 w, d, Q: y3 `9 c# P1 ?: e" h! P8 ]
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
2 o# \' Z# w, V/ F+ a
</form>
" w& Y. D( m8 y2 Z0 g' h; w3 ~
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
' I* A% U- _$ e+ T& f0 |9 b% }
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
" b% W" l; G0 d9 q" `( l) T K* C
) M( e7 h+ w- {! \% y
4、save.asp
W O! P5 h6 ?4 C' Q( |& f
; ]% }* T, S* C6 L5 V
源代码:
$ a. O; E C# L/ @: s2 q! t0 q
<!--#include file="conn.asp"-->
6 v1 F) V: _" }
<%name=Replace(Request.Form("name"),"'","''")
% i; C- n, n; u4 I
title=Replace(Request.Form("title"),"'","''")
/ P% X6 Q5 k$ `6 K
body=Replace(Request.Form("body"),"'","''")
3 y5 z' Y8 y& o+ u5 L: o) y
%>
3 z! N% o4 P; n. \: j- d( Q5 `5 I- _
<%if name="" or title="" or body="" then%>
9 A# O. x* B; o9 ^' T7 k" H
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
: d1 x. e. R) W, r7 A; F7 X' k2 F1 R
<%else%>
6 G5 ?2 ^: o1 p) B' E8 K# U; d
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
9 B4 U! t3 _4 d: d
发表成功!<a href="index.asp">查看帖子</a>
6 e4 X0 e9 L# ?- G& J
<%end if
& q/ |$ n2 \; K; t, @. X; s
set savebbs=nothing
; e; d- l% r3 v6 T
%>
7 ]6 B& J" q7 J: ?- [* a9 k9 e
! d( X1 g+ s" M3 ^0 V; I- M
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
# g0 |0 D/ b' v/ {
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
& k$ W6 z0 k( \3 P- Q$ @
接下来几句:
$ S; k: ?+ T' Z" P- X
name=Replace(Request.Form("name"),"'","''")
! q- `4 b" H" u! Q( K# T
title=Replace(Request.Form("title"),"'","''")
- X" B; w& [0 G4 L/ |- c
body=Replace(Request.Form("body"),"'","''")
& x3 P! l* B2 z6 Z }# r
* f0 j8 ~+ I; b
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
/ M% i& ~+ N9 J) N
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
, }% j: C- O0 G2 f+ Q6 s" u Z
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
7 {# {* h: l( O2 a6 A$ q8 y
就是把表单中名为name的文本框发来的数据储存在abc123变量中
" a+ n% y( g, P9 D. ~1 a: [& C) H
) M$ g0 [- p0 Z3 w2 x0 |6 f% ?! K
接着:if name="" or title="" or body="" then
/ B1 f7 u" Z" u) n$ f6 {
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
2 j$ m) g. |+ p2 t6 `7 c0 y* |
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
7 ^. m5 z( @& [; [
该语句属于html语法,大家都看得懂的!
4 @0 D0 h+ w/ |% k
# d9 ^$ L3 R* X& f$ ]! u
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
( j2 p: ~8 @: A( }
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
/ E2 q) H; }2 s, Y* L
发表成功!<a href="index.asp">查看帖子</a>”
5 t, F% R' z; X- ?; P( s
& f a+ Y( V' g& \7 L7 v9 r
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
8 D- A# k# P+ b+ \' T' w% w
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
6 D2 Q6 F7 `5 R& R9 A' X, ^ y
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
& v* j2 c4 w Q1 p8 q
values是“值”的意思
6 q" V3 q, H" E7 s- A9 E
就是插入向量name,title,body,向量用格式'"&name&"'表示
; y+ r, ~& k8 l! b& }6 Y4 m& l
! x- w3 Q/ Z1 q2 u
最后:end if就是结束if……then
' D p! o! B. t& _8 t; t+ {
set savebbs=nothing可以说是关闭掉:
4 _. x- A( \- ~' K) ~% @3 s
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
$ B, i# w7 Z5 b/ w3 P8 O, k
8 l) | w' u7 G3 ^9 S. p/ [
+ b0 P- `3 i+ _# w1 ?7 v
5、index.asp
, T" Q9 o9 S" l2 l2 `" [
源代码:
5 m7 D2 h, u; |' E, A; E1 {
<!--#include file="conn.asp"-->
1 `6 o, E% D/ K9 K$ g/ o6 y
<b><a href="say.asp">发表帖子</a></b><br><br>
# ^9 K3 F9 [/ H3 @9 v/ M7 m
<div align="center">
0 h) |6 A) e7 F: E
<center>
7 }( w3 N- o& Y% K
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
1 k! G9 d+ s) W
<tr>
) \' B: h" B U9 o' i
<td width="17%"><b>作者</b></td>
3 ~3 P, L1 S) Z, a& t5 T
<td width="83%"><b>主题</b></td>
5 {( o' L1 k/ u% L, X% s! s+ A
</tr>
J1 w! G' H5 A/ P( b! E
</table>
3 b" T9 g$ B- @& t5 P! i- t& A$ ]
</center>
2 i4 q3 X- C; Y- f
</div><hr size="1">
: `$ e5 r" Z# F7 [
<%i=1
8 B9 d1 o+ A, z% j" s2 ~8 k1 k8 `
set showbbs=conn.execute("select*from bbs order by id desc")
- O9 {* p: @9 q7 f% z6 C
do while not showbbs.eof
' ~5 o% s; L+ P2 L5 h; Q7 C8 X
%>
) [( M7 r0 n9 q
<div align="center">
7 B- B/ l! [9 F7 {7 ^9 y
<center>
$ p4 u2 ]2 i' O6 ~% r$ _
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
* M7 ]1 u, H! |; \
<tr>
: m3 J% ]. q8 L8 Z6 M" g6 \+ x
<td width="17%"><%=showbbs("name")%> </td>
* ^" ~! J# \: D: d% g" f
<td width="83%">
8 l7 m6 s. V& i$ R
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
( G# t( b c* d* h
</tr>
. r, f4 P4 D8 V ]5 m
</table>
5 \7 w1 Q7 h$ V6 S; b: U
</center>
& j, u7 }6 k# D. F; M; }
</div><hr size="1">
6 k" @0 l; s- w: H9 u9 H: ^
<%i=i+1
' K @; k! s8 E- Y& S
if i>50 then exit do
; d( A2 i9 F8 q) a
showbbs.movenext
* j! G7 O C9 G9 P# m; G0 F, G% E/ _- I
Loop
2 L2 Y; N p' O. @) ?
showbbs.Close
' a# m' {' T! u& G) L
set showbbs=nothing
) Q+ p. v% }6 w* ^4 Z2 F+ K$ [
%>
/ ^! M7 }* K- e5 U6 W8 `/ K5 s* O
# ^+ B6 }8 [3 C0 s& l
这个文件就不一句一句的讲了
5 ~( {9 H/ ?& J0 G: ?# }2 _
主要讲精华部分:
) P, j" V1 T" H7 ~5 ?+ u8 [. M! `
set showbbs=conn.execute("select*from bbs order by id desc")
' k4 y: h5 b& [1 Y9 E, E" X
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
3 ?- ~' g, U. j* k' j4 V
还有这么一句:<%=showbbs("name")%>
7 Q+ \3 E2 h8 n5 C$ `* F. u% B% Y! R
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
9 ?% T9 N6 x7 W+ W! x
代码中的i=1和i=i+1
: C7 j. s2 t( [9 q2 B7 O
if i>50 then exit do
5 k1 C% h7 s/ N K7 {7 M% S- \1 @
showbbs.movenext
f+ u0 {1 f' b. K' P0 q' ?
Loop
- S+ Y _- \! O: `' m: G) Z6 r! i
showbbs.Close
; B, n' J% Y8 k& m
set showbbs=nothing
) H; d! A. D. B" _3 i8 e u- \3 O
4 Y) e. p9 S8 M* `, w; z7 X& V
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
+ p) Q: ~# P8 V5 B
if i>50 then exit do中的50可以修改
$ s' ^9 N0 ` d4 t- ]9 D/ h
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
$ S" Z8 K1 }# k" _. k1 `! M8 W' p6 p1 A
还有一句很有用的:
0 q4 h7 m5 A- n0 x5 T, O4 A0 f# k' P
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
8 ^7 u+ o* H7 ~; q8 W# V8 Q
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
7 `4 v: X+ {4 N F
等一下在show.asp文件中就有用了
, i4 d8 }+ V \& ^+ U
6 y/ I+ T/ G: U, _
5、show.asp
2 m6 e3 i* l9 B
源代码:
" _# ~( d" A$ X+ P/ b
7 o2 E6 z; b0 m9 z: ~6 L
<!--#include file="conn.asp"-->
5 W+ v# H# y8 g8 f6 ^
<%id=request.querystring("id")%>
- G. c# t- v( i- F5 }9 u" P0 c b# c
<%set show=conn.execute("select*from bbs where id="&id&"")%>
4 w8 k/ n y9 H: _( N; A& n
<a href="index.asp">
2 O- \8 q {7 S6 t* [& h
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
/ I; t- Q* ]8 L9 W! |
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
5 o6 B# r2 G3 m$ u% m ]! M
<tr>
2 e6 m1 D$ R, w( p8 {, N2 y9 P
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
$ q, B" W1 q: U3 |, L, F& i2 ?1 S
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
; Y# |1 k; h3 F- s. m; y" ^0 W
</tr>
: F$ g* t, @% |0 p* d
<tr>
& }9 x0 F5 k- b$ y9 {
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
3 P( V( V# R7 `" I0 a
</tr>
, r) ?' b/ Y# v* {9 p2 L0 E
</table><%set show=nothing%>
$ g, u7 B% Y4 l
, h( m2 s- j- S; _! f( O. J, e
劲语句---精华语句:
]+ m7 F% _8 T, l
id=request.querystring("id")
! C, _8 g s; @: I
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
- C2 N" H$ D5 T+ @7 b
id=request.querystring("id")就是把地址栏中的id的值读取下来,
" c# d9 C4 j# i0 {& A7 l
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
! ?, e0 N" r# ^* s+ ~' D* R
所以show.asp使用id=request.querystring("id")语句把数字读取下来
/ ~* {% S2 e8 O& L0 \
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
- ]( D# W1 t# Y( l8 L5 w/ A
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
& t' U# R1 W* A: t! g4 j
最后<%set show=nothing%>
" \0 }, X- [. F% T& U* e4 O" s
+ N! Z. Z! i" h1 |: y& z9 @
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://www.89w.org/)
Powered by Discuz! 7.2