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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西( f: M! p& W2 A; y2 c
真NB..佩服ing .....; O5 `9 I+ I/ b2 a7 l: e
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
! v: @6 u" e1 i% d  h9 s8 Q" v# u6 _1 b% {/ i
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 " J/ |  ?* f5 l5 Q3 O8 s9 e! D

6 w: e, \. z# p7 K一、建立文件!
/ c" A: q, V: @7 h  }+ J9 Z最简单的论坛也要有几个必要的文件,就是:
5 m' }) S' ~5 `
' G$ q% C1 T, r' B1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
, p& c5 A+ {/ |+ {( y. {5 e3 p* r5 P% k0 M7 N, o( ]9 a0 H
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp " A& w* u) A0 q5 J, x5 T. `

9 S1 z' o4 B3 w3、发表帖子的文件----命名为:say.asp 3 v2 K- O- q. v- k

' X) }* @9 D' e8 @! i* g3 \" |& f' |4、保存发表帖子内容的文件-----命名为:save.asp
# m) `$ d2 M4 r: n) n; f6 v& p
* g+ x$ i! S- L/ T5、显示帖子标题的文件------命名为:index.asp
1 p" {3 u6 N- H5 r
8 T- L" h( L4 t' e- d3 W6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 4 x# x) E. y  E
" m" B# w# m- D3 w2 m3 \! B* @) H
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 1 a8 m& F) l* S7 t) C( B

: b0 c5 O; }9 ?二、各文件的主要内容
( I- Q, `# T2 E/ c3 m- S2 k7 z1 v; |
6 ~$ \, K" }, I: c1、bbs.mdb
/ y6 c& b: h2 N5 D9 T4 W7 k  ?. T, f
打开这个数据库,建立一个表,命名为bbs
0 @2 p6 |3 P. F
6 {; H' c( E1 Z" n/ X该表中有几个字段:
6 G3 e( h8 q+ |9 X% O: Q- c! X! q  R9 |2 Y# `
id(自动给帖子编号),他的数据类型设为“自动编号” 6 S/ i, z) b; z4 Y% C% T. |$ O6 }

! P( p1 g5 h, |( _$ A. O1 Yname(用来储存发表的作者),数据类型为“文本” , ~6 [1 v8 R# s! ~9 B

3 M5 D6 ^# t2 y! l/ K  I; B- mtitle(用来储存帖子的主题),数据类型为“文本” ' Y! v1 z  C. q( E8 h  V2 F

# l" ~: q; _' \' _; K, `body(用来储存帖子的内容),数据类型为“备注” # Q/ V" f. S& P( A+ a2 q( y
) M3 ~. D* p9 a
2、conn.asp 1 _" y7 ]# |, Z
源代码为: ( g! J# ~2 v% f% I
<%
6 y: I: R" }# c8 H" M: QServer.scriptTimeout="10"
$ e# ^; r# [0 R" h" r) [& ic+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 2 |6 r. h9 Q8 e) W# ~
set conn=Server.CreateObject("ADODB.connection") 9 ^* L1 N- A4 h0 f8 N5 d$ I
conn.open connstr 9 P  _' P' ?7 X% Y6 p  ?+ s  M
%>
* f4 H) `+ W. n. f0 g
( v/ u2 t% t5 r! a这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! / |3 x& O& _* R1 A. Z8 I5 m
+ E. [- X' q  K, O# ]
3、say.asp
  T5 k) t* B  b( r5 x& a' u  P1 i/ ^! p( u+ x
源代码为: : l! S) Z; i" ~& H# u, N7 @6 l
<form method="POST" action="save.asp"> , n, l" \% D  C
<p>大名:<input type="text" name="name" size="20"></p> 1 C& e4 o/ A7 K2 B: a8 j
<p>标题:<input type="text" name="title" size="91"></p>
+ c8 v2 N/ b: V1 O0 d* M<p>内容:</p> + _! X6 ^( {% m4 S. |# [
<p><textarea rows="11" name="body" cols="97"></textarea></p>
  \" `- n; g: _. b' |7 g# J<p> </p>
; ^% z! }. e6 a; l% f! E. {<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> - y) e$ o- o# F, G+ i
</form>
  f4 ^4 v1 P" {! t* i* Y大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 : F* t5 b% [! ]* F! R
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 2 S$ E" n: L$ ^1 d8 a
2 m; l' b4 l3 Q# g
4、save.asp : k1 a. N& V4 Q1 x
2 b2 F- b3 u- a: r0 f; O# O
源代码: 4 \& N' L5 ^' q$ O8 U0 U
<!--#include file="conn.asp"--> ( V0 I% U$ g( f
<%name=Replace(Request.Form("name"),"'","''") 1 H! l. M& E* _; l
title=Replace(Request.Form("title"),"'","''")
" v* d2 S$ X4 A- ?% s% \( `/ nbody=Replace(Request.Form("body"),"'","''")
2 l: F# K7 V) s6 r%>
( A! W" D& _1 y; a! o* Z8 i<%if name="" or title="" or body="" then%>
! Z3 r3 |3 {% ?: L7 U请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! / h+ P2 H- l! H8 ]- U- T
<%else%> ' n4 T& n+ ~. Z8 m5 S
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
( C0 g& b0 J$ I发表成功!<a href="index.asp">查看帖子</a> - Q% ]# H4 `& A7 i6 Z& S
<%end if
$ @, c+ i5 s3 F/ Lset savebbs=nothing , G: q! u0 |" k# L( F% I- D
%>
2 d9 \8 X) L" d8 `
9 M% q+ T3 U2 a7 E' {第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 2 h& B' i" H9 g4 ?8 R4 s' k4 V9 M
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
3 r6 _) X( Y4 Q接下来几句: ) t: Y) K" n2 m, a3 w
name=Replace(Request.Form("name"),"'","''") - X5 z: O7 \1 S+ I8 J. J
title=Replace(Request.Form("title"),"'","''")
6 G( i: P4 m' s" b4 J! |5 wbody=Replace(Request.Form("body"),"'","''")
0 a" A3 y2 r# q; D" [+ @8 k* C% U6 y- y" v
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, & t; w* F, K( E
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, " b! U: W# D# R+ X! H* H: I; m, ^
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
+ ~/ L, A3 w( H' ~5 I& k- d就是把表单中名为name的文本框发来的数据储存在abc123变量中
; p  J5 p' i7 I( g' Q1 f; D+ X& d' G  U1 n) x7 z
接着:if name="" or title="" or body="" then * a9 T; d! M  }3 O& S% P
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ! J5 E+ a& Y' d9 d2 V
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ( f6 I& l- u- C7 g1 Z' P
该语句属于html语法,大家都看得懂的! - o( K" X& X! [3 H

' W, f1 _5 }# x9 U7 H"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: . t+ H( r! @. f# ?$ U
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
. T. G( n9 t( }) A0 G发表成功!<a href="index.asp">查看帖子</a>” + \6 O1 d0 J+ b. C
2 n8 D+ F! }! W* p( }9 G7 t  p: ^9 h
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: % S! J+ e$ {) }* ^0 E5 Z  V% s0 E
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
( g) `. B- ?( _+ O5 \& I1 Q1 H中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
6 p8 k( g  e- }) J7 nvalues是“值”的意思
/ R4 @* |- D( J就是插入向量name,title,body,向量用格式'"&name&"'表示
4 G) x* Y1 F% K9 W5 d+ l+ M7 z. @1 z$ }4 L
最后:end if就是结束if……then
, d( h# Q- J/ B( D( Z2 Nset savebbs=nothing可以说是关闭掉:
* _6 j) N( |# e- }0 L0 `set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
" l* B1 }9 f, U: ]& B2 n, @) B
& ]2 i* ]' R$ t7 o2 t0 {2 Z, ~1 \* D9 q
5、index.asp % \/ G- v' ^& k8 }/ h
源代码:
7 X2 W* t& Y, S. ?  i<!--#include file="conn.asp"--> 8 ~, v& i) F9 q: y6 J
<b><a href="say.asp">发表帖子</a></b><br><br> , I2 P( J% B; I. K
<div align="center">
5 h. {& |9 m( ]  A7 ~3 V<center>
" c. r1 c0 w+ D4 C# a/ E- V<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
) N7 d0 C1 ^  F5 }<tr>
* ~9 D' X) ?+ r! U' K6 [; I7 D<td width="17%"><b>作者</b></td> ) n$ {+ A6 N0 M- g
<td width="83%"><b>主题</b></td>
, R' U# |. V4 I+ |) a! l</tr>
8 O5 v$ h8 }8 [( C9 i2 U  X( U</table>
+ F+ y7 }8 L( j: I</center> $ X% \! S* n$ j" g
</div><hr size="1">
& T6 Z; H6 `3 L" d6 _. s7 [<%i=1
+ A; X) u; _6 m# G% b& {set showbbs=conn.execute("select*from bbs order by id desc")
; r8 U5 v7 v" J0 `; f" u0 Cdo while not showbbs.eof 6 \0 h7 ^" ~$ F( z+ ?) _
%> , X3 V0 j5 K& ]# L& D
<div align="center">
/ q% f& g$ C8 ~$ J1 \3 m/ H<center>
5 Q, V, K# ~( G7 U. p* C<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
+ r, s6 W4 b9 _% j- }<tr> 7 }% M' \: ?, ~& Z* V3 r
<td width="17%"><%=showbbs("name")%> </td>
1 A8 c! K2 K& i! y6 t2 M! S- {<td width="83%"> ; l, ]8 E5 U' S7 H" v, t2 h
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
$ \( h# u! l+ x% l9 f5 o& `% R</tr>
& A( s( Q) Z* k1 X; u# |</table>
6 G; i# p4 w& f! k$ n</center>
+ Z6 O/ C! u& F2 [5 u2 L</div><hr size="1"> ( v4 c# {( l2 e# G- C2 m9 @
<%i=i+1
4 P$ D  D* r  mif i>50 then exit do
& S6 x7 J+ B1 M4 c5 s3 {showbbs.movenext
3 h/ o# N; s& W3 zLoop / d) [# i  J1 s, e& E0 i; u0 F
showbbs.Close
9 {# ?1 p( v/ ~5 f0 K4 J) x, |+ nset showbbs=nothing + j8 O" ~! r% E
%>
& |; {( X$ {/ k3 u" T/ O, E
" S; {3 E- T/ b5 Z这个文件就不一句一句的讲了
# }( |8 A+ ^/ W$ T) C主要讲精华部分:
7 Y4 a3 s, ?) }( p  Mset showbbs=conn.execute("select*from bbs order by id desc")
" f2 B  t1 v! Y4 K意思是:向数据库中的bbs数据表查询数据,并以id排顺序, " F/ ?* @! p9 j$ h/ |& _% _+ I6 i
还有这么一句:<%=showbbs("name")%>
  K9 M* y0 S: v' ^就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs ( L; i8 n# ~* O9 v+ {
代码中的i=1和i=i+1 # K9 h* e* p0 {- y& J
if i>50 then exit do , w, q; _9 T) V8 B+ [% u
showbbs.movenext
5 v3 K8 m& S7 U0 xLoop
% p, q+ Z, m4 s) \! M7 b0 X! Cshowbbs.Close 4 |% }' w  A& W. F
set showbbs=nothing ( ~& Y+ N' Z# G9 H! |9 @' o8 b

# V6 X" |2 R0 F这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!   o0 V& F# f+ S
if i>50 then exit do中的50可以修改 5 l1 l. b5 F( `
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
1 w( q/ }* q3 O还有一句很有用的:
& ~$ H0 X" \& E) s<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
: j. h" Q' U5 d  X* v4 u, h里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
& D0 e. z+ a5 W- j0 B等一下在show.asp文件中就有用了 " `/ }: \, e& H- v9 y3 h+ K: ?
/ D; N% ^& j6 ~6 W" u3 B
5、show.asp ! K8 ?5 E9 Y" X, D/ g6 h8 Y/ n/ G
源代码: 8 R" T. n/ g3 }* C

5 k1 J$ k" ?7 d# e* g7 `3 i<!--#include file="conn.asp"-->
" P+ I) Z+ s6 n9 e' l/ L/ V3 K, u<%id=request.querystring("id")%> 3 N$ j7 Z& ]/ G2 f8 F" P, @) {$ R
<%set show=conn.execute("select*from bbs where id="&id&"")%>
4 H" m7 f( q; z$ Y- h0 C  Y<a href="index.asp">
. Z0 ]" Y7 L/ O& R" \! _5 t5 |/ B<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 Z2 h0 ]' v1 i5 h<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> " w: A: a( P( k  n6 i& C' u6 z7 B
<tr>
: V$ |& B% q4 n5 |! Y0 @<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
9 j! q6 h# [) p<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
' m( u% M  G( P3 l4 V$ ~( B</tr>
! o. |' D& s: I1 J<tr> . |( e  y; f; Y# H% p+ w: c
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 3 O  K: V  N; T9 p: K
</tr> : j& a  \1 A+ k5 h# ^1 }6 z. \
</table><%set show=nothing%>
" H( x6 a% G" }& m. N) J/ |8 v$ A$ r$ x
6 ?( Z, C5 I0 f0 {0 A; e& |! s劲语句---精华语句:
$ S& R2 i7 i+ R; r. tid=request.querystring("id")
/ r2 F: J- ~: X( v& |$ n在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, . o! L2 Z4 U  {- b$ a% E4 d2 }" b
id=request.querystring("id")就是把地址栏中的id的值读取下来, ! y7 t8 X) _5 F
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
2 A; n) K3 o, o3 b& ~所以show.asp使用id=request.querystring("id")语句把数字读取下来 , ]3 y) U( M3 G. C1 W6 g! B
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
' W/ Q3 [6 M+ x% d- `& J向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
5 L4 W9 w0 q6 f0 Z最后<%set show=nothing%>
+ t( {2 q, O% F7 ]9 @- m/ x/ |: _4 O' a: T
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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