返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
2 a2 p3 _: ^) X1 p9 D真NB..佩服ing .....4 V  y! e) l$ k2 j% T6 B, `3 J) Z; b
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
1 F# G" E2 p3 s! V
& T6 m9 T7 u% h; Y' {* g同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ! b2 c$ ~6 T& i  }6 X
6 B: c& w7 K6 f& b4 D$ c
一、建立文件!
0 ^2 o. _9 ?: w5 R& `! G# r最简单的论坛也要有几个必要的文件,就是:
6 W  Q1 W# U+ t1 y2 D8 E
# E# B1 p! Q0 t% r! n( _/ r# _1 u1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb % B$ J) ]  T( S- r4 _
4 `3 X4 G) i5 \
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp % |# F0 D4 w* t/ t
/ T; Z" f! X, o& c- L$ e
3、发表帖子的文件----命名为:say.asp : W2 m, d1 H6 X- U& a

. h  j, ]5 h- E% R/ T4、保存发表帖子内容的文件-----命名为:save.asp 8 Q2 B) T- I% f/ p

& C" P" Q7 ^7 b5、显示帖子标题的文件------命名为:index.asp 4 y, n; N4 i0 A+ Z2 |/ [

; \) w# \* E  P7 P6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
% g5 g3 e8 j2 t! |" d( b
2 S7 C$ C  p2 P/ `* X6 D  X/ v! [建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 2 b  f9 L/ B' \0 `

1 e- q- I! A$ s. a. {7 x, F( C二、各文件的主要内容
5 s: [& h; e( V* |" D/ d- r! d( V- d* A
1、bbs.mdb ' m: B0 K- ~: v& ]4 u( s- D
' _, j1 p2 K8 c7 J3 ^; x" p
打开这个数据库,建立一个表,命名为bbs 4 o0 V# v$ ~8 U! |. ]

- R4 M& T1 x4 `6 P该表中有几个字段:
. x3 d4 |6 f" V8 i0 E* K/ H8 F; b& |5 d; P9 S, t* J, I
id(自动给帖子编号),他的数据类型设为“自动编号” 6 G1 i  ]  Q6 w- P- ~
6 J4 E* i( k, R+ R( `+ d/ {
name(用来储存发表的作者),数据类型为“文本”
1 C' E# x4 p+ C* c* _3 Q4 J! o9 m. I7 e; ?& \3 o+ [5 u4 P. V, k
title(用来储存帖子的主题),数据类型为“文本” $ ?  s. R9 t) @
& }. l  g+ s+ ?5 K
body(用来储存帖子的内容),数据类型为“备注” : @+ y2 v  b% p# U: H/ {7 K
, J( k. z6 D# {2 D
2、conn.asp 9 k  @; f6 ?' p# Z/ a1 l; C% b
源代码为: " W( d- r9 |# B4 p$ z
<% * S: K( k  R  B& R; I2 i
Server.scriptTimeout="10" 5 I. n0 S4 t) a4 u
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ) m- L+ _2 o" C% y
set conn=Server.CreateObject("ADODB.connection")
8 J0 D7 G/ n) N& mconn.open connstr
5 L! v7 T4 s6 w, G! k& b6 j. z, E%> * y+ _$ X3 F. A: Z4 \" H

! D8 e* Y. x! k. Y" K, ]  m这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! * w3 L$ x% l1 t+ k$ v6 y4 ]# t
7 M' d. y: J" f3 @% k
3、say.asp * z6 i( \5 j$ C) h1 K

4 I; [. L% i% y: I( ~2 M( a+ I5 k' ~. P源代码为:
$ a. ^1 C/ l4 t7 r* i' a$ t( {5 J<form method="POST" action="save.asp">
/ K0 h) j0 F9 c4 s<p>大名:<input type="text" name="name" size="20"></p> 7 I* r. f! C: m: U
<p>标题:<input type="text" name="title" size="91"></p>
/ l$ e8 R$ D, u<p>内容:</p>
7 r7 w6 M) x# V<p><textarea rows="11" name="body" cols="97"></textarea></p>
! f) e- P/ T) y) `4 u: j: U<p> </p>
7 {; M* h' D4 a, ?<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
. s! }8 e$ g+ y% t</form> & g: b8 d& @. X2 j* Z8 _
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 - f  v' u5 {% J/ S' O6 r- u
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
- R2 ~7 S3 }2 Y7 x  `1 Q5 y3 S
- \" }0 ]3 N0 y4、save.asp 1 `+ ?% h; C8 _% R  ?
# t& y4 V5 s- W
源代码: 6 h( D! `( _. X: P0 B; J
<!--#include file="conn.asp"--> % p8 k) Z/ D2 d( [9 m
<%name=Replace(Request.Form("name"),"'","''")
* D! }* T: y" a8 [  X0 Ftitle=Replace(Request.Form("title"),"'","''") % m3 V( s; ^6 Q# P* ^
body=Replace(Request.Form("body"),"'","''") / n2 U8 f( Y( M5 f4 j+ {, q
%> $ A4 i, ?: d/ e9 h
<%if name="" or title="" or body="" then%>
% c! ]5 U4 x# r$ X" b4 W9 Z1 f请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 0 P' M/ P/ n, [8 @
<%else%> ; [0 |3 Z, Z4 B5 J
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 6 T) |# P& C! I2 R7 V; _, c
发表成功!<a href="index.asp">查看帖子</a> 6 O8 N) U# K* W5 P9 _) C; Y) ]
<%end if
6 B' O% p4 B& c/ Zset savebbs=nothing + a4 b6 T: f; K0 H- D8 ^) o) X
%>
. y, l1 |/ u+ [4 v' n7 C) s, _8 s1 `0 u
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! ; ~# |) k% Y  t1 P* y
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
6 H9 t3 K- B- L接下来几句: 9 f* y# M( V1 K% Z5 x3 F1 ~6 [
name=Replace(Request.Form("name"),"'","''") ' j2 E# h1 ~7 H1 p' f8 B: h; V
title=Replace(Request.Form("title"),"'","''") - y/ A: a/ I8 f" s, x2 X7 r5 V3 h) a) B
body=Replace(Request.Form("body"),"'","''") $ T. L, z4 S, i5 o$ @, p/ }

( c! h5 c6 r6 V) Q; E; P7 e. w, R“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
+ ^+ V! c. q1 w, P  g# n; k7 [# W而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, % M: X- v* N+ h+ _+ F* j1 S/ Q
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
0 M7 s0 G% |8 a% S+ `就是把表单中名为name的文本框发来的数据储存在abc123变量中
- _/ p1 z2 E( ~5 o4 f
& @1 Q+ ]+ [( Z( [' |: U接着:if name="" or title="" or body="" then
+ z9 ^4 M$ u% R判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
# U, G7 f4 ]2 h2 K7 k“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ( O6 q8 O2 x( V6 ]8 y
该语句属于html语法,大家都看得懂的!
$ H, ?5 j. w8 p
3 Z% \' v; p9 P3 O/ j"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: % T& |/ f' Q* I+ n5 Y$ U2 A& X
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
1 e3 F: @8 f$ i/ E1 k4 E$ i' q发表成功!<a href="index.asp">查看帖子</a>”
, Y6 ~3 ^/ P4 D  H. }; m, J' _* J6 G: x, o9 |! L( X; j! r' h( d' P! |; K
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
+ W! b7 M' n8 `( s5 P$ B8 linsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 2 [/ \& o! s; v- y) l
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") # U+ I0 M2 U2 B- S/ L
values是“值”的意思
$ p! q8 c) V! p+ o5 q就是插入向量name,title,body,向量用格式'"&name&"'表示 - ^6 `; N2 p. o

4 x+ B% o& u6 t; d0 K5 K最后:end if就是结束if……then
$ y, ~0 c5 O6 xset savebbs=nothing可以说是关闭掉:
$ W! y; q! ]) h% s& E5 N* ]. f* Jset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ; y" ~6 z! `, ?/ D' N8 \

2 i1 v9 }( S' ?, _. v: i- o/ c; u* D
& S5 ?7 Z. O9 M7 d! d/ R6 b+ y5、index.asp 4 ]9 k6 }0 ]1 e! p
源代码:
& B8 `' ?# D3 ~+ j/ ~8 E, n<!--#include file="conn.asp"-->
. c7 |, a7 F, F- w7 i<b><a href="say.asp">发表帖子</a></b><br><br> ' a* g0 d9 u  y& [/ L' f& p3 r
<div align="center">
! y! J' P: t6 {; X& W9 a* W<center>
! V2 l! G# n& w& V0 U# q, {<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 5 ?8 K) b2 d3 ]% e2 g2 u
<tr> " Q8 ^" y# ~/ }! f
<td width="17%"><b>作者</b></td>   {- w. m, e' i) D5 L/ `/ s
<td width="83%"><b>主题</b></td>
8 t* P9 G) l- i" ^) t</tr>
8 {% F3 C4 K% d+ w</table>
, t( U1 c7 ~9 i8 T. E1 F: Y</center>
$ t) E" P1 R" P' i& U& |+ j</div><hr size="1">
6 w' h8 k( [. F6 W0 p<%i=1 ) w& G* [. {4 g; z
set showbbs=conn.execute("select*from bbs order by id desc") / y  s) S4 x* h2 g, Y
do while not showbbs.eof
6 {* s. R7 s! _# s& g%> 4 f' O% n/ ~5 Q, k2 O+ t
<div align="center">
! T+ Y$ R9 N# [% p; p& L! ~3 _<center>
# M; r% `( n1 H3 ?  V<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
" d% c7 u+ Q. F<tr>
9 m3 \/ @; N! h$ r! E<td width="17%"><%=showbbs("name")%> </td>
5 Z- u5 E$ S, a, {1 q& t<td width="83%">
+ H# V5 p1 I* c<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 6 `. w' h" ^: \
</tr>
9 v  {9 f2 e" X$ N/ V</table>
, g; f0 W, w! z1 `</center>
2 O# ^( U! O4 }1 b: L$ U</div><hr size="1">
. Z0 `+ }. M. l7 T* ]<%i=i+1 ! Y" X2 n8 e4 Q0 Y8 T
if i>50 then exit do
  H' z2 i* u/ O% ], V5 x1 @) fshowbbs.movenext
8 ]# k& Q* M5 l$ X: d0 _. \Loop 8 ~0 h1 t( r" _  Y2 `
showbbs.Close
! i* b. I' r$ L  P" w9 n) zset showbbs=nothing
5 M0 Y% W; P! f8 Y) O/ H* G; n%> ' n) a1 _% A6 o7 {" H/ S" Z, r; s+ T2 ~

$ ?- ]( _( q9 C( H这个文件就不一句一句的讲了
( G& E8 }; k/ Y5 }) f9 W, A' h主要讲精华部分:
/ V" V0 @$ v$ V5 e6 Kset showbbs=conn.execute("select*from bbs order by id desc") 8 s& U# I9 H6 G% @% h* ~
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
% F7 y) z# U/ K5 F- N# K还有这么一句:<%=showbbs("name")%> 5 V$ L% z7 Z, s" U0 L
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs , R2 c. F! J" j2 {* ~/ P8 f
代码中的i=1和i=i+1 . X# v+ [. K2 d$ |3 i
if i>50 then exit do
8 B4 R  T8 ^: h1 \7 qshowbbs.movenext 0 f2 K7 f1 |, }
Loop ) ?: w. F) l- \5 z0 g* D: `
showbbs.Close
8 s$ v6 @* P# V- qset showbbs=nothing - [) [9 z/ a* i: N8 C9 {! b- _% \

) a* I" H. B8 {# z这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!   z3 C, S/ M; _. y
if i>50 then exit do中的50可以修改   q: `" x" ^( P  o/ p6 w) s( ~
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 " p; L& S' u1 K& o$ u  E
还有一句很有用的: 1 K! b* R5 }( p
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
4 L7 x: k$ {" o; L  J" S1 |里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ) E+ ~8 _! N9 ?3 a0 Z- W
等一下在show.asp文件中就有用了 " l: W5 v2 M# g3 @

6 m5 X* G' D2 y; ]% y7 t5、show.asp & ]; J- C% Z# E
源代码:
  A' @3 [$ K+ n; b+ [
/ u' _* E* Y& B4 @1 C<!--#include file="conn.asp"-->
& B* f. Y9 B0 o<%id=request.querystring("id")%> - x% K/ M+ L% r+ S7 e5 n3 z
<%set show=conn.execute("select*from bbs where id="&id&"")%>
% O# E7 R) l/ ]4 H: A/ B; D! \<a href="index.asp"> , C6 L3 ]1 E; ^# r7 J1 q
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
  x6 d7 G% ^! h9 [8 B6 u<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
  Q' [4 l% x/ P8 J6 Y<tr> - z2 C* n, K. o
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 5 Y! X% ]/ g9 Y
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
( X6 l8 s0 E/ l5 Y: V</tr> ' g: ^4 @; I8 V6 D- _) H2 R2 q
<tr> 8 N& o; P+ |7 Q- M: G
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> % }( @6 o$ s  L4 }6 V2 i
</tr>
9 `  M# b5 u: T! F; s3 t" I6 P</table><%set show=nothing%>
0 l6 w: p: s9 W1 x0 b" K  S' h
9 E! M  S+ E: }劲语句---精华语句: 2 h: M8 b1 r0 j
id=request.querystring("id") ! g7 ^  {. T% ?6 o
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, # J  l( N( F4 t( }' u
id=request.querystring("id")就是把地址栏中的id的值读取下来,
/ _' z( L: `6 l因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ' z  _% A; l: B$ ~" P
所以show.asp使用id=request.querystring("id")语句把数字读取下来 - i  F  t! `( x2 P
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
8 k7 o- B# T! P" h& m0 G向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
! A+ L& ~5 |& I, F9 l最后<%set show=nothing%> 8 L' [- A2 q# L1 W4 l1 f. X+ \
4 m' }3 `; ]# f+ ~$ u- {
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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