返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
( J' T6 e- A  ~2 Z% E真NB..佩服ing .....$ y' p! D* m% r" z* N& p. |
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。* Z5 u0 }. x0 d( `+ L
# t2 q& U/ L) U7 e) q
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 * }; F. A  V8 s% `" m3 |+ Q' S
1 l* d, }0 u; v7 U2 h/ J
一、建立文件!
$ u) M7 J7 ?3 W! L最简单的论坛也要有几个必要的文件,就是:
! f7 d: g9 V# @
8 T% [! B+ v; N; U6 m1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ' S; _  u/ T0 b9 T# ?4 `
- [# Q# v1 ?2 R
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
  {7 U! M. t+ `$ g1 j/ ^" j7 n0 ^' p( J
3、发表帖子的文件----命名为:say.asp
. l6 L" L: M' Y3 V. U! F/ B
$ ]- j" T3 I2 g+ C2 d8 R( d% o( F- A4、保存发表帖子内容的文件-----命名为:save.asp
# ~' B% q/ s, R1 S1 l$ P, w+ m# [- m. |2 y
5、显示帖子标题的文件------命名为:index.asp
, r- A. l' h% u1 x& U8 X; L& t8 X2 A+ ^
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp + w2 s8 v6 q9 s$ D
; s: D/ j3 E7 u& A4 |: k* Q
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
$ x( g! g$ ?  Q3 D7 {# e# y: w! s; ?  A1 c- \
二、各文件的主要内容 5 W4 T! h3 {  v  X% q& ]

5 J9 D' D  v2 B$ s! p7 i1、bbs.mdb : L& S, B: w0 r$ J% T, B
! C$ G  `# F- i/ B6 w2 Z& G
打开这个数据库,建立一个表,命名为bbs + S4 Z0 i! e" {, T/ ]

; y" l% T5 x" G! ]8 ?1 I8 r7 k该表中有几个字段: : ~- U* B7 W/ B2 X+ a
7 @8 r! S9 m( q+ J( ]2 x, j
id(自动给帖子编号),他的数据类型设为“自动编号” 7 W; N+ \- {( r) I2 Q
+ R: l- U! J( H% D. @
name(用来储存发表的作者),数据类型为“文本”
4 O& p( V6 _& @7 Z! V- Y
8 w7 E4 Z. I3 K1 Q" q; Y% D  wtitle(用来储存帖子的主题),数据类型为“文本”
( H7 C% N8 a$ C3 g
: C3 Q* g5 ^0 t0 |9 o( J! H) Jbody(用来储存帖子的内容),数据类型为“备注”
# R! v/ i- b$ Y' G% k6 @" q( F4 n2 x( H+ m
2、conn.asp
% ]) P- H3 L' D9 n( @: `源代码为:
4 Y  G1 T2 k! `2 u2 r7 |<% - R0 X& S6 V( n; A6 `5 F0 B4 g; A
Server.scriptTimeout="10"
7 b- e( Y( W* l6 O# p9 l, H! xc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
" b/ w  h7 J7 x) hset conn=Server.CreateObject("ADODB.connection")
# [: `+ Z5 n  w3 i. U' sconn.open connstr
0 D" i0 X* y. ]( O4 k, ?%>
" j, ?0 k$ f8 h- T# }3 H. `5 i; J. J" e
; O1 i; v) A- Q& r4 c这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
4 ~. c& H$ f" @! U
2 t  ]" z) U4 f7 E$ L0 u$ l2 W3、say.asp 9 V/ b$ L' Q$ @- b, m0 C+ s

1 H2 @% B" A6 s( {6 A) U源代码为:
! t' i0 T: L7 _6 ^<form method="POST" action="save.asp">
& I8 P( o- L3 p- w% \<p>大名:<input type="text" name="name" size="20"></p>
- i1 Z4 g( s$ |  M( c6 B; A<p>标题:<input type="text" name="title" size="91"></p> ( [& i2 `2 C$ l  q9 t
<p>内容:</p>
7 c* U! R6 v' }/ u9 S: I! a3 Q; z<p><textarea rows="11" name="body" cols="97"></textarea></p>
0 u9 {$ s/ f6 t<p> </p> 9 Q. g3 T0 M* r9 S4 I
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>   `3 n$ S0 |' C# h- s0 o2 i5 g
</form>
6 t9 B8 B5 U% D% J9 {# U" n大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
. N8 R4 s% g0 v7 |6 v& h# }) H& D不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
* x2 }" @$ C9 `  l. z
1 w3 i2 ?7 r/ z0 B8 ]7 e4、save.asp
8 F" p6 l9 F5 L8 i" q; T# v
, W: I# n4 G3 B- [: s8 B0 ^源代码:
6 |4 N1 _7 }. t6 z6 I+ l<!--#include file="conn.asp"--> $ [- }5 R9 r* E5 @3 z/ E2 G* Q3 i
<%name=Replace(Request.Form("name"),"'","''") # }2 G0 m4 x( y9 a3 T
title=Replace(Request.Form("title"),"'","''")
* b4 V" b  l# t! Wbody=Replace(Request.Form("body"),"'","''")
* v% W- D; e9 t6 W%> 6 F- z  F$ W5 l% b
<%if name="" or title="" or body="" then%>
/ G, T: n( f( A) V7 j7 l1 M请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
: S9 l. h' d, j+ B! j7 L) ^9 ]- g- l<%else%>
/ h4 x( |. A4 T1 r- t' Q<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
1 k2 A, Q+ Q: u! z  L5 N发表成功!<a href="index.asp">查看帖子</a> ! j0 c: C. L" T( ]
<%end if 6 {2 A, l* D7 P& J5 z
set savebbs=nothing + j, T; r/ y" S0 c
%> ! v7 z# G7 L0 Q! H% y# Z
+ V6 E3 k2 h; x9 d* w4 h! L
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!   F, {% H$ ~) J4 K9 r! Q! `
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 7 x! A$ D( }! F; Z0 G( b
接下来几句:
1 M2 X, {0 X% _7 D* e! uname=Replace(Request.Form("name"),"'","''")
) ^! L) c' k; Z  G9 Ntitle=Replace(Request.Form("title"),"'","''") 8 }* A! k7 M8 c5 y
body=Replace(Request.Form("body"),"'","''") 2 y4 n5 \. E4 x" c* j

) x+ R+ F; a& _7 `+ Z# D, m“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, * q: U8 N$ z! I6 c3 Q% x$ ?# x
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 6 J/ _" K" K; ?; Q
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
: t9 d+ y6 T- d/ W* U; k" S$ B7 L就是把表单中名为name的文本框发来的数据储存在abc123变量中
5 @5 @1 M8 L8 q. r& X) n  F# ]
. R! f4 _2 V4 T2 m0 m+ h接着:if name="" or title="" or body="" then
& M- e  e4 o. M  r. q& }2 J+ S5 B判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: + }/ L1 H: N6 w6 {4 C  {3 _" q
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 0 m4 u" e. Y9 P6 w( N& _( r# {
该语句属于html语法,大家都看得懂的! ! J5 q5 n4 B" H& W

" L+ }: g/ t2 j4 _"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: + D2 i8 l: z) h! F* p7 f, N
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
/ z  s( Z" m9 j1 v; d发表成功!<a href="index.asp">查看帖子</a>” ( r) C& ~; p" G1 O' |

; K1 e; C3 J! P- S"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 1 G8 }& E5 a1 Y4 E. c; y8 K
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
- K  f- O5 T- |& W1 C8 a1 T) V# v中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") * b$ C  i3 }( O3 i  I: w0 G
values是“值”的意思 - Y* J9 a. M4 W( o9 ~, Z+ O* t% d
就是插入向量name,title,body,向量用格式'"&name&"'表示 $ f0 S" x0 W* U# x8 P2 Y* x: b

! w5 x/ K. E5 y0 X' w* s' Y最后:end if就是结束if……then ) }5 f9 K/ T( {; v( r. O) V$ `& f3 h
set savebbs=nothing可以说是关闭掉: ' x; L$ @2 Z2 J9 v9 f' n
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 6 L: n  H3 I! b# O. I
! j* i& O3 R( @: }: A' i
- J( I0 w- Y1 X. S- T: n: T$ _
5、index.asp / q1 m0 n/ {' ]
源代码:
1 t2 [0 V6 \* ~( `- }  _1 v; O6 f$ x<!--#include file="conn.asp"-->
5 e( v  K  l: \<b><a href="say.asp">发表帖子</a></b><br><br>
" J  s# j" y  g; |; F; h<div align="center">
# E7 c1 n, H5 N9 ^<center> , C0 l: B  k/ B9 O
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
% A# d1 k  G* T4 \  ~, i% L<tr> 1 z& ]) V: \0 D4 ]% U
<td width="17%"><b>作者</b></td> ; F3 W- q- d* n6 d/ I! Q/ ^" j2 @% W
<td width="83%"><b>主题</b></td> 6 i: f1 q: U' x* b
</tr> # t3 A- F+ |0 Q
</table> $ `7 L7 n; y4 }' g! ^/ q
</center>
# n3 B( d0 k# x8 I: H1 z! j</div><hr size="1">
, S" z6 Y, c2 Y% p( W<%i=1 8 H/ G" c; q" m% p
set showbbs=conn.execute("select*from bbs order by id desc")
, |4 `) |- q2 l1 fdo while not showbbs.eof
( i4 S+ |% }& D: g( _%>
1 o, l* [2 G# O0 X: s& `* L<div align="center">
. u/ [3 q, J) r+ F6 k5 A<center> & y; C5 N2 z* P6 t
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
# o1 r$ R4 w* C" D0 Q+ h<tr>
1 S& L! Q; `7 x: Z- y' z* i% Q<td width="17%"><%=showbbs("name")%> </td>
' e# q6 J3 C: \8 ]1 N+ K<td width="83%">
" U) t/ l& o; L* c<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> : \4 r3 o8 e: |) V9 j
</tr>
7 Q% A( E% T) Z& `</table>
% y0 B' r$ h8 I1 |8 O3 a</center>
2 t6 K7 p, R- H% s( o</div><hr size="1">
' `: R2 J/ Z9 M3 b0 i. U( H<%i=i+1 3 d+ |3 u- Q' v- X7 s) z
if i>50 then exit do & k8 M9 b  A* E2 Q! Z) `
showbbs.movenext
" f# q, D' `8 C' @  X# ~Loop
8 r) v5 g8 ^- `6 nshowbbs.Close
$ c( f7 y- u; }0 Nset showbbs=nothing
$ c& h& H: [; {2 p$ V6 U: s/ n  R%>
+ S  [: a5 R' ?/ J6 ]' s" U4 B' \+ [( ~3 ]9 a5 f
这个文件就不一句一句的讲了
; K5 K* Y9 l& t  @9 O5 R. ~主要讲精华部分:
/ g# _. f9 y  }! d! Oset showbbs=conn.execute("select*from bbs order by id desc") 6 u4 i. q; Z  h* s8 L
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, " n7 e* W) V! O. p0 J7 T% b; i
还有这么一句:<%=showbbs("name")%> : i, Q- Q( ]( K) f' r
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
6 x4 t2 o% ?, d) {& h代码中的i=1和i=i+1 " N5 ?9 m  G" P6 i+ l% o
if i>50 then exit do
: Z  u& C" w( W" [& n! ~: Z& D/ `3 Sshowbbs.movenext
( L( _8 w6 k. W6 _3 ^& C; ?& }Loop " }" o: @5 D) t! n
showbbs.Close 7 H: Q7 T' X( r9 \
set showbbs=nothing
% w' \* o% H* p! u% ~
+ c" T; @4 L: g) S" e+ {" `) z3 p2 f这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 8 M' [0 z, k' J8 J
if i>50 then exit do中的50可以修改
5 t$ k3 ^' V- f  j但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
) M, I* ]5 T% G还有一句很有用的: 5 V+ ~1 ?- J, L* C2 N+ I! r
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
( K, A1 }  B) n/ f) `" e% t里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
+ x+ y6 q4 e3 E7 o. @- o7 T等一下在show.asp文件中就有用了
* \) }% G( U6 v: l
- J0 y# w) o/ k5、show.asp
' a+ ]9 A" ~/ L- \" T; g源代码:
+ r( Z! I/ @- N8 S3 f
& w3 Q/ L+ b; u<!--#include file="conn.asp"--> , o2 T9 f3 [% P7 |- j' N$ R0 R
<%id=request.querystring("id")%>
8 X3 |: p. O. x$ q$ {<%set show=conn.execute("select*from bbs where id="&id&"")%>
& {  Q$ ]5 X5 Q+ q1 N# K<a href="index.asp"> 2 a* ]; S5 O' u# |& Z
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
. g* a4 `) B* F- F  D' R<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
* I  V6 J+ W9 Q3 z% G<tr> ; p9 L4 T* K2 W; m0 C, O: N
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> % M& G8 g5 a, T  t2 z5 A
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 3 l' i: g% c8 x- |, E0 m
</tr>
4 M! h) \! W, O<tr> ( ]: G0 ?. W! P8 ^4 L! W: A
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
* s% s/ a" P& L: E: Y8 L</tr>
, g  a$ N( B8 n* H. U$ `5 j</table><%set show=nothing%>
. @# }% D0 P, S. ~) E8 r. D0 Q
+ B( t9 I& V- f% Q劲语句---精华语句:   m: ]' }' h; N$ C1 Y  ]+ G9 Q* t
id=request.querystring("id")
$ C9 ~9 [7 J* b% p! [在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ) P2 A: h; q2 N" h) n  u1 k+ c
id=request.querystring("id")就是把地址栏中的id的值读取下来,   ~, U6 s0 R( p6 c4 x, [! |. P- \
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
  w- }1 c$ C+ J/ A5 ^9 L5 F6 }所以show.asp使用id=request.querystring("id")语句把数字读取下来
  X9 j( y: U0 B9 g. s9 O/ d' k于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 2 x3 m; R2 ^# E, O8 n
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
8 _1 ]+ Z' j1 R( A+ t- h最后<%set show=nothing%> 9 G: S/ p# S* h6 w8 @3 X
$ Z8 p9 i1 d" [: q: J
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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