返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西# G& U: x8 |: s8 R! p8 n* [# `6 Y* y
真NB..佩服ing .....7 [* b0 n# G8 q
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。, ^* u" r) R& q: f
% u; Q1 Y% x2 S6 j
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ; N/ T% ^9 C* d) T0 V9 G, x

5 C. F$ z  s" U8 l% j* u一、建立文件! " ?+ q: v2 ]0 b5 |, P6 i3 J$ j
最简单的论坛也要有几个必要的文件,就是: - w& X9 |- I8 f+ @$ |3 @& e! V8 X

! k5 d2 A; @+ B! e0 ?( M  O! I1 ]1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb $ m- G& E/ X: h

! k5 j, ~7 i: Y; y2 A6 o2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp : m) i/ T' P! L6 d4 d/ |

) O5 U6 x1 V, m" h% D1 \; o5 C3、发表帖子的文件----命名为:say.asp ' S9 L) Q: A, e3 N3 w7 V) r

0 G/ `# \) y% X4 R( Z+ S) p5 b7 V4、保存发表帖子内容的文件-----命名为:save.asp 6 Z* I, T0 E0 j, A* U

6 g% `7 T7 v. B  r5、显示帖子标题的文件------命名为:index.asp
6 P! K% c+ P1 |' M$ A7 ]5 F6 ?1 C( a7 x; M& A2 T3 h$ h
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
( h) z4 M; E: K) q; N* Y  |9 X) n" ^8 R
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 3 Z4 C6 U6 y) }- @& Y3 W1 [
) `5 N% U+ O" z% f0 \; T, j
二、各文件的主要内容 ( ?* u4 v& M$ O; G8 Y
9 ]6 f6 V+ ~5 j5 G( ^# t
1、bbs.mdb
# ?7 _8 `$ c% L9 k3 P& q6 B# w
# g# l7 r2 c: o打开这个数据库,建立一个表,命名为bbs   W0 p. z$ I4 d8 A* i8 k+ x
; K1 W4 b2 r$ \( V6 R
该表中有几个字段: 9 w0 D( z) n7 p6 ~3 d/ {2 X4 M, u

: `8 X9 Y: r) D+ F8 ~! @8 Bid(自动给帖子编号),他的数据类型设为“自动编号”   ]( M0 a( W8 I. Z

, T4 Q* I6 y/ J: E3 Mname(用来储存发表的作者),数据类型为“文本” # D% Q1 H5 \% d
1 g7 y) h$ O& f/ l7 n
title(用来储存帖子的主题),数据类型为“文本” " \/ d! ^" Y* a$ J8 [" ~# L2 ~
4 J2 a! _* H& p' D$ Y: K
body(用来储存帖子的内容),数据类型为“备注” " @% C0 i& L) s' R# |5 n) R

2 @4 o$ b1 A* R2、conn.asp : p; K% h6 |# S* ]! Q$ e) M3 ?
源代码为:
  U8 `/ Y4 y  |7 n<%
- K  n+ Y  K$ K1 U+ C# vServer.scriptTimeout="10" $ I7 y! H$ h5 t& B8 m
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
3 m" u! I9 X. W3 s" E. tset conn=Server.CreateObject("ADODB.connection")
5 M, c; ~3 X8 @" D4 rconn.open connstr
% O: h* Z  _3 V% b7 i4 ~5 Y& H%>
( J! ]! U" q. {0 o% O- [; ^+ K6 p7 {
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
9 u& n! b% m- m2 w" L6 X& G- j- m% b
% E; M9 j$ U# B6 m) |+ D3、say.asp ! k8 i9 d8 s( B7 ~2 N% R
# M' E* r! ~2 ?1 P  A
源代码为: % }  U2 c& e) \$ a
<form method="POST" action="save.asp"> ! I: x' n" n* e9 g6 n7 T' A9 s+ W
<p>大名:<input type="text" name="name" size="20"></p>
. s) ~5 T, B; U) v4 C<p>标题:<input type="text" name="title" size="91"></p> * r; l7 k+ [0 u( P7 ~
<p>内容:</p>
9 t; F) d( ~1 b. r" g! V7 U: n& x<p><textarea rows="11" name="body" cols="97"></textarea></p>   `6 ]: ?5 }" V7 o1 V, _1 c
<p> </p>
. M$ P/ t' s! t<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 5 N1 \$ {8 E, q' ^2 J0 w# q
</form> + ^" X) q5 X4 u
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
7 E: O. m  a1 G- \不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ! G3 _0 B2 {  u& H0 q; Z: d8 c. ^0 Y

* z8 w& W( Y# H3 L" B9 m  w4、save.asp ! i# z1 w9 [4 g8 e( I

1 A' Y1 {% B' A- u3 Q: E源代码:
3 ?" {6 a3 ]% o* x6 ]; I<!--#include file="conn.asp"-->
. n  P0 ?/ f0 }, ?<%name=Replace(Request.Form("name"),"'","''") ( r7 B$ t# Q: j+ l0 Y& z% s
title=Replace(Request.Form("title"),"'","''") ; f% C; [8 H! X2 a
body=Replace(Request.Form("body"),"'","''") % H% X$ h' u) e3 t# |- d% J
%> # {' t/ ^( Q( Z% Z
<%if name="" or title="" or body="" then%> 1 w7 `  t# o7 G- ?0 T* A
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 0 u8 P6 J* M2 [
<%else%> * I% N* q, y. T  S
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
! |% r0 G  c7 p9 l* t* ~  _( ]发表成功!<a href="index.asp">查看帖子</a> 5 ^8 U. L- B: d8 J
<%end if
5 v% f  E& u) K. Lset savebbs=nothing 5 ?( q* [1 ~7 D; Z' O
%> - J" r  I( i, l/ \( z
+ ]# d9 l" O. x- Y! w6 B7 b
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! - P: }8 S2 S; X9 c5 g4 B6 d
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
, v" A. D- d* ], Z1 e接下来几句: ' z5 A! I# s# M7 ]* i  [# X
name=Replace(Request.Form("name"),"'","''") 0 g+ C+ y3 V& }' k2 D9 ?- g0 F$ g
title=Replace(Request.Form("title"),"'","''")
. O! z0 j3 n" w, r# s4 `body=Replace(Request.Form("body"),"'","''")
$ ?/ |8 j5 o: B9 O4 X* }  _- ]- |- \- Z& v
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 9 I4 p, v8 E* n8 U
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
: g* v) {  A8 [如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
& a' A! L9 C7 g就是把表单中名为name的文本框发来的数据储存在abc123变量中 2 `9 M2 r6 x; O* U; Z1 s, p$ y

( n. s6 {6 a, I接着:if name="" or title="" or body="" then   F# F8 M& U) G: S' M; T
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
: {) G' O' l2 N“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 0 S/ F% T& V8 v; s$ r9 ]6 g
该语句属于html语法,大家都看得懂的!
3 K4 O* c0 W3 |3 }
) j. r6 t/ o, b6 R6 F"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
( \6 {. b! g) `2 [; @; \' }. j0 o“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 7 v# y- ~- l3 h1 @8 k% O; X& @
发表成功!<a href="index.asp">查看帖子</a>” 0 c, K3 I8 l$ y+ W  e/ `, j

7 m  `: V- q$ S/ M* h"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: % U: t% }% E; a, i4 _1 ?
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 0 s) [8 a% l! S/ p) k
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") , _7 J1 F  |+ V9 S2 E6 }2 b& y
values是“值”的意思
% q5 {, }! I% f/ b  K2 q就是插入向量name,title,body,向量用格式'"&name&"'表示 3 i, g, j. H  F! m" `

: ~: x& ~( y+ n! H0 W  O4 b: S最后:end if就是结束if……then
; ]  X0 _/ \2 e! z+ o0 s( Oset savebbs=nothing可以说是关闭掉: . B0 ~, _2 V, ?- Y. q- u. \
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 8 E* x, l+ z3 b+ T0 p$ M

% s4 O/ g8 G6 b/ j: }# v
; _7 x) ?7 c  y9 U3 o% ~: }5、index.asp
4 k4 d6 h" m" R6 ]* l9 R源代码:
+ x: l9 }* C0 y/ m<!--#include file="conn.asp"-->
+ w  A6 j5 F0 u<b><a href="say.asp">发表帖子</a></b><br><br> ! m8 k$ W. S" t' C$ Y- \; y5 z
<div align="center">
  P% p  n1 C/ H* e8 E4 E* p<center>
  b2 E8 Z! _' d) E. m<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
  o; m# c) l1 j' U" K; ?<tr>
4 G2 W$ F6 [! T: s1 W5 v  g; X<td width="17%"><b>作者</b></td> 1 U2 w9 u# K# E0 {! N
<td width="83%"><b>主题</b></td> 6 E* A% u1 }% p& G/ Y. i
</tr> 1 i! j5 L$ m# R- T
</table>
5 q4 b- J, O* R</center> ' }0 H: a- X: Y+ K. V; ^
</div><hr size="1"> ! u' j( }( V0 R& J* B
<%i=1
$ b0 {2 j* p1 x2 j5 y9 wset showbbs=conn.execute("select*from bbs order by id desc")
$ u0 X# }9 P9 [$ \/ Z# H( e$ @. N* Tdo while not showbbs.eof # I1 j+ C; P4 H% O) {7 Y: V! Y1 ?7 L
%>
, Z$ h/ y2 p: p3 @$ f<div align="center">
9 j* ^: h, P5 W+ A<center> , x5 ~6 g% [  E% \1 I$ ?, v5 v
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> ! G6 j, M7 p5 f2 r; d1 o% O( S
<tr> + [& p' o) q- u7 L
<td width="17%"><%=showbbs("name")%> </td>
7 G3 c+ r) v: C, p: x5 y0 ?  z<td width="83%"> % H% G2 f! d2 c" b
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>   D8 ]  n7 b0 C1 ?
</tr> 7 c4 P& m$ x8 r3 T2 P$ K
</table>
4 B1 g% j: P# P& v: T</center> * H1 g' E) Y0 B: [( r0 \* a
</div><hr size="1">
; ]8 @4 m# e$ l/ {( V) }4 p) w" N<%i=i+1
8 G7 a8 A0 y; k3 `if i>50 then exit do
; \) @: Q5 i/ P& W6 Eshowbbs.movenext 8 @3 `- o# h4 e, n
Loop
# H, A' T& [: eshowbbs.Close
: f  k$ T; z& i. O. l4 Lset showbbs=nothing & d6 y5 x. ^/ L/ s8 R
%> 6 X* ~) c/ g* D: Q4 I0 A- h" I  b
. F% d$ u; R* w7 [4 J& u; `
这个文件就不一句一句的讲了 9 N3 e: x7 r7 n" L& @* v
主要讲精华部分: 5 w$ w, K0 p/ H4 O, J7 n6 P
set showbbs=conn.execute("select*from bbs order by id desc") & |% O. ^9 a$ C3 w9 g# {+ f
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 2 o" i$ S! @" y4 I4 B- _
还有这么一句:<%=showbbs("name")%>
2 n) u2 I( B2 K* \: F' |- J. S就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
6 X( M1 r' M' _5 m* B$ Q2 y代码中的i=1和i=i+1
) B3 m1 x- F& X# K( j2 Sif i>50 then exit do
0 u3 ]. q  u. e1 ~1 ]showbbs.movenext
% B4 \6 y, Y3 O+ P% d8 d5 lLoop
& c$ f8 b+ N, [  G  Sshowbbs.Close
+ q3 V" v: F6 wset showbbs=nothing
% }; l( Y. [2 l+ ^/ U
8 L; Q0 W2 u) e( y" p3 s这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 2 K- N$ S* @8 \; L  l- c; i) i
if i>50 then exit do中的50可以修改 . ~' A) Y, l; U5 o
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
  F9 d& X9 }) ^4 a还有一句很有用的: 1 k" t: }) M: ?1 `' a+ P3 a
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>   }3 @+ u$ v2 B8 {/ L# K
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, % d2 w: j) ?. M
等一下在show.asp文件中就有用了 ! E9 ]9 p, o; v/ L- E
; G* `$ k- k* l! D* W) m  w
5、show.asp
& N* e  b6 Y; v  \; }( l源代码: ' e( S0 y: I9 N) J% [& R9 i7 I

6 Q. z. z  U$ `4 M# i<!--#include file="conn.asp"-->
5 w4 V' t/ g- X+ T. U9 Z# U<%id=request.querystring("id")%>
3 U% P( x# [# t<%set show=conn.execute("select*from bbs where id="&id&"")%> - o. Q7 n7 ^8 X# `4 I( Y: a
<a href="index.asp"> + E& b  e) s2 r0 o# W, M8 H
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> ' M( F% `* y0 V4 @8 {
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> - i7 \( Z- }0 ^: j) _+ r
<tr>
6 I' t: C% E; s" F  c" p( ]( i! t<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 4 n7 _: p5 t- o1 o
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
" S4 b( ~2 D; z9 P$ E; s( u</tr> 8 b; h1 r/ z2 Z9 I
<tr> * p0 `# S8 C1 ?6 k% a; l0 S
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> ' q9 k1 o* `2 a6 ~) @& g8 }
</tr>
* O8 t9 e7 u) N  `( Y0 E9 M% w8 q" G( x</table><%set show=nothing%>
- u, t1 n4 r+ G8 A/ ~1 x' W* u5 Q, T3 C* n/ y3 {$ W
劲语句---精华语句: ( b: T+ `9 R4 ^
id=request.querystring("id") , h# U) _: O# ?% g2 \' Z
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
0 E  w' q( b( ?# M+ d2 ?) Fid=request.querystring("id")就是把地址栏中的id的值读取下来, 9 g& u$ R3 h' l1 p9 ?
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 2 q# U5 N0 Q, x3 E# b4 l
所以show.asp使用id=request.querystring("id")语句把数字读取下来 ; @/ A3 W2 w0 R7 W
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 7 Z, d, A1 `/ u7 b
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
* S) ]( w# V8 Y4 ~7 a5 W# S最后<%set show=nothing%>
/ }+ `" `! U6 w! y( N# x. J
$ k3 W8 Y5 G/ |& c0 W好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

返回列表
【捌玖网络】已经运行: