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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
3 S0 t& `! `! t. N8 d$ p真NB..佩服ing .....
* w( Y9 R& r" {: E大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
: P$ e" e" n. m. v, @
$ D/ I. L7 L  ]. h同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
& k! ?/ V/ X3 X" t
" R. M/ z$ t2 g1 W5 ~- F& ?( K$ v一、建立文件! 1 W& v) m) t. h* w& h( B
最简单的论坛也要有几个必要的文件,就是:
/ |/ T" x* L1 R; g+ N
1 q2 r2 T- x& ?& I- o4 d! g1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
. J" ]5 D( U! n
4 `6 D5 g5 m7 n" M2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp + e. K; A( _2 m0 J/ j4 s
. b) ~$ J+ a6 O! k
3、发表帖子的文件----命名为:say.asp
/ s0 v1 m! Z# y
2 J! P4 f" w  J: h, B+ X1 Q  O4、保存发表帖子内容的文件-----命名为:save.asp ' J* j9 }. ^" }* H# Q

- u; _/ M4 k; |6 }% [, V% Q5、显示帖子标题的文件------命名为:index.asp
3 s; d4 {: P7 x4 D5 o6 J7 R" r6 I8 k9 Q/ p7 c% y" f* `
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
  ^$ X# P- [8 ]% Q% w/ U& S9 J" I
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" : R2 g6 r, ?5 H; F: ~
0 s% f; S* r1 h5 n5 H2 u
二、各文件的主要内容 - q# T1 F1 ]( t% j/ a+ D+ z

0 ^4 n" G1 {: }$ [+ K: q1、bbs.mdb
% ^( z8 h% k- S) x" X3 R
! q; ^1 Q8 I( c6 F1 z6 c  x打开这个数据库,建立一个表,命名为bbs
% `7 H7 y* V4 m0 W( X: W6 `! S0 F* }' D* U+ \& v4 D( k" e
该表中有几个字段: 8 S( t( j- I% l. j! d

( H' l5 f7 Q. S4 n9 B3 aid(自动给帖子编号),他的数据类型设为“自动编号” ' N  u6 o; \3 c; R' ?

% p* V4 v. \) Y! D1 z: Aname(用来储存发表的作者),数据类型为“文本”
! a  ~$ ^3 _/ Q! T' d! F
# A$ F2 C0 X- K; J+ c) z  @* Htitle(用来储存帖子的主题),数据类型为“文本” $ k: ~* i% W% H* S
4 D( }3 p$ J* }" W7 V+ L# D8 k; s
body(用来储存帖子的内容),数据类型为“备注”
  Y9 u) u" w, v# K! E7 H! S) P# [' Z3 S/ v
2、conn.asp
; a: U$ m1 B4 J7 n" h源代码为: 3 j. s4 f& |' Y. F
<%
% Y- \, |) d6 \Server.scriptTimeout="10"
. B% ?7 \; d( S6 z# h2 u5 rc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
1 q7 t9 r4 {- z( j! ?set conn=Server.CreateObject("ADODB.connection") - X6 H! y, ]6 ]
conn.open connstr 1 z0 S7 _8 j6 S8 L7 B
%>
2 D) l, {3 H! ?/ O( \/ e" @( \
0 {: \  K5 h5 m; u这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
/ W, |7 G# y( I/ }2 ^  X( }" C; c8 y
3、say.asp # }& \, e+ Z: F

5 v; u- x3 P% Y! J  ?源代码为: , M/ I8 o5 D( v2 h, c9 }
<form method="POST" action="save.asp"> 9 ?1 y( X% V% G
<p>大名:<input type="text" name="name" size="20"></p>
- s: J. p, w( o* _6 z; h<p>标题:<input type="text" name="title" size="91"></p> - C6 c6 |8 Y4 Z9 x- k& l+ ]
<p>内容:</p> ; a0 K. f4 N+ k; f# l6 {
<p><textarea rows="11" name="body" cols="97"></textarea></p>
9 Q! [' j$ |0 Y. v; f$ |- M) T<p> </p> ' L5 {+ @% N  _# ^- @- B( t8 t9 I
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ' E. r* A4 Y" ~. n4 [
</form>
! l# U6 m# |# f7 a5 J  @大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
+ D1 q) b" C  u7 E4 z不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
+ a5 T- s, M. \" w( Q
" @& M; P& q9 @3 L4、save.asp 0 @* W7 o, O6 X2 a/ Y7 v8 h& W' s' A

0 A/ o$ @5 O4 M6 \1 q源代码: : a# }3 n* r' G+ q/ R* _# b
<!--#include file="conn.asp"-->
0 x' k/ i  \& \/ t<%name=Replace(Request.Form("name"),"'","''") ( v8 Y8 f5 f! e& s8 R" x+ y
title=Replace(Request.Form("title"),"'","''")
4 ^# S8 c6 w) s: `body=Replace(Request.Form("body"),"'","''") + M% B! @+ O7 K* A
%>
  C8 f! ^# W) A! T<%if name="" or title="" or body="" then%>
: E; \; n: _1 O* \请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 7 b0 b1 E" `5 Z0 G; d5 _: G
<%else%> ! v- j" h9 r. }
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> $ j0 Z2 w3 v) L( g/ c3 _
发表成功!<a href="index.asp">查看帖子</a> ; N( \' n+ n0 B  F6 k0 T2 h
<%end if , U+ U% N& D5 S" [
set savebbs=nothing * R$ L* S9 X" v. Y/ s' n) E
%>
2 e1 ^/ s: K$ @! e: b, @0 V) h! [, ~1 G. x+ k4 u  W/ c
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
  f8 M/ V' L  V& f5 fasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 2 U6 S1 _' E4 N
接下来几句:
/ s9 R' I0 t- S1 o. sname=Replace(Request.Form("name"),"'","''") 3 H( V- @5 e6 ?, L
title=Replace(Request.Form("title"),"'","''") 5 d9 q8 N) h' n
body=Replace(Request.Form("body"),"'","''") / G0 Q2 L# p- r: S& x
7 Y) ~4 d3 U" V3 @
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, * ]6 \  f% @! g# ~5 G
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, . ^5 r; x" }# U4 [, P3 T
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ) C  p0 g+ i" a3 z8 F2 N" X
就是把表单中名为name的文本框发来的数据储存在abc123变量中 3 {1 Q" Y( g" R/ f
# }, J" K  x) s4 [  _+ \
接着:if name="" or title="" or body="" then 1 L( h$ g9 l2 q8 M6 o. J+ x
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 1 P! [; Z! i4 k4 d/ Z
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
& G6 g# K% g$ G3 ?该语句属于html语法,大家都看得懂的! . P: f; u1 y9 o; W

- t  j% F- i! U' }: {"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
0 |1 t  t8 H: H' T; p& a“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> # s* _2 l0 U! M
发表成功!<a href="index.asp">查看帖子</a>” ) L+ u# Q8 O4 ~9 p  l

* z5 U7 q. S0 U6 u3 l1 v"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 1 p  T, B7 J& I& S9 [
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)   z+ `- q" A2 G! ]& ^3 m
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")   z9 b* P! u7 i; l+ v
values是“值”的意思 1 r: x$ }) A6 f: n8 L
就是插入向量name,title,body,向量用格式'"&name&"'表示
' E+ ?  I, V) R: z; k& c$ b
& \& {6 U' D4 z1 N6 G6 K3 A最后:end if就是结束if……then $ z! a8 n8 M# D+ t: @) E
set savebbs=nothing可以说是关闭掉: : a; u2 g* s/ B+ h9 e+ u- U* S! H
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 4 q5 H: Q* }! Q: e: {/ T

. K4 G; Z4 [: \8 R/ f
1 N$ |; ~! h  n8 P3 M* S5、index.asp
! ?! ?# ^, {9 R1 s源代码: - x: H& J6 C( |( P* H! ~, J1 Q
<!--#include file="conn.asp"--> 0 Y/ ^6 j3 k  b4 }, Q. h& t
<b><a href="say.asp">发表帖子</a></b><br><br> % o9 ]$ m3 _9 K
<div align="center">
7 l7 D' d& h3 a  x% k( t<center> * w( h5 C: e% _, N/ K' W  f; p1 k
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
! r( c, Y; d, n" Z6 ]  e+ P<tr>
4 R+ ^: e9 `, B2 Y: `, q: A<td width="17%"><b>作者</b></td>
/ b9 L. r1 y  }7 i3 T* c<td width="83%"><b>主题</b></td>
* N% `% s, x7 C5 ?8 }- s, o</tr>
; r; c) U# B  b. f# P</table>
( M- T5 A  u6 h, }  J4 w- h3 I</center>
1 R: A+ a) G: ?( A. N. g</div><hr size="1"> . c% y4 U; N1 i! j
<%i=1 5 \0 G/ }6 V: T
set showbbs=conn.execute("select*from bbs order by id desc") / N! d3 h" S! b3 G0 w
do while not showbbs.eof
; J9 p# d# Z: Z" L- r%> # K/ Q( \' E) O- Q" @
<div align="center">
7 @+ w8 T# @) [* A% W- |7 c' u5 a<center>
, _* I1 M) W, e0 G1 S  Q9 O$ V<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> ; c9 r3 c" j5 K) ?' d
<tr> 9 k$ c: k' s, M& t% }
<td width="17%"><%=showbbs("name")%> </td>
5 C  |* w$ A7 P8 r6 A% j9 E<td width="83%"> , S# s) S0 Q' X* ?: ]
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> # }& r9 X! h# D
</tr>
; V6 @. d  e9 T" F- t$ q</table> ! E7 [) D2 |5 D* k: x
</center> " P& |; H% j' @4 {/ E
</div><hr size="1">
, G" ~& j/ U& H6 p<%i=i+1 " E5 r) ?$ i( L# h5 R
if i>50 then exit do " O. Z  K  R. G; Y! i9 A5 R% V0 ^
showbbs.movenext " O8 j+ D3 Z0 o9 _! [$ p
Loop $ X5 d  ^, }$ k
showbbs.Close
4 l# J# x, D8 t: D: bset showbbs=nothing
7 J% k" Z8 ~/ |8 o. y# t. c1 V3 Z%>
( A! v7 |$ w7 T9 b4 K
( J  T; {* t8 p5 `) J这个文件就不一句一句的讲了 4 c! l/ c/ U: c9 _: s0 ?' }. V* i
主要讲精华部分: ( w9 G5 R- m2 I" U, N3 _
set showbbs=conn.execute("select*from bbs order by id desc")
! j7 A" J/ `7 n* q$ \! `意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
) R5 u% }5 H4 ^还有这么一句:<%=showbbs("name")%>
, ?+ v* p3 D) p就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs ) B( D' v4 f" Z( B9 e! E/ ?) n
代码中的i=1和i=i+1 9 X  c% G5 S  e/ H
if i>50 then exit do * Y* f6 e/ B. e( n5 |, ~
showbbs.movenext
- b- K  M& d7 D+ Y$ mLoop
4 h' d7 `9 L- R& |showbbs.Close
3 P1 \& B, g1 H  Xset showbbs=nothing   x' k+ c, `) \8 S3 H5 w
& D# |7 u2 A4 E' X  ^( E% a8 p
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
/ K. @: F, S" c6 r2 B2 ]" Q/ Wif i>50 then exit do中的50可以修改 ) ]$ F9 l$ R5 ~. `6 x9 i
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
4 F2 _( G7 ], y9 _! e, g还有一句很有用的:
  B/ U; m$ y- t* Y- {' u0 Q<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> . g2 M+ |7 y$ @- @
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
% E( Y  c5 o. I+ y等一下在show.asp文件中就有用了
6 x7 m  f: C7 N, q
. v. x$ T! f0 n5、show.asp - o- D$ m) A; U2 K3 T
源代码: 2 L# h; ?& \2 E7 o9 G* b0 O

+ c6 o' D; ]3 E+ Q0 l- Z& {) L<!--#include file="conn.asp"-->
+ B9 X$ G* {% x( i. |1 S1 I<%id=request.querystring("id")%>
" i) b3 x( @! e  M4 u) H<%set show=conn.execute("select*from bbs where id="&id&"")%>
3 {6 M& }' d! t6 n<a href="index.asp"> 0 {6 R9 Z3 O" m6 ~- x2 t' ]! r
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> ; i2 z5 h9 g! ]3 H! ^/ x5 Y( U
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> " _3 L& K; G+ R0 `: @
<tr>
! `2 b' H' k# z  U. e/ |# j<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ( ?, ~) @( K& _* p" {% Y
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
5 _7 G, g" {0 T) e2 [( p/ p( C% `/ F</tr>
7 ~' a9 x" j% @- @<tr> / }2 R+ y8 n. C% K
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>   l7 f" w+ ^, A4 o1 e( f
</tr> " j3 q; {7 ]' A7 P
</table><%set show=nothing%>   V) |3 _5 H* t  v! Q  Y9 L* q* b
' }. ?6 D0 \+ H, ^/ C" R$ d
劲语句---精华语句: , Q3 y' k7 o5 ~0 c. H# V
id=request.querystring("id")
9 ^1 x+ L8 ~( K) Y8 c在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 3 V  J4 S: @. g" {1 v1 S
id=request.querystring("id")就是把地址栏中的id的值读取下来, ! |( l4 h9 q+ M' l
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
, g# D  S" b: U0 k( s所以show.asp使用id=request.querystring("id")语句把数字读取下来
9 M- m, v1 Y% y$ [0 {# a  d& t6 H于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") / f! W) c  u* z7 K0 ?
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" , g6 g5 c% m4 D, o0 J
最后<%set show=nothing%>
5 u  l: {8 b5 H' _/ }% I: _1 h
& t; s" P% {2 j, V, q5 `7 H好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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