返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西6 K' m+ `7 U" X. z0 B% ^7 E
真NB..佩服ing .....
% N- d: Q0 N* O; {* i大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
6 L% ~7 p! @$ d0 o" G3 s8 H9 D! h9 G+ u# w6 Z  }1 D
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ( x. J8 a' ~' ]$ G! ?) Q
3 u4 e4 R$ f) F& e5 \
一、建立文件!
+ j. w2 G" `7 J6 f) Z最简单的论坛也要有几个必要的文件,就是:
7 n  m1 I+ q3 G; y* B  n" y2 |& Z0 f8 J' D& U9 q# X3 J. B
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ! u5 X0 t6 ^- y. g
" G' W, f  v& ^- j  Q4 S- ~$ g; ]
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
4 [7 J4 D$ s" T  D( E9 N; M" _- k
5 E0 X; P$ w4 v% q. b3、发表帖子的文件----命名为:say.asp / _" A$ {' z, i, V+ u% w; {

4 L9 z; S3 Q* E5 E" |/ m4、保存发表帖子内容的文件-----命名为:save.asp ( _' e* E! I( ?) I+ h# A+ |$ k
4 |( d# n% f- I8 N. G2 V' J9 L
5、显示帖子标题的文件------命名为:index.asp 9 Y/ l  t8 Z% C  V5 e

, y) [3 B# D9 B7 `7 W% n6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
8 \) }- s8 a7 g* m* f; _
+ N* y# W9 u, C  Z/ a; a: ]建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"   m8 R$ Y  t/ i

3 |  n1 r* N7 l4 m  H% I, L# o* W二、各文件的主要内容 # n5 o* Y0 m! z3 j7 \
% u% p5 T( O" w
1、bbs.mdb 6 y4 [5 u4 [+ {3 L0 d7 }8 \

4 @2 X  L; d! a# q/ f7 U- x打开这个数据库,建立一个表,命名为bbs
+ w" B2 X3 \  v, X2 o+ n! `+ N' O  M, ]+ n  D% V, a& `* J
该表中有几个字段:
' n1 Q& P' }1 r. s, ?8 S: M( \8 b
id(自动给帖子编号),他的数据类型设为“自动编号” * U3 B! j! s" Q
6 P6 o2 ?7 \7 M
name(用来储存发表的作者),数据类型为“文本” 6 b! b# g% q* P  n  ]
% G/ c1 I. t% H8 |/ M
title(用来储存帖子的主题),数据类型为“文本”
: U: X& P: g9 ?; S, O! b9 ^
) a  ^* x/ C- Q" Y2 Ebody(用来储存帖子的内容),数据类型为“备注”
6 E1 Q8 `2 Q4 M5 a- N
: w1 x. K6 P, ]2、conn.asp 2 ?! C* r  |# q& t) h7 l" L+ `
源代码为: . O9 z; A7 V& G- k- Z
<%
7 j- y  p5 R6 X# L$ L* yServer.scriptTimeout="10"
6 \% O& \& X, k1 I  fc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
- [5 H+ m1 b  T& O: Xset conn=Server.CreateObject("ADODB.connection") 3 a5 E( H5 p7 H1 H+ n  E2 R
conn.open connstr
: `: q( M5 k$ U%>
& J/ w9 s' R' ]! p; }) F* p
* F8 p* v: u: q7 ^这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
+ ~# ?( `& y3 {" R5 c9 u+ m2 j% V8 S
, C6 e8 F" U: p+ @* w1 s3、say.asp
0 k3 @" Q3 J* Y( F
- U0 ^$ `6 G9 y7 |& x8 W源代码为:
, P4 ]: R* Y0 c& F<form method="POST" action="save.asp">
9 I* {$ A( N0 z<p>大名:<input type="text" name="name" size="20"></p>
  R' ~7 C" c" ?( ]  a! q<p>标题:<input type="text" name="title" size="91"></p>
& u/ Y: U$ X" b% a, x! J<p>内容:</p> 8 b2 [" t  N. U. {6 b& q( Q
<p><textarea rows="11" name="body" cols="97"></textarea></p> ' e* [4 D  e) C' ], D
<p> </p>
9 I, j' @' t& X! k! C" u$ R<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> + b( D8 e4 q% W0 D4 H
</form>
: |  H& u1 c% v7 O大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
! J) o. f5 d+ K3 o% i不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 9 y9 n0 b- u/ M: d5 H% g. b
0 y, P2 ]) K! w" q
4、save.asp 9 ]0 K! C) y. j3 p, G+ ^9 _
- ?" {4 R  ?; k7 @1 G2 r9 c% n
源代码:
, x# k8 {6 J3 I+ P<!--#include file="conn.asp"-->
; q+ P4 Y7 D4 X, w' ^<%name=Replace(Request.Form("name"),"'","''") ; z/ s- e& o; D" d2 o3 B" K% h: R
title=Replace(Request.Form("title"),"'","''")
8 i  I+ d8 b! L; H& T: k0 W# p# Abody=Replace(Request.Form("body"),"'","''")
' {! u$ S* D9 q%> , E4 C; t7 x* c; n! a
<%if name="" or title="" or body="" then%> 2 @* P: e2 q/ j& x# ~6 k  {
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ' a3 z3 T: c; m- v, k3 A
<%else%>
: x8 c. b) l( `: j$ ^) a$ P<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
( r+ a' K; p' ~, g: i8 ^4 `% Y发表成功!<a href="index.asp">查看帖子</a> * V8 S- j4 o- B( N
<%end if - T% t/ d) a& n; _8 n
set savebbs=nothing
: U$ q- W) c2 V% d7 _: H  S%> , |5 Q4 z7 z/ j+ F; \. f

/ s+ B$ a; \0 {) H" u! w第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! : l2 u& B7 H( w0 F: J* x* h
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
$ }8 a4 L3 \! o接下来几句: 6 d4 p" q2 z' g8 \0 q
name=Replace(Request.Form("name"),"'","''")
, `, G! p7 }. gtitle=Replace(Request.Form("title"),"'","''") " T% {% D4 P0 P6 u; h/ g# C
body=Replace(Request.Form("body"),"'","''") ) s; L4 B) r: B% g  c

% `9 y! a( r+ @$ x# Q: k& q2 i“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, % v4 Z$ Q- R0 {2 l6 x' ?
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 3 B' t/ U- ?9 A5 B2 l
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” # c) j( n1 ?- o
就是把表单中名为name的文本框发来的数据储存在abc123变量中 2 g3 C6 U/ u. v/ y( t7 S

+ U2 C4 S/ L4 P接着:if name="" or title="" or body="" then
- c4 H( M) r; `( r% y, k判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
6 V. X9 |& [% i% [5 ^( N8 }“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
  q+ U, j: `; o5 {该语句属于html语法,大家都看得懂的!   H7 i; P. |1 ~( U. s
; v( ?0 r# ^3 m. g1 \
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
5 \1 p$ u2 \0 v5 R! s3 ~# H! ~“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> - W+ t/ s/ N& _, C
发表成功!<a href="index.asp">查看帖子</a>”
' i+ W& ]. ]/ n! n; j  G9 ]. W5 z
/ Y# h+ s7 @* K! M7 F"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 2 {5 c  t8 r) p
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
! \" K; ^) |2 f1 y- \6 n中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
# U% c, g* l: P9 @values是“值”的意思 - ^7 L1 E+ S) F, r
就是插入向量name,title,body,向量用格式'"&name&"'表示 + G7 I0 z5 u& X. o& X

! H6 y5 b4 u( k0 L: y( A7 T9 j5 ?最后:end if就是结束if……then ! N& r1 F4 m9 \; s7 Z
set savebbs=nothing可以说是关闭掉:
  w3 U5 i% j0 r, L6 m: v8 ]1 X3 O; bset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") / x9 S5 {3 H! y5 I* h: i9 t# ]

. V2 I8 h/ r$ M. g: X4 {2 r( b$ w% z: O! p
5、index.asp 9 `% d' ?4 J+ M5 ?( \! t# C' {
源代码:
+ ~0 N" u3 [: I2 s0 E( {<!--#include file="conn.asp"-->
! u: m- c$ z. x! y" W! b2 ]<b><a href="say.asp">发表帖子</a></b><br><br>
6 ^( _2 ]8 H. b% v7 N% N! |<div align="center">
1 R. s' R1 y: V* H7 N( a9 z) a9 `6 q3 o<center> ; F8 e. K1 K6 Y1 ], v+ j' [
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
( c7 ]  o/ U- w/ C+ g<tr>
" G+ L) X& K8 ?+ R<td width="17%"><b>作者</b></td>
$ a+ R8 w9 p9 {! ]& |<td width="83%"><b>主题</b></td> : X5 V, v$ Y: h3 [1 W( Z* o+ z& l, f' a
</tr> $ |7 B4 P; r( Y4 P! U2 E8 D) N
</table>   q1 h) U; t& V' r
</center> ' A, ^5 m) G6 U# k- Y+ Y
</div><hr size="1"> " O5 H7 k" v% w) d' P
<%i=1
8 I" T3 g& N6 `0 |0 ]" N# Z! J" }set showbbs=conn.execute("select*from bbs order by id desc") ( x" t( s' }0 y2 h) h: ~7 v
do while not showbbs.eof
) r  G) q4 S* {1 S8 {( r9 t%>
8 s2 H5 O/ `( X0 R<div align="center">
0 J, B" Z1 l& F7 I/ m<center>
  E7 y2 P& [7 ], `9 v& W: q: _5 {- E<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> " _' X/ Y  C# p  @' F7 a) G1 U
<tr> 0 {: z. Z, j! r
<td width="17%"><%=showbbs("name")%> </td> 3 p) F; h6 [' A! u/ Y$ {! ]
<td width="83%">
$ f  D+ R3 v( ~8 B; y, Y<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 9 Z5 p6 v5 c2 g; D( F
</tr> " `, X6 e+ W0 d" e1 K
</table>
! K+ H5 A$ t0 R4 O0 n- `, |</center>
" a) O. h; a9 }6 `6 j- B5 a</div><hr size="1">
2 H: ]; c5 p! c+ K4 N<%i=i+1
. ]2 N/ Z* R. g0 r& ?if i>50 then exit do 6 _: ?5 ~9 V7 p; ~% M  |
showbbs.movenext
" m. D5 G# C7 R; ?- \$ \% G2 `* c6 VLoop 6 K$ ]% v! H  ~9 c0 `
showbbs.Close . `! c  H2 s+ j8 d
set showbbs=nothing 9 ?3 u: v9 z6 ?2 W  c
%> 0 u) k( c$ Y6 R( L  R$ J

& M; m1 _2 e( j! p这个文件就不一句一句的讲了
  |) N  E4 V" ]7 L' b" F! U) Q; s主要讲精华部分: / c0 i5 R1 z" g- N. o# R
set showbbs=conn.execute("select*from bbs order by id desc")
7 \8 [: `& ?& w! H意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
- W. v7 B# T$ Y3 t' w/ ~还有这么一句:<%=showbbs("name")%>
( z$ w2 `+ s. H1 q% l就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
' V5 {0 ]8 D/ ^" t5 s+ j, W代码中的i=1和i=i+1
, P6 q3 ?% {4 h4 w5 Eif i>50 then exit do
& J4 E% P2 y( z" c8 Ashowbbs.movenext + A) K2 o( f6 u7 ?+ S
Loop & x9 h. S! A  F# L3 d: D
showbbs.Close
( [  I# I0 j# L( b) ?set showbbs=nothing 4 M0 Y/ J5 N4 f6 H

) f: J+ a" ~9 f9 b( s- F这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! " O4 X0 f$ t; r) w. d9 T
if i>50 then exit do中的50可以修改
! Y& f( G1 ?8 R& m. W( b8 p但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
* t7 |% y7 c# s  c+ E1 N3 ~9 L: r4 t还有一句很有用的:
: y' i, P( J2 b7 q3 {) S! s# k<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
( z9 o4 Y' W) Z: @3 m里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
8 [5 }4 x2 Z* c) n7 K% {等一下在show.asp文件中就有用了
" P. e) M  o$ L9 N! h' n, F
# H6 L/ U1 l& S7 X2 I' L- m( x5、show.asp
1 e2 M3 |3 G3 n$ i# H源代码:
; H+ A  x* @5 |5 w0 u) I1 d3 @( ^8 E% h' j% O$ M
<!--#include file="conn.asp"--> ) ]1 P; O  A+ r
<%id=request.querystring("id")%> : M& y! [9 O" j/ b
<%set show=conn.execute("select*from bbs where id="&id&"")%>
9 _5 x* s/ s8 X; A* w! [$ \$ {<a href="index.asp"> - b: L+ {% h" J8 @( l
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> + {1 l5 C& `1 Q" Z
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
( r5 w6 I7 c: c& C9 `<tr>
; F" N. H+ u3 |+ q* `$ R<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ! T% m. {/ L' ^/ n
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> * h: b+ ^. [" f& H7 s
</tr> / _# o6 \; f  D2 j
<tr> 9 \. h+ A9 q4 q, d. P/ J4 g
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
2 y6 E$ N1 t, v4 f8 @# `- A# y+ F</tr>   x% z, r' k" v: t; W3 ~
</table><%set show=nothing%>
" m# m: k% w) D* ^
& h6 O  n) l+ C8 e劲语句---精华语句: : O2 l! D. x$ |- E
id=request.querystring("id")
7 g/ d% C: S) R/ B2 h在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 1 k0 t+ Z' t* h- k& f
id=request.querystring("id")就是把地址栏中的id的值读取下来, 4 T! r; T* T% S' n& _
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
3 U8 \# H" @/ k" L, `2 Z4 c4 J% G所以show.asp使用id=request.querystring("id")语句把数字读取下来
2 K0 S4 Z, B5 r于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") & Z! K0 f4 N* j  W0 ?% ~7 X
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 0 B& K1 G) w& a# X" w2 Z
最后<%set show=nothing%> ( i8 X; U( f' A3 D. p
! T* ]5 R" y7 {5 V! V7 O$ P
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

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