获得本站免费赞助空间请点这里
返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
2 r+ ]6 {9 [" Y* f' P2 A0 ]4 \; e真NB..佩服ing .....
- p- z1 o8 \8 [大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
! U  r! X. N+ A4 M  ]& _
9 w6 r8 G5 c6 @同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 , [5 ]+ B1 i: w  t

3 `8 d! G. B' V; l/ D/ t4 l; @8 f一、建立文件!
& A+ \; J' {7 J最简单的论坛也要有几个必要的文件,就是: , o; u! v, V( v
* ?9 N( I6 y3 y" O
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb / E- r( Y5 y) D* J3 B, R
- k7 ]9 ~% f7 t% k7 l8 I
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
4 j! L# E1 u! n3 Q/ c# ^* M5 H4 j( W  \1 Q/ P- f' [$ `
3、发表帖子的文件----命名为:say.asp 4 Y" H8 T7 U4 n' }" W0 Q
! [& q( i# U0 o+ |" i; F) D
4、保存发表帖子内容的文件-----命名为:save.asp , Y$ B# W! y6 I* K
/ [: j, t2 ~, ^+ [! X7 K' \, B
5、显示帖子标题的文件------命名为:index.asp
! |- |# `6 j' B
9 W# O% D7 O# f1 F6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 3 l. i7 f1 Q/ x/ v8 j/ v9 W
( u2 N( u& L5 T8 i( i- h3 Y6 W
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
- Z* ^; u+ F9 v' {/ j3 J9 h6 H. k" q: G' U- n4 k
二、各文件的主要内容 ! G) m3 Z8 W& z) S" r" V

& p' I9 H$ Z5 O1、bbs.mdb   m/ f2 N& }) t
5 B! h  t% r" S* f
打开这个数据库,建立一个表,命名为bbs
# k& B. Q5 C3 G% Y% D* N1 f. j- N/ I- I6 V. C" M
该表中有几个字段:
" M7 c- G( V( |# P- K
2 J2 W( m, M6 B8 M' bid(自动给帖子编号),他的数据类型设为“自动编号”
% P0 E8 S/ p6 S5 l
% s! ?* A# k6 t9 m1 aname(用来储存发表的作者),数据类型为“文本” : G3 Y/ \& J9 q
+ Q- V% C/ z. O2 L) I- D: |
title(用来储存帖子的主题),数据类型为“文本”
6 z5 q- Z+ R1 B7 \2 o: w5 t
6 f( D* ~- x8 s1 c/ H* Rbody(用来储存帖子的内容),数据类型为“备注” % |. U2 k1 K4 i( q' J
2 n* X5 y+ Y) G; q1 h9 Q- P' e
2、conn.asp
* R; ^9 z9 H. {5 i; g源代码为: ) g+ u  u8 [1 P; r
<% 2 q6 I& J8 b3 A: _5 b
Server.scriptTimeout="10" 6 k+ Q) Q1 @# s) Y+ S
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
6 y6 V9 F$ y( f1 a) J- Jset conn=Server.CreateObject("ADODB.connection")
5 Z+ ^; `9 D0 ^1 F# _  nconn.open connstr 2 q# b+ q; ]7 T' f8 {
%> , u+ d/ v8 \5 e

/ x& S0 \. p) S3 l- `这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 8 c: R7 W$ C1 [; [9 p! P  s

$ b, g  R& [! m: O0 E7 f7 Z7 K3、say.asp
& g% n' V! a* N$ r: s% j6 C$ A
% Y" N) u. T- y" Z源代码为:
: j6 n' F9 L& \0 g# S1 E<form method="POST" action="save.asp">
& f# w3 L/ Q' ~$ I<p>大名:<input type="text" name="name" size="20"></p>
+ f, p# q1 T+ u$ B! q1 q% i<p>标题:<input type="text" name="title" size="91"></p>
0 M3 M+ l; D1 X<p>内容:</p> 8 A. e9 r- q3 d
<p><textarea rows="11" name="body" cols="97"></textarea></p> ) V; ?4 O! l) H$ u4 O
<p> </p> . e: L/ T  I# K! X
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> # H% C+ _. H7 V, R
</form> & c, {' r! R$ H/ C! n# F3 \6 p
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 1 X* b! l: U, w
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
! `0 E) ?# ]* L+ E
$ O7 T- l7 F7 b# I- K6 q4、save.asp : S* q2 v) `5 n. U/ z

' S( a% E) E; c5 ?' H) N7 l& ~源代码:
; l8 z+ t, ^& Z, i5 O2 s1 G<!--#include file="conn.asp"--> ; m& V6 ^! w- k
<%name=Replace(Request.Form("name"),"'","''") # _3 B, d! R5 e" o" y9 m
title=Replace(Request.Form("title"),"'","''")
& u3 w$ N+ Q8 b* _0 @/ vbody=Replace(Request.Form("body"),"'","''")
' a4 R# L9 L  M# H%>
% S5 f2 a6 @/ ~4 [# F<%if name="" or title="" or body="" then%> 9 M) r' T9 o' e1 X+ `* v
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! - o3 Y0 \8 @) f$ J) P% z
<%else%>
2 }0 k, U, L; B; X8 x<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 2 O  X* Z6 T+ Z3 l% D3 j: g; c; i; }4 @
发表成功!<a href="index.asp">查看帖子</a>
6 m5 u) S: h1 i<%end if
# E- l3 m, F; }( j3 Pset savebbs=nothing
2 a  Q1 O3 j& L+ d%>
" x" b! H- e3 R% h5 d+ x
( c. [0 Z/ Q  }第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
9 ?9 W; Q0 i9 B3 |3 Wasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 0 ~" q: h: F! T6 `8 E! g
接下来几句:
3 |" `+ }0 M5 U" ?name=Replace(Request.Form("name"),"'","''") - v( S  [0 `* u8 T/ k
title=Replace(Request.Form("title"),"'","''") 8 Q# x  R0 z. M. Z& v
body=Replace(Request.Form("body"),"'","''") - U" J( ^- {1 ?1 Q

* r3 y' H/ H$ V! V- ]“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
. x5 {5 T5 `% f1 ]" X1 V, _而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 1 f9 a) L5 d2 ~  Z0 y
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ( T' Z+ X& ~- i- i$ v
就是把表单中名为name的文本框发来的数据储存在abc123变量中 , m3 U+ Y* K: [' D7 ~8 J* v
" j3 p4 M+ Q1 D5 Q" ]$ T+ X
接着:if name="" or title="" or body="" then ! r, c1 Y2 U6 [5 c3 O! V
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 3 Y/ p1 `+ L1 \! Z  h
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” . g1 d# X( x/ p$ Y6 |
该语句属于html语法,大家都看得懂的!
2 R) _2 G; m- M1 t9 R' Q8 c' W
2 r1 i4 M$ O! Q% U- s- S$ O"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
2 R7 F- U9 K, V& q" A5 q“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> . Y/ ?- }4 h- d6 o
发表成功!<a href="index.asp">查看帖子</a>”
; G0 q3 d" e- x/ d8 s  p1 j( A+ s8 A6 F$ d; v
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
: I3 g7 l+ u6 h2 U/ T$ e. c/ Zinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
3 V4 R/ z  D6 n2 q/ o' w8 m中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 8 r% I+ E' W* [3 L2 W9 w9 ^
values是“值”的意思
& u$ F. G- p. d/ i8 `就是插入向量name,title,body,向量用格式'"&name&"'表示 3 l( ]; U% i- C4 {& g  I2 Z  n

% d* h, \; T2 }$ p最后:end if就是结束if……then
# j8 a3 N6 R8 N. B" }2 B" `set savebbs=nothing可以说是关闭掉:
$ G: j6 t* g0 i9 L- d) ~set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
6 A1 b. _% b5 ?" X# N0 g) j  `0 |: e% n" x6 O% @& }& h! J& _
0 u; U. I3 N% k9 s  l8 Z. E" q+ t5 d
5、index.asp
8 f4 U& [' `8 j" L源代码: 0 K0 ]' K& A$ B) B1 [7 o8 r
<!--#include file="conn.asp"-->
" [) p, R8 W$ s( F6 O, ?+ N<b><a href="say.asp">发表帖子</a></b><br><br> & V4 t6 m) K5 K2 A
<div align="center"> ) j1 Y' Y) B; e2 T, Y2 Y
<center> 2 N; i7 p' C3 N1 ]8 k4 X5 N
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 4 B' M- p  g! [" V6 z( |
<tr>
6 o' L: `& e& ]# U# V7 {) n( q( e<td width="17%"><b>作者</b></td>
0 s7 L* S6 x. Z# I: E- e; K3 I<td width="83%"><b>主题</b></td> % g2 u- e% x6 K: n
</tr>
% P, r: q' y% @9 \: {) `& e</table>
% w: G/ d$ p/ E$ B0 C" @</center>
+ x: Q% R/ D) G7 t) g/ b1 p3 i' E</div><hr size="1"> 4 _: u' d$ ^1 p: z
<%i=1
  O6 ]8 c4 \+ _' y1 Dset showbbs=conn.execute("select*from bbs order by id desc")
4 n) c! F6 G6 z5 Q# g+ X# v; Ldo while not showbbs.eof ( T2 C/ _; v( Y' ]) T7 v2 s
%>
# V+ o4 D2 m7 Z- _<div align="center">
. b8 q. V) Z$ [% _3 h<center> ! c" C5 j6 M6 r- U- K) \7 ^2 Y) ?
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> ' g% _8 q- h4 r4 o" E
<tr> / U6 }" t5 c* H% k: R( X; y/ @
<td width="17%"><%=showbbs("name")%> </td>
, Z9 [0 j6 Z7 ]$ a<td width="83%"> / M3 _8 L% o. }8 X  Q
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
0 j1 d5 l& z& Q# }- P& n8 ^4 k</tr>
, i0 D& t! `$ h4 j' i0 ?  v</table> ' I9 B1 `. j1 {4 S8 a
</center>
( M2 `! z) B9 a' [</div><hr size="1"> ! g& m/ s( z& p% r0 r+ y
<%i=i+1 & n3 ]# V. E. F3 _4 m
if i>50 then exit do
0 C4 g  H" }! }0 ]* y6 Mshowbbs.movenext * E. p" W( r1 P2 I1 v
Loop
- @; F: ~& l. U" [% wshowbbs.Close
& t- @+ i6 }6 t/ E. n9 zset showbbs=nothing
4 H; f% V/ C# _' v6 t- [9 q1 z%>
3 ]( t6 _3 l9 G2 n3 T" S. W$ u7 Y  N
这个文件就不一句一句的讲了 , i0 N, N1 g7 ?: \" d- }' _+ u% L
主要讲精华部分:
. V. H, l+ _6 u, y: Xset showbbs=conn.execute("select*from bbs order by id desc")
6 r8 |' O7 e: M) j意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
& `  P! D+ @+ J) |还有这么一句:<%=showbbs("name")%>
* D9 O: ]+ E  C/ J# V8 }就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs % p1 i2 U7 r% A+ z9 A
代码中的i=1和i=i+1
: p" S/ e0 u$ e# J: j4 S) pif i>50 then exit do
2 W8 i& `9 E$ A8 ?showbbs.movenext ) j) e3 d: t) F/ P
Loop , A5 A$ z1 x5 D; v/ p' ^7 y
showbbs.Close . F9 N" n. {0 i# T! O  v6 ]  B
set showbbs=nothing   t& r7 v$ f2 L8 b

, z0 s7 [+ j% v1 x( e8 o5 Y这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 9 {6 |2 M* Q' S  E. x
if i>50 then exit do中的50可以修改   @1 P( E/ l/ q6 _6 b- c* E# L
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
" k) C" b2 }4 i+ Y还有一句很有用的: ( i' s. p& A/ ~; n* `8 }( S- w! T
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 2 S; B( s" M7 S. i2 F5 n  c4 e/ U
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
( S  M7 a/ W9 K0 n# I/ Z; x8 b) d等一下在show.asp文件中就有用了 & [1 e' o8 W% a* P' h; P
1 \! ]& ?" E; j+ }+ }* E
5、show.asp
$ n9 e9 T& T; k; E0 n. I源代码:
2 U4 b4 ^6 _8 z: `" q) t6 Y# k- M+ k, j
<!--#include file="conn.asp"-->
8 [8 Q4 F3 r* `2 {+ T<%id=request.querystring("id")%> " Z+ }' ^  |8 ~2 u1 O
<%set show=conn.execute("select*from bbs where id="&id&"")%> 7 m# d% D$ M6 q9 c* ~. r0 {
<a href="index.asp"> 7 m  B$ d7 C& U, T7 p" K  y; J
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> - u2 F5 @# L+ z0 P7 J4 }' O0 |
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> # R. z0 x  ?1 j  z9 t, ?+ B
<tr>
, m0 S2 d- Z, i<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
! k8 Q/ k+ v9 @<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
+ U' Q5 S3 }2 t2 V+ _$ l: n: b6 e( m</tr>
0 p% M) R# Y/ K+ M' I7 Q<tr> 9 O, Z/ o- Q3 H% ~7 o# Z* s
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
. o( }4 ~) v- W</tr> 1 O  t0 T  Z+ t
</table><%set show=nothing%>
) Q9 }$ u! `+ Q8 Y  T4 D/ W( j) J. ^
劲语句---精华语句:
8 x2 V5 f, k  _4 W. |) tid=request.querystring("id")
8 s5 A% ]9 a) K6 ?+ \' A6 L) {1 o在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,   a# c: E. {. G  ?
id=request.querystring("id")就是把地址栏中的id的值读取下来, " H. \8 J% h7 e2 a& O. N
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ) \( q5 @1 B! I5 I
所以show.asp使用id=request.querystring("id")语句把数字读取下来
8 O: q- d; h4 a" u于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
3 |2 u7 k3 ^/ u, r& H- M向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" / f: `" ^9 M4 ^% o- j
最后<%set show=nothing%> ' A1 r* R* |8 e7 h2 c
5 }: Y1 b# p6 R5 W2 s5 K( u
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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