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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
0 h1 @$ N( u; q& ~7 L! }真NB..佩服ing .....0 _! L6 C! d! J+ M
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
" I  N: M7 }5 i% u
" n! A8 `5 p  X7 n; e+ Y" @& Q% [同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
, M9 ^: @. \, U6 S
' g, I1 p/ @+ @/ k3 }* C一、建立文件! . T0 G3 Q! x% u: Z6 Y9 H: `7 U* V
最简单的论坛也要有几个必要的文件,就是:
9 g1 \' ]3 B0 y( l% w! M4 D5 x
; V4 v. S  a* ?& R1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 1 v4 i$ {& A$ \: A8 B3 x
% w7 t8 d$ B) C6 w3 d9 y
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
! U; `8 G, r/ _# f
+ y8 U7 ~! V$ h6 R3 x2 s3、发表帖子的文件----命名为:say.asp & _0 J0 l3 n4 z2 g* {, D% }1 X
2 p; v0 j& l3 i0 ~$ m) n2 X/ J
4、保存发表帖子内容的文件-----命名为:save.asp $ o5 j. T8 H: e  j

4 T" R# y/ j" p5、显示帖子标题的文件------命名为:index.asp
  J# r& d- }$ B6 ^- Z
- U9 u% |- }' d) ?+ K. g9 x1 g  u6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ! `" }- r; }- I
2 w9 O3 D9 u" ?; G2 s
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 0 e4 b4 s0 k# x8 \
$ @4 h# q4 S/ R4 C6 Q; g6 {% Y
二、各文件的主要内容
0 r0 h5 A2 l9 Y1 w
+ N0 F9 S5 u8 H1 r1、bbs.mdb
1 S  J1 C8 R* D3 p  s1 T" c8 M" J! X  ~% Z5 B9 v
打开这个数据库,建立一个表,命名为bbs 3 _3 B3 G# E: p2 l6 \0 e/ e) d

: L' v. D& h0 l& _( m/ `该表中有几个字段:
' M; w" }2 k3 ?0 S% i7 x
- D- M7 B9 A! A) {6 m& M8 w/ yid(自动给帖子编号),他的数据类型设为“自动编号”
! }. t7 n0 S5 k5 h( ?: k
0 Y5 u( M0 x  j* u! W  jname(用来储存发表的作者),数据类型为“文本”
5 J3 J! }  C+ Y6 h1 b7 f" T9 C5 D3 g7 T% y; G) v6 ~4 [
title(用来储存帖子的主题),数据类型为“文本” 6 K0 W3 g) a: r4 b4 h2 \% y, F
" M5 p* ^. i+ {0 t* |: Y4 y' G
body(用来储存帖子的内容),数据类型为“备注” , P3 ~6 w; a8 L2 I% n: _6 g, w$ M
& [( s4 ^+ V6 r) U
2、conn.asp
1 k  ]* o6 L7 `. w. p源代码为: 4 q. H- o% o' R! I# x% q) o/ T, L
<%
. K/ G5 B! e  ~+ @+ pServer.scriptTimeout="10"
5 p  ]; ^1 d, L% ]- }% h0 u; sc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ) ^) g6 y- x" ~) s
set conn=Server.CreateObject("ADODB.connection") ! ]' B) `* l5 Z8 n8 m' [
conn.open connstr
/ n" a0 V$ S4 B2 v0 ^" z& U$ X" f( }%> 3 C+ M; ~$ I5 M; X% |

0 Q) q9 _. c# Z; B! b0 X5 X' Q& V$ F这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
4 l' Q; O7 b# U6 X* j9 L/ y5 Y
: c% K) r, b/ E3 c3、say.asp * i% o; o. V! T( F
: }3 X4 G+ z; w6 c. p
源代码为: & f5 V9 H9 Z, K5 {
<form method="POST" action="save.asp"> + L4 m+ q& y* W# C" _
<p>大名:<input type="text" name="name" size="20"></p>
- {+ R- B+ E0 ^8 g' {, L<p>标题:<input type="text" name="title" size="91"></p> # L0 E# C. u+ _! z/ u7 F4 l6 U( @1 ]& r
<p>内容:</p>
4 r6 o  o, B( k<p><textarea rows="11" name="body" cols="97"></textarea></p>
# L5 Q/ H+ z2 p! r% c<p> </p>
! X5 f# k3 p3 n, L( A$ `* B8 ^<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> " f9 N7 Q0 {& n* w
</form>
& a4 a1 ^- G0 b& P0 f; |大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 8 ]* a, {% ~& ~$ \6 T
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
" ~# R* H. [. T
$ J* h2 A( f+ s) Q1 ^0 e4、save.asp 9 e0 S3 E4 N% q* R

! h; k/ a% u$ m源代码:
1 M# f$ A  C* J; @9 `& k8 T# E7 ?<!--#include file="conn.asp"-->
5 Z8 j/ \8 D* l5 _' p4 `<%name=Replace(Request.Form("name"),"'","''") 3 C% _* s4 Y2 l8 C. P- b. L$ m
title=Replace(Request.Form("title"),"'","''") & _* R) `& z1 g% Q3 K4 D
body=Replace(Request.Form("body"),"'","''")
) o0 Z, N3 ^, U%>
; n3 _4 W9 I1 @<%if name="" or title="" or body="" then%>
/ c( q. P' M6 l0 U7 |. y' }. b请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! : H0 T, A; X/ p2 v9 z! r
<%else%> - t6 ?8 P4 h( x+ x) h4 ]
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
$ m0 T( ?' w$ D2 W1 j1 J9 |发表成功!<a href="index.asp">查看帖子</a>   R! q- e3 r! q9 c9 d
<%end if
. F/ q: L9 v  J/ B. U) _set savebbs=nothing
4 k+ F" |+ V/ x8 O8 z9 A%> - X' x  e$ h( N# s1 ]( t! O" Y6 V4 y

: `' x+ l7 q4 h* H# F4 z! Z第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
3 e& j# H3 U/ s/ xasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
. i4 e& ?! O% x8 _. v, Q) E4 H6 v接下来几句:
8 p+ U+ J  {  m7 Q6 @name=Replace(Request.Form("name"),"'","''") 2 B1 ]4 ?8 a" J9 K& I  |  X0 Z
title=Replace(Request.Form("title"),"'","''") - [+ r! ~# K8 n& Z0 g9 o% \
body=Replace(Request.Form("body"),"'","''") * Q8 P$ ?2 L# V9 R7 X7 t9 F( W" k: F

0 Q* {6 o9 s- u' u& G( a“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, $ O" t/ X5 k( V- Y
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, . Q9 s# r+ R. ^' ]; w8 [, k- h/ d; r& c: @
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
7 C" ~5 Y( H8 s& ~5 T% C就是把表单中名为name的文本框发来的数据储存在abc123变量中 ! |, C& D! q) B5 A) C) w  a

  ]$ a. A  B& t- E/ j接着:if name="" or title="" or body="" then
- a7 }. n& z. p* N) ?) a判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
* P) D) k# @% a& Q0 f“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
' j- w9 V! A: b5 A+ ^( N- z; J该语句属于html语法,大家都看得懂的!
3 W) P! {- m6 Z
0 j+ h( I. J: `6 n, y2 ~) l. ~"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
+ b* s( s+ n! T! q2 u% g  h“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
4 o; B8 T5 {* d. Q/ N5 V发表成功!<a href="index.asp">查看帖子</a>” - J* c2 |. @% |( Q

* s9 `" W# P! w" W9 D( k7 C"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
, Q/ h4 f" N# h+ [  d  E& [insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
# T4 V9 K0 {: l" T1 t/ r中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 9 l2 \" K- W- q0 l& L4 n
values是“值”的意思
0 L% z" ~. R* ~就是插入向量name,title,body,向量用格式'"&name&"'表示 5 N. p5 S3 M, B4 `% @. x& Q8 g

: B2 H2 B; [# _; K% I! c最后:end if就是结束if……then + E% r/ c3 r! |- r. Q! s$ K
set savebbs=nothing可以说是关闭掉:
& d7 y: H: k/ V* a9 yset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 3 m( m) w5 {- M

5 A& \, B7 f: H: P- R* J5 `0 N- A* p2 V' G4 j6 @9 c8 V2 A" I
5、index.asp 5 ]  X. P( r  v- E( }
源代码: $ r; P+ A+ d' N/ v/ Z5 B2 @, g
<!--#include file="conn.asp"-->
2 C& a; @  K% T  {' R1 f<b><a href="say.asp">发表帖子</a></b><br><br>
6 q4 [- L1 v7 x0 `: _( I. `& j<div align="center"> ( J0 G5 ]: Y; w3 V7 P4 S& ]8 u
<center> 3 g/ g1 H; z( q( h6 [& v; c. M
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
! y. a5 N% S7 z/ J/ b9 K2 f<tr> / t' [# h- U9 H' T7 A5 I6 i  d
<td width="17%"><b>作者</b></td>
' h4 d9 Q/ L4 j1 [5 _& y3 h<td width="83%"><b>主题</b></td> & V1 a5 K/ B4 i3 ~/ h
</tr> * M7 g: R- l9 H7 K
</table>
8 o: n6 r& @  u7 d7 a8 w</center>
  z& J7 f& R; x; J, J: C, d. ?</div><hr size="1">
9 G0 ^$ m7 C& \$ q2 e  H& o<%i=1
8 i( S, z, H0 pset showbbs=conn.execute("select*from bbs order by id desc")
- d* U1 ?+ R+ h  C3 l4 zdo while not showbbs.eof
; N* k3 D3 L4 a' o%>
& x: b! F6 Q5 C$ {  p7 T8 e<div align="center"> " l8 F* W$ l. Y: a1 B
<center>
' O3 _  X. g5 G! `; p<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
; V5 e. w4 E: P& y8 W<tr> 0 _1 y; U' R! Q2 j0 r( _
<td width="17%"><%=showbbs("name")%> </td>
. h+ P) ]7 e; Q" |/ t<td width="83%"> # q- I$ o8 `  o. \4 Q
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> , T2 k& Q1 [6 O
</tr> 8 x1 h6 |+ h! j3 i7 S5 Q. o
</table>
) r( f) c0 ~' D! ?</center>
& M; _: I1 B/ v9 ^; h% T4 ?</div><hr size="1"> " c, c2 G+ S6 J/ h0 l3 s2 {7 F
<%i=i+1
& x0 U  I: ?3 K  f; Y+ w) g$ Qif i>50 then exit do   M+ u- w( i9 J2 `& s8 B1 a/ X
showbbs.movenext : l* E- U1 g0 c/ ?8 E0 R( J- K
Loop
5 K/ k% x* k5 [6 Mshowbbs.Close
% G4 c. Z. H, C* D5 B3 N; Z7 @3 lset showbbs=nothing " j6 E' Q$ m$ a" ^2 [
%>
+ o6 [9 c" v# f: P3 g8 ]9 N! u2 {% g" s; ]' D
这个文件就不一句一句的讲了 9 \% ?) p4 Y+ U: S) A3 I
主要讲精华部分:
$ P1 e! z5 ?) c  J2 Tset showbbs=conn.execute("select*from bbs order by id desc")
9 J/ E, Y- q  b- h7 X意思是:向数据库中的bbs数据表查询数据,并以id排顺序, $ g- }# x# C( c! z7 `# |
还有这么一句:<%=showbbs("name")%> ; g$ h+ C. P2 @. }5 b
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
* p6 H" F/ H! n2 H6 [) Q' O" @6 t/ ^代码中的i=1和i=i+1 4 x* M  @* A3 w& |8 c+ _3 _; F
if i>50 then exit do
0 t6 S; u/ {: Z: o* cshowbbs.movenext % m3 O; W6 E: R. z; h5 i
Loop 0 F* L! D# L" c7 l) Z% ^8 O# m
showbbs.Close : T3 g( L" ^& x: |) j/ e
set showbbs=nothing
% P& y; ]) A# Y: f, F. |! D) ?! N& b8 h$ W
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 6 t; c0 m: Z4 a! \+ o/ C
if i>50 then exit do中的50可以修改 3 {" i- w) |( ~, q" i. ?% Z
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
9 p+ m( m, A3 y: i还有一句很有用的:
3 Y' U0 @( j- o  ^) [<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> $ r1 x7 k$ C* m" m+ i, b% T
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
( i7 P3 o( \1 `) A8 d等一下在show.asp文件中就有用了
3 u; I- j/ g- }0 p& Y
- j; w8 X3 D# j5 |* ~4 l5、show.asp $ `+ {0 m8 f9 o* u
源代码:
: c, V  N+ u  C- g0 R& p& I5 `/ Q* v  w5 }
<!--#include file="conn.asp"-->
2 |4 p1 v: d! A) D7 X. U8 g<%id=request.querystring("id")%> 4 w$ I* i5 _* @" a: \" G. m5 A
<%set show=conn.execute("select*from bbs where id="&id&"")%>
+ r' x$ W' w/ D! A- u: F<a href="index.asp">
2 f& C) T6 D6 I  E<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
. I- A" ?* M2 T. E% q' Y1 f<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 0 @* h5 j5 i" ]7 @+ s
<tr>
3 k# A2 \" l' u5 z  H( x<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
$ Y5 K4 W. L3 x2 }. S3 m  \<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
1 s) ?4 b, t6 o: W5 G/ ^</tr>
: O8 ^5 L% K0 _$ r$ l<tr>
& C# v6 p/ V* j, D3 E<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> : |0 W: R0 N$ j+ j
</tr>
# |6 k* }. u/ U( {0 M& f3 P! r3 K</table><%set show=nothing%>
3 Y; w+ ^4 O5 e6 y6 t( q1 ?6 B
: T! x! N3 m$ T9 @% K# G* K劲语句---精华语句: 3 @& R/ `8 K, T  y* V. J
id=request.querystring("id") 3 V- }8 ]% W% t" M
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 6 }! x$ n+ m& V9 t
id=request.querystring("id")就是把地址栏中的id的值读取下来, 6 w; \% u( ~2 D  u1 }& y
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
+ d' N6 C/ D. b8 F" ?. i2 R" j$ ]+ |所以show.asp使用id=request.querystring("id")语句把数字读取下来
) Q5 L2 w+ J7 p  G/ o0 c( Y于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ( s+ W4 ~. l* e
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" # s4 v  i: {. g
最后<%set show=nothing%>   {% B: o0 k5 Z1 D& N2 s5 N! v7 _) Y7 r
( g6 }: X, k  s9 p  b
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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