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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
5 U0 @1 x. o1 t% r4 L3 y5 z真NB..佩服ing .....0 |; o' X3 H0 s5 |: x
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
8 N2 P" N  w$ w: o- t- \
8 J1 Q+ |1 e) @同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 9 x, \- B- `  V

! S+ E; |1 y0 [; S8 T  t5 _一、建立文件!
3 A% X, c3 P5 P+ A! x最简单的论坛也要有几个必要的文件,就是: 1 C1 I+ r1 ^4 z0 |3 m  a) {
2 Q8 ?- I7 U) u: {/ i
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb " C0 p0 v. F( G* Q, h
$ k9 P3 w# x  k/ t
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp / f. H/ J; s/ f/ U" Z: O% R, o
8 c7 l1 e# l' G3 q
3、发表帖子的文件----命名为:say.asp , p8 }0 i2 u6 |" l
  `6 N  ~+ I8 M
4、保存发表帖子内容的文件-----命名为:save.asp
" q9 e) k& J3 k2 C# L
( }; O8 N( s* `( J1 `5、显示帖子标题的文件------命名为:index.asp
9 ~: b& E3 o3 B4 w3 R4 X0 `% e& [5 |/ N" g+ j8 y5 A7 i! }) `
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
8 R3 g4 C$ [7 i+ d& d) b: H  ]* L
7 y: i) ^6 m4 }) d1 x建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" - C# }' ~1 I4 O! e( ?1 Q& p
$ @; X& s' g+ D& _. B* g
二、各文件的主要内容 ( a! W* c3 {7 A3 d) Y
3 N1 \9 F- I; Q* C0 c
1、bbs.mdb
  X6 T8 @! E* f" ]/ P, `
9 l0 Q  B) \9 f/ i3 L1 x$ l打开这个数据库,建立一个表,命名为bbs $ |: R, {; o" X
/ ~' g& S6 J8 z
该表中有几个字段:
0 S$ n; m/ i; \: |
$ r' K' C) O8 A$ @# U* k$ Zid(自动给帖子编号),他的数据类型设为“自动编号”
: G' A: p* u$ ~8 d6 m, c! k8 i0 I, a+ ~
name(用来储存发表的作者),数据类型为“文本”
& C8 t4 V8 Z! u* }
9 w% P; z1 K) q  Otitle(用来储存帖子的主题),数据类型为“文本” + B" M5 V: L  A8 ]& o' b

( Q+ m% Q* \+ l7 Xbody(用来储存帖子的内容),数据类型为“备注”
9 Z) l2 i  G$ j& _/ A
- V3 b+ T5 Z5 S# f: k2、conn.asp
5 u! A% {7 I$ u- }7 z- I源代码为:
! W1 T4 W' v* g& e! f+ _6 P) o<%
' i+ ]' y3 b! H7 W7 tServer.scriptTimeout="10" 4 e. f; \" m! @8 m
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 5 b' s% h6 H9 n
set conn=Server.CreateObject("ADODB.connection")
. V  @5 c" |5 ?( }7 _conn.open connstr
8 O4 V9 e  }$ f%> ( _% C) r" @2 Z7 V

. J5 t7 \" d5 ^2 K. ?这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
& l6 j8 Y4 O& K/ u) a- S( L$ s+ d' B7 S
3、say.asp 4 }$ i7 ?. Q& Z1 l; J& i& P
0 `; \. e5 O  j1 {
源代码为:
! q& e! P) t4 K<form method="POST" action="save.asp">
# Z5 W# R; }3 D4 k<p>大名:<input type="text" name="name" size="20"></p>
0 v0 _2 ^) B! Z  t0 |* ?) X8 y6 p) e<p>标题:<input type="text" name="title" size="91"></p>
, }7 W- K; {( U  Z9 X8 e<p>内容:</p>
1 \& K, A$ R2 |! F' _<p><textarea rows="11" name="body" cols="97"></textarea></p>
+ Z3 u; N  z6 g- D0 M4 b<p> </p>
/ z2 T" m7 m. n6 W/ m; K* N<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
% A7 N! f4 K' |7 n" v  B8 b. C</form>
' f: A8 a0 T8 E. K4 M: C. K: w/ Q大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
9 W* @( R3 c9 Y: Z* L$ x9 D) h不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 0 d! K$ k# q. O. j' q) W8 X
% u# g6 m$ I7 U% b: z
4、save.asp
1 U$ ~* m. R- \+ Z9 Z2 M/ a9 Z6 I6 N" m
源代码: ! M1 C8 U6 _* ?7 y$ ?1 A
<!--#include file="conn.asp"-->
2 |- O% j8 r) ?8 F5 S* Q<%name=Replace(Request.Form("name"),"'","''") 5 m+ u+ j$ g4 a
title=Replace(Request.Form("title"),"'","''")
- D$ g+ |5 _% }. ^( D3 Zbody=Replace(Request.Form("body"),"'","''") # g& q# @( [% ~8 h
%> % W8 ]8 J' b4 K6 M+ Q! m4 s
<%if name="" or title="" or body="" then%> / G8 g& W8 V2 x7 \6 }0 V7 y
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
2 P, U8 V2 o% r' B0 v5 p<%else%> 8 e. D- r$ o, Z9 |. \1 {" f
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
* ~1 i! h7 ^9 \5 v/ J2 w$ U发表成功!<a href="index.asp">查看帖子</a>   c8 o- G& c9 \; v% c% @
<%end if
4 E, P7 d2 \8 l" t3 Fset savebbs=nothing - Y# v  p' n* u5 T
%>
% z0 \8 }7 [# f# N
$ D. |: Q% J1 V6 A. W/ x, [第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! - e; C0 c5 ^3 \, f; K* B
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
. t$ Y8 T9 F+ Z. E4 [接下来几句:
/ w5 R8 R- K5 u/ a" p% Q6 U7 ]' sname=Replace(Request.Form("name"),"'","''")
2 a! q3 ]3 S; x+ }" _4 P, ~8 Ftitle=Replace(Request.Form("title"),"'","''")
2 S& f6 b, W: j! jbody=Replace(Request.Form("body"),"'","''")
/ x" L$ O, M) j* @% J! K6 f" f0 d  j/ E; v4 a) l* K) N/ D
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
; |' {" W3 Q% X- x/ ^/ Y而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
5 R, Y7 H) t$ c0 s" T6 C' h( e如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
3 t9 t1 `; F5 l: e2 v* w就是把表单中名为name的文本框发来的数据储存在abc123变量中
4 S0 C. P! @/ \, C9 k
. a7 }0 a6 Y1 \; c9 l接着:if name="" or title="" or body="" then " n# M+ I# f8 {) T) o
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
! n8 X- U0 r* j' S4 P- Z“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
- @- i: z7 d& T, ]2 j; \1 o' f该语句属于html语法,大家都看得懂的! ; F" B8 w9 R  A$ J! |6 A: h

5 b: d7 V4 h4 k. K"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
. E; |# U# D. F7 h7 M% Q“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
/ ?5 P, f- b, O$ ]发表成功!<a href="index.asp">查看帖子</a>” + S: N( O0 I7 I2 B
; H8 \- _) R7 E5 \+ P; _! Y  F
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: % ^3 I. e/ v! p: V5 ^
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
4 ~5 L+ Z8 c; x: ?7 @中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ) K# D% o6 p' s) R' s  w
values是“值”的意思 ! A9 D% R0 ]' J" t1 @$ v. w5 _7 o
就是插入向量name,title,body,向量用格式'"&name&"'表示
! _  f  `+ R. F9 z2 w% y# }4 q% z' W7 r7 F7 t' p) L( G- Y' I
最后:end if就是结束if……then
0 R( e7 b2 q  Y, X) p6 pset savebbs=nothing可以说是关闭掉:
4 [; B* u1 y, A) ~( b3 Aset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
, \  {. D: G4 w/ k9 r3 a& N$ H) S' g0 f: [: J6 R
) C! P  B8 j& I8 K$ Y* I9 l
5、index.asp
0 ^/ J* }" ?0 A* J( \  N. m4 `源代码: 6 ]. X* ~" F& M! F6 H8 z
<!--#include file="conn.asp"--> / d  a7 s+ t! d+ @: H  r
<b><a href="say.asp">发表帖子</a></b><br><br> 4 P% A; N" r& S" A; _0 K- ~  c
<div align="center">
4 C7 F- Y" R* g<center> 2 g6 ?4 @' P2 W( x
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
; L6 W/ u+ k* ?. U- d/ C<tr> - F) M% i+ c" V( T- L
<td width="17%"><b>作者</b></td>
/ y! l& k7 f  Y( C<td width="83%"><b>主题</b></td> 9 u$ f( x: Q* D' j: j9 `' W
</tr> . x2 O0 A8 C( C
</table>
5 x6 b  Z  v% m2 _$ I9 V# a. S</center>
* q: ^3 o# S; O6 _/ S* H/ c1 g</div><hr size="1"> / q& D; y3 u4 l2 X* Y
<%i=1
6 s7 I* V* l7 Z, G* Tset showbbs=conn.execute("select*from bbs order by id desc")   _1 @$ ?( {6 j9 f
do while not showbbs.eof 8 t9 H* |/ |# e
%> * \- V" ]' Z8 x6 K# Z
<div align="center">
$ ~3 C- m' S2 ?3 Z2 j<center> / l( ]; L7 l" ?4 J+ K
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
" n5 F# h3 y# ^4 P& D<tr>
/ S; ]9 m+ l6 @  ]" n* l<td width="17%"><%=showbbs("name")%> </td> 4 [0 f- G) c% D1 [8 s" X
<td width="83%">
. G6 x; ]0 P5 t/ b& f% M<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 5 m) u* f) R+ S: D9 S
</tr> 3 k- s1 R3 L$ I' a0 e  o
</table>
8 p2 l% n; N% g% S</center>
0 _1 d" @: ]( e  c0 }</div><hr size="1">
/ a  m3 X4 p; m1 \0 G" E( `<%i=i+1
- A' N0 z; G# e* Z, Mif i>50 then exit do
# R0 b' I% {8 M2 Y3 C, Cshowbbs.movenext 9 ^  L0 E4 x' B
Loop
' Q; r- |9 S" z5 g8 Fshowbbs.Close
# J( _8 K) h" d8 ^set showbbs=nothing - f' c, |$ v8 |9 u6 k; A1 y
%>
% C7 c2 \+ f( Z3 c4 ?! n8 H' v' D
) N# U4 `/ c% A2 v* U这个文件就不一句一句的讲了 ; B0 E% U* V5 f" q
主要讲精华部分: 6 Y8 d7 e. |$ A* B9 T( Z
set showbbs=conn.execute("select*from bbs order by id desc")
, z6 P. a! t/ K# l意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
$ O# Z) p  s- S还有这么一句:<%=showbbs("name")%> , u' M, y. g( G: _  {
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
- N2 X. O. ~3 x* o- F' Q! G0 p$ w代码中的i=1和i=i+1
4 V) s7 G- ]% _8 J4 w% `  X, \if i>50 then exit do 0 I$ E5 S' i7 q
showbbs.movenext
4 z0 H6 V& W* q$ p4 c, K2 A, pLoop
! D- f; P5 T9 @* ^$ x: ~+ O/ |showbbs.Close # |' S/ Y$ T: Q- F& Z
set showbbs=nothing + y+ D6 ]- @9 w/ ]3 X3 R$ ~

8 E! @0 i3 g, M8 M& u" O这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
# t5 B0 I; O# `: M0 ~( x2 eif i>50 then exit do中的50可以修改 " z, \- |- N5 h. }* \
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 % C& {9 X# Z  [/ W
还有一句很有用的:
6 E8 w6 e  K9 R- d6 n<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
; S, H: Q4 w& p/ ^里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 9 F3 a5 L3 ^4 [
等一下在show.asp文件中就有用了
8 x# e, C( |3 J+ T4 x; `2 @. S3 c
3 o6 g- ?3 o" ?& z9 c: {5、show.asp
/ q4 b  {( U: r( t6 \9 s1 R8 q/ n源代码:
" S2 U. q# R- e* x5 Q
  l& l# G% B% K4 n, i<!--#include file="conn.asp"--> 5 H8 a8 v+ \: k" ?5 ]* v3 f1 [
<%id=request.querystring("id")%>
, p( j' j2 o" i1 R( p5 a* I<%set show=conn.execute("select*from bbs where id="&id&"")%>
5 a; I( D) P1 @% u) N  g<a href="index.asp">
8 m4 w+ M# P" o5 \# a* K- }( n<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . h- c# n4 s- c* y7 Q
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
: C, s( u$ K1 c<tr>
5 q1 A( n% o( K; y: Z% U1 c' K7 |<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> * }: u( o4 _+ @; j  m( G
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 6 [7 _  ?8 E" h- Z7 C: D
</tr> $ P8 Z% E: e- B' R' `) p1 {3 n' ]
<tr> / [) k! ~& @. d+ S9 M# U
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> + r6 n" ^+ b2 X- _
</tr>
, ?5 ?: h5 D  j; \0 q4 I: ]/ d</table><%set show=nothing%> 9 N; h; H: C. y

2 ]* g# g) j5 C" y& M. B+ g+ `劲语句---精华语句:
% ]. I: t0 W+ U+ |id=request.querystring("id")
6 C  s0 m; u0 Q$ i. c1 ?: G在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ' a0 K, ~8 t' h8 Z! N+ z
id=request.querystring("id")就是把地址栏中的id的值读取下来, * {# M# F/ t2 I- O/ p# W# a8 o
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ) {/ h" ]. V) o2 ?
所以show.asp使用id=request.querystring("id")语句把数字读取下来
( d1 h+ i/ G! U) k7 d. M. X于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
  b8 A) t; _0 u& M向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
* V9 v! B& A! y' t" x7 W最后<%set show=nothing%>
" J5 a, x1 d& L& l% o3 }& F8 }, m" K
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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