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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
; ]5 N7 v- X' l3 ^! G. v7 x真NB..佩服ing .....5 S" [9 w' L6 }" L; h7 D+ h
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。  t" }0 b3 L, |2 w

7 Z( `1 A2 m+ r$ q4 r, d2 h同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
9 Z0 C8 u  K% ~/ P! A( M, M$ u9 C. G% \/ \+ j2 V9 X  T
一、建立文件! * v. o  n* r6 z  I
最简单的论坛也要有几个必要的文件,就是:
4 U6 t9 z5 ]; c* v2 G0 e! z$ Q' G6 O/ Q5 g2 ]: N2 y
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
- u: w. G& `5 m1 @3 J2 d: [* ^, R% P9 }% o
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 0 s2 ^; j' y7 L" X
) u% b* ]+ `) g: d* E0 u
3、发表帖子的文件----命名为:say.asp
, S4 e% ~+ {/ U4 @# [! O; _" e  @: }
/ o; J) o- `3 F  q4、保存发表帖子内容的文件-----命名为:save.asp
) J' \: a9 X% [6 Z: c3 j2 x. J  ]6 g, ]
5、显示帖子标题的文件------命名为:index.asp ; M+ B( N( O# R5 O
+ K  @3 Q( D+ E' T' y5 i0 a
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
  \# D# G- f% c; q/ Q0 e/ i$ d' o7 @% `. }
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 7 r+ o$ N. L) x; @; T! {$ L' F

7 ]9 y0 }4 X2 v6 s8 ~4 J二、各文件的主要内容
4 X' E! \$ m  T% k' j/ \6 u+ e) B' b6 l) w7 R$ F; Q: N
1、bbs.mdb
: Y5 {5 M) l: a: W: v% \8 w7 Z/ y9 o( b! o) x
打开这个数据库,建立一个表,命名为bbs
; F( O6 Z4 G9 S# b. w6 s! T) k/ _7 g) a! F# @1 k
该表中有几个字段:
' x; S9 J9 g9 Q0 E
9 {2 f. ?7 @' z2 \, R, Y- aid(自动给帖子编号),他的数据类型设为“自动编号”
) Q. T) @% u, d; I/ w; w4 T1 v/ U
name(用来储存发表的作者),数据类型为“文本” - f" E. v6 a# V  a8 N' o
: h2 O6 ?% ~  _+ k5 [1 c
title(用来储存帖子的主题),数据类型为“文本”
2 y! ~: h) o' a& ~( K2 J4 M. P/ c6 T3 q
body(用来储存帖子的内容),数据类型为“备注”   D- e9 K0 U# _, J

- i0 l: @2 f4 H* H2、conn.asp 3 z6 h0 z% h6 `. l/ K: F; _7 X  j
源代码为: ( Q+ _' ?9 d) e% ~
<%
8 E+ A$ K" O. j$ SServer.scriptTimeout="10"
9 T6 V0 S. ?5 u1 Q/ ]c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
* Q1 \- p9 M9 G4 m! nset conn=Server.CreateObject("ADODB.connection")
9 {5 T6 s1 ~* @6 Econn.open connstr
& x0 q) f! [: G& ]9 c$ L4 L%> " f; B8 L7 v2 J/ R. S

8 g+ ^# ?2 r" P% `: ?' i9 j5 d这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ; @9 P% Q) ]- L4 O! Q
/ C+ D: ?6 _7 G0 w7 x# s5 u
3、say.asp 6 x* {, Q2 L3 t
4 Q3 a. K0 w$ r2 X" d2 ~4 R
源代码为: ) l- e" @, N7 y/ b
<form method="POST" action="save.asp"> 0 v9 R2 b5 Q4 f9 f, C
<p>大名:<input type="text" name="name" size="20"></p> 4 u$ ~+ F$ L$ w( k
<p>标题:<input type="text" name="title" size="91"></p>
! s) e7 F. E8 l9 x<p>内容:</p>   l3 Z6 w/ i7 T; ~& J
<p><textarea rows="11" name="body" cols="97"></textarea></p> - Z6 l3 a' d' G2 r3 ^1 p- `( m/ G
<p> </p>
7 ?7 J7 N( b0 _7 @" K, K<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>   B' [# x' }( y9 Y8 Y$ J8 J: Y
</form>
, z4 h; b2 v% S- E: U7 q8 O大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 9 K/ m4 m: X" B; z% g# I: ?
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 6 |  _( ?5 |4 Z
/ e- ~+ |( {+ J0 ?  q* O+ i
4、save.asp
3 q" L6 u: ?' z8 i# q( p8 A
7 J# a: f5 T/ N! r" w源代码:
, a; ?+ A" x# o8 G  X' b1 n<!--#include file="conn.asp"-->
- d+ a# C! o- P% Z" e. K<%name=Replace(Request.Form("name"),"'","''")
5 V% s' a& h* e2 U# N6 Ntitle=Replace(Request.Form("title"),"'","''")
$ _, `5 x6 Z9 A/ Z8 ^0 Ebody=Replace(Request.Form("body"),"'","''") 0 Y2 o1 ]9 O& e# K
%>
0 @, o8 @+ C! G) M<%if name="" or title="" or body="" then%> % H2 D# F% f" s# L( p3 ]1 L  V3 u
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
: y" E, J* u. c, y<%else%> + A0 X/ A$ U3 I! e. L# ]) ~
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
% t- N6 j9 g2 _$ L发表成功!<a href="index.asp">查看帖子</a>
- g+ U1 a0 h1 ]" U, M2 y<%end if % c: h& n4 {8 @
set savebbs=nothing 6 t4 d3 d* j% A9 |$ H" {: f
%> , ^6 Z9 R8 C( m1 I2 d' _- j
1 s2 d, w- m/ |7 E1 p: |
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
  X$ G6 r7 ^' M( A7 f/ ~3 a$ Vasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,   \) Z7 D) ]" t* B! M, b
接下来几句:
. E' Y! P+ z& qname=Replace(Request.Form("name"),"'","''") $ [9 q5 ?: Z* U* M9 H# O. V  A$ m
title=Replace(Request.Form("title"),"'","''")
  O, e  d& e" m7 [* Kbody=Replace(Request.Form("body"),"'","''") 0 N7 A2 V) P$ r1 E  X
8 I' o+ d- P# J/ t( N# d
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, & b/ |# K5 e, D4 y# y% E9 }) O
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, & u0 Q2 O) B- l4 Y3 s9 B
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
! b9 j! L& `9 H  `就是把表单中名为name的文本框发来的数据储存在abc123变量中
: V  {9 O8 k$ m  \' z, G$ x7 W! x% r
接着:if name="" or title="" or body="" then
5 p' M2 o8 N0 y" S判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ( K6 }- F+ a+ M/ G
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 9 o; ]! t3 [$ ~, b
该语句属于html语法,大家都看得懂的!
8 b& w1 T. @6 I% @: p4 Y
; M/ t' x* Z4 b  N9 Z, t2 P"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: & P3 a. [( f9 H! P7 ~- M
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> * ~6 ^* ?; \, I0 x, C$ t
发表成功!<a href="index.asp">查看帖子</a>”
: R2 p4 a% P- a; h( Z2 \8 ]4 h& g3 \6 {& l3 F+ W
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 7 O- w0 F* C0 J7 @9 k2 r
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
' ?8 ?3 r5 E8 E: O7 H( @中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
( t( d9 g8 }; F2 b  Y. zvalues是“值”的意思
8 \' a' ~' v6 M* r就是插入向量name,title,body,向量用格式'"&name&"'表示 * p: X+ P9 G/ g3 v* T( P  Z

, t3 M8 }& f3 x; O) ?$ X最后:end if就是结束if……then   L( Q" C6 E  z/ X0 F
set savebbs=nothing可以说是关闭掉:
$ v3 F: m! ^9 Kset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 1 S( G; p4 s  z7 n/ w0 P
; Y1 O7 y2 x8 R) D, k0 Z, d
6 l/ C/ q1 }. f
5、index.asp ; U( U7 d3 j! X, z/ h) p
源代码:
' W/ J8 k0 e. F<!--#include file="conn.asp"-->
1 Q2 `+ X. N) m; Z3 G9 @& s) ]* o/ w<b><a href="say.asp">发表帖子</a></b><br><br>
' u) X! ]( l' P: m<div align="center"> 0 I% Y, v' Z" g( a
<center> % d7 v- w+ Q$ D" R( S
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
1 p% `) \0 v) ^' ~9 u$ w9 w5 e) I<tr> $ r1 N. P/ V. X% I
<td width="17%"><b>作者</b></td> 5 D/ R  ]- q2 H. Z- {# a0 G
<td width="83%"><b>主题</b></td> $ c* w1 G  E2 X5 C5 M9 R" R* j+ Q: ?
</tr>
( F3 K6 F  M$ }- L: V& |</table> : _. x9 m, S  C- N! y
</center>   {" d2 d" ^$ i" g7 o7 J
</div><hr size="1"> ) @% \5 j1 i" h$ p
<%i=1
: @* ?' A) S. F$ V+ Gset showbbs=conn.execute("select*from bbs order by id desc") 4 a) T' h, S  ~+ M. _
do while not showbbs.eof . B2 b4 j" U0 V
%> ; r5 \: c1 ~' A  |- f+ T
<div align="center"> / A, p* l% V( ~" H+ |
<center>
' N+ a) F# y: ^, b) Z  l% j2 S<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> # I2 |7 e  W" _; }
<tr>
: k9 p) O2 Q5 V' N<td width="17%"><%=showbbs("name")%> </td> " @/ D) j$ U* {/ ?
<td width="83%"> 2 j6 K# \, d# }
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> * t$ j# Q& ^8 L  p
</tr> ; `& O& ?0 k$ C. r. }
</table> 6 a- x; d* m( R, T% ~! a
</center>
. {6 M  ~1 J! {$ f</div><hr size="1"> . A. B4 y. s! e4 l, g( ~+ C- a
<%i=i+1
6 N% a0 w; ?" f0 ^! C5 O9 zif i>50 then exit do $ k. c4 _3 R( w
showbbs.movenext 0 `+ w) e- ]+ F2 S$ k3 L
Loop " {, D. S9 U+ A+ A' k7 c
showbbs.Close
% @8 t9 f9 ]5 D$ U& Q% Rset showbbs=nothing # w* G$ s/ h, m* a
%> 4 @; ^) \9 n/ i
+ t0 y, W( z( k
这个文件就不一句一句的讲了
+ b5 G& l5 X" L1 H; M* q; G主要讲精华部分:
5 o  r+ J( d0 R. r( ]$ s& e* qset showbbs=conn.execute("select*from bbs order by id desc")
9 {4 R; t' H. k1 S; Y3 W意思是:向数据库中的bbs数据表查询数据,并以id排顺序, * [- U. j5 I! W
还有这么一句:<%=showbbs("name")%> $ p8 d. f9 E9 K9 }9 R$ H2 c
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
3 F1 m% A7 _' j# ]5 k7 Y% k3 l代码中的i=1和i=i+1
; C  c0 a7 s% m; dif i>50 then exit do ) |! P- J6 A3 e! {) }
showbbs.movenext : |) Z0 ~+ s0 A
Loop
  L, N' Y5 Y$ I7 l- v3 K6 m# j4 Wshowbbs.Close 0 G1 s3 E# X# {2 d" B2 A% p: x4 d8 E
set showbbs=nothing
0 ~. t$ w! P2 ]6 `; K! c
: s* r8 n3 s: d4 L* D8 L& o- C这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
) i3 r, B* V$ Eif i>50 then exit do中的50可以修改 / n* e* v$ X; S0 U: C
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 & v8 S$ u, F8 @
还有一句很有用的:
4 Q& C" v8 q$ x! a, m8 m$ D<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 9 {+ v% ~" R1 t
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 8 R' I+ M( A' ~6 M9 n3 S8 R
等一下在show.asp文件中就有用了 . o. b8 E0 X: |- K, G

4 {, w8 [' [0 {, x' M4 L' k7 k* j, `5、show.asp
( u$ T  P% F* a/ X  X源代码:
  t  r+ M3 S% l9 O6 U" g0 x! J# i) L) S2 t3 ?& q/ t7 q4 b
<!--#include file="conn.asp"-->
7 ]7 N8 e2 O2 f$ [/ W/ _2 t# E<%id=request.querystring("id")%>
+ T" t! G* v' u% m- Z: W9 ]4 H<%set show=conn.execute("select*from bbs where id="&id&"")%> ' V4 v/ V- N6 v, D( w  _( i
<a href="index.asp"> - c; Y% \7 }$ }$ Q! Y
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> : G! @) c( O# T+ c7 p
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> . d8 T/ C9 Q5 D( u7 k: L
<tr> ! \: O* ]4 }2 Z$ O
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> - @0 g. s: m) ~9 m- m/ I
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
# @# `7 `6 L0 ^7 o</tr> / e+ }: k) ~; Y* [+ w8 L( N- a
<tr> # {9 A& a8 X  \, j5 Q7 K& x* v0 l
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> * Y- J9 [% i0 L% b0 h( ^
</tr>
+ B- f* E4 ^6 s8 U" h* p</table><%set show=nothing%>
- N, J- r% J& ~: b( S& U- B3 b
, K0 \# j! @  g( _7 B: N劲语句---精华语句:
% p4 {' O( Z2 B( V8 P6 G3 qid=request.querystring("id")
9 B8 s4 {6 |8 a在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
: O* X* H$ ]/ j& g3 ?" r) z# lid=request.querystring("id")就是把地址栏中的id的值读取下来,
' q6 w. i4 g: w; K* S# M因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
7 w) N* u4 Y6 n' {所以show.asp使用id=request.querystring("id")语句把数字读取下来 4 c' d! N  W+ e1 N
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
$ D. `) \2 e  G向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
7 a: b! ^) s3 |0 v: m. T+ g3 h! _最后<%set show=nothing%>
1 Z* B! m5 p" f. \, Q# B# `5 I
5 x/ F5 ~) W1 c8 Q好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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