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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西  B7 `) L6 J. k# [7 Q. s
真NB..佩服ing .....
) p, |" I) d+ i) u3 |% A# n大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
7 u. \1 p/ _. I4 v+ f
# d, Y7 J7 \8 f3 o( @  W* u同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 6 M! q& y4 T/ [& p" v. Q

( y, B" [  I( z一、建立文件!
: ?6 l, Y/ v6 v7 k最简单的论坛也要有几个必要的文件,就是: 0 O; T, t* h7 Y. C! j- |

( d  @2 ~0 o  x) V- x& O* W' k1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
' P: J# @1 V4 h& ~, S$ C8 D" e& i4 p" I! q9 ^, {, f. e  i; R
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 3 m; v; ^" r& j$ h2 o6 ^

+ J9 V6 x& v. H; K7 G4 P7 V3、发表帖子的文件----命名为:say.asp
5 F8 G9 _. t; {6 r- w6 K/ R$ d9 Z: z9 I- c3 M
4、保存发表帖子内容的文件-----命名为:save.asp
- c' _6 I: Q  [0 _! M+ }
1 Z+ h8 c3 f5 ?% W5、显示帖子标题的文件------命名为:index.asp
$ [9 G2 N7 t% t, N% i! b
) E: @7 g  S: J  `6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ! r% X7 V, x5 F5 v
4 c; U1 w& m# X* \, \/ o- O
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 4 z! f2 r3 @. o3 M5 R5 o1 P
% k/ l* l( H1 q3 D# _1 B% w8 i
二、各文件的主要内容 # S7 U2 t. A5 b9 |- r1 q
; ^0 ]# P/ l* Y5 ~) k
1、bbs.mdb ' T0 a- [9 K0 \( ?9 o' t

' A( E. Z1 R  V! x* P) }5 j打开这个数据库,建立一个表,命名为bbs & _/ X1 P" e* H5 N1 K: z! n) c
  A2 B: H! l1 b% _: t
该表中有几个字段: ! G/ Y8 a+ w: n
2 x+ U: R3 Z1 N8 m
id(自动给帖子编号),他的数据类型设为“自动编号”
+ @- d% p8 f5 d; q) }/ [9 @4 X6 r2 O' \4 s1 ?9 @- E3 r4 p
name(用来储存发表的作者),数据类型为“文本” . Z# b/ I6 S/ O9 C! S( k

) f( I7 Y2 Y# f* Ptitle(用来储存帖子的主题),数据类型为“文本”
- \  r/ g! t# U2 F% P) v. ^' F5 Q- Y5 o, Q- J3 G3 M
body(用来储存帖子的内容),数据类型为“备注” # F; y% m4 x( G/ [& ~1 r
3 ~3 w) a1 g' q$ F9 {
2、conn.asp , ?7 E, {, `8 j
源代码为: ) A* g+ c! _( l1 H' i/ j1 `, C1 Q
<%
* W0 v2 f! ]. [8 D" \  K' ?Server.scriptTimeout="10"
+ }2 l# N' K! T6 \/ z5 M* |$ \c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
+ G/ l) ?; v0 }7 l$ P0 H4 d; cset conn=Server.CreateObject("ADODB.connection")
# S; O/ e; v2 T1 a( l+ zconn.open connstr
' _7 ]. X& x- p0 w5 d%>   ?; [9 t8 C& s9 A2 T( M) ]

8 K# m7 p% h( O) ]* v这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
' J9 o2 z9 A. i% N; F6 X) E. X" a4 l; O* J9 I/ A3 [1 F& l
3、say.asp . V, O  S' }; P! L0 D) u
8 p7 _5 u1 s: G4 c1 }+ W
源代码为:
' Q& a, x7 m3 t6 t; t7 G<form method="POST" action="save.asp"> ( e$ M! E, i) n
<p>大名:<input type="text" name="name" size="20"></p>
& S. {) p! J2 {<p>标题:<input type="text" name="title" size="91"></p> $ S2 n1 z6 ]9 ?
<p>内容:</p> $ F0 w  q2 ?3 ]
<p><textarea rows="11" name="body" cols="97"></textarea></p> 5 T( w& y3 t+ n
<p> </p> 7 D4 U0 s8 _% F; ?3 l, \$ [
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> " b$ F8 T, f! L3 x! ^6 a" V
</form> 0 ?9 A) Y& }. Q+ G  F
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 * |# w& X8 S1 L# Z( q3 e
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! : N# ~: Z  O8 Z0 k; {4 v' Z
, _' l! U, @' U0 [
4、save.asp
) @6 @+ Z/ g, A: Z3 @- C- l2 M, W' l+ j- D; n
源代码:   w9 @4 `' o' U$ g" `( N
<!--#include file="conn.asp"--> 8 l- I: f- g6 _: o! f! U
<%name=Replace(Request.Form("name"),"'","''")
- d9 u' b$ q) d7 H( atitle=Replace(Request.Form("title"),"'","''")
( _: B; s4 p/ t! Wbody=Replace(Request.Form("body"),"'","''") ) x* u! x' L/ C/ q# ]; [
%>
; T3 v  U% v5 w0 t) d<%if name="" or title="" or body="" then%>
2 U& q3 e) ^! C3 l% ^请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
& t$ \& g8 p+ ]: a0 O" t7 N<%else%>
: E) _) s; b" F6 `- x! s<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> . l  l6 d9 U) [$ b3 b( t+ h: ], H  q
发表成功!<a href="index.asp">查看帖子</a>
# _; l! L% N+ ~  h<%end if
. x6 n& }, t+ P8 p( `set savebbs=nothing
( O# r! n. K* H, }, W%>
* Q" I9 e3 H9 R/ a3 `! A  X& ]" C0 g7 B9 e- X) k  N5 k' |; r. s; h
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 2 E  w& L& ]4 _
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, , Z8 U1 L3 y: l- }1 Q" G
接下来几句: / H: D  C+ K( [3 |
name=Replace(Request.Form("name"),"'","''") 5 i+ D  Q3 [$ t, K
title=Replace(Request.Form("title"),"'","''") 9 x7 T. {9 z& |
body=Replace(Request.Form("body"),"'","''")
2 b, B6 S" G- j4 y9 C  o, C$ J  u. S$ S8 F, v
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, " a- F5 p* T; \2 h9 K. h, v) D% k
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 9 z0 W% }/ ~  T2 }. ]2 U
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
1 M. |3 ^3 V( S# j就是把表单中名为name的文本框发来的数据储存在abc123变量中 7 v+ n2 B  j6 `- j' U' F
3 I% p7 e5 y  s9 P4 m4 }
接着:if name="" or title="" or body="" then 8 P0 I. z0 q, a. d/ K9 v8 [
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 0 n2 Z8 F4 Z2 d* l
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
7 M" N* `* Q) n0 l7 G! ^& c该语句属于html语法,大家都看得懂的!
  _6 L* P) E4 I9 n
% D" ?0 O" W/ S' h& s"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
6 j+ S8 a" {% P- K1 |& |/ U% ]3 q. r“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
2 U" r2 C% I0 R, R; S+ G# B3 ^发表成功!<a href="index.asp">查看帖子</a>”
) u4 b, K4 d5 t6 D3 J# i/ B' r; @" H7 g: Y0 @  S  {! Q
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:   A4 H% R& f& D, ]* Q( I, v; D) p1 c
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 3 Z- {  ]+ I9 m. ~* N
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
; M( ^8 b1 _' f/ Nvalues是“值”的意思 2 _( [2 x# X( j0 P5 t$ e9 D
就是插入向量name,title,body,向量用格式'"&name&"'表示
( n6 Q; B/ P- J
& R$ f/ f( P8 _" q7 |, D$ \最后:end if就是结束if……then
; J! K1 r5 T+ s8 r6 T9 _# L& }set savebbs=nothing可以说是关闭掉:
/ P; L1 T& W( L# H8 Cset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
' D" x) t9 N- n; \; N$ i; |$ U/ r: |- g

# P  Q3 [7 S: K, m- g5、index.asp 1 z& p, p6 a7 O; Y. P
源代码:
# R& f- K$ y0 Q/ X; r- u2 m<!--#include file="conn.asp"-->
8 l6 G5 e  ]- l. C! l2 U<b><a href="say.asp">发表帖子</a></b><br><br> 1 Z6 ^1 b+ x! b
<div align="center"> 1 ?4 Z. f9 u2 Y; o
<center> 8 w* D  Z1 T( W! ^
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> - U& J, S9 o) h- d
<tr>
# ?0 n0 u: K4 D! h1 J6 f<td width="17%"><b>作者</b></td> # C+ C5 a: \) w( s9 b$ J
<td width="83%"><b>主题</b></td>
8 G* Q) N6 U6 N</tr> 6 v4 F* `  Z; A$ }: Z! h
</table> 2 O2 L" o5 A: m7 Y+ I
</center>
  C. Z: p) C2 z</div><hr size="1"> 2 q8 i0 b1 R9 K# s% k2 N" ~
<%i=1 # F$ x1 x; @! S3 }* x" n3 x) \. e
set showbbs=conn.execute("select*from bbs order by id desc") 3 G1 y  v9 \$ M+ ~2 l* b- M
do while not showbbs.eof 2 a; V' ]6 D& w: X& D1 M
%> - W+ n5 D, G. r+ f
<div align="center"> 9 R/ T, U" p; f4 @, ]% a
<center> 2 V' ?. M) R4 w8 S# j  N
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
3 I9 R7 k  L& ^( t$ A<tr> & a: j, i8 ~& L7 z0 D. i; [' |' J! t6 t
<td width="17%"><%=showbbs("name")%> </td> 5 k+ P  g3 f4 b% U- \8 d; h
<td width="83%">
# A% ^8 H! V+ G' R3 d/ ~* `* M<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
8 b; V' [, V( l% n</tr>
, B/ `, i5 c8 K</table> 4 H/ r7 m/ X  N7 B3 D% L
</center>
( i& ]( [2 r( J! h% b5 N8 B  V</div><hr size="1">
; V9 z9 Q/ T( U' s# k1 ~<%i=i+1
* u- M8 N# Z8 m* U# Zif i>50 then exit do , F7 h5 \8 w1 t! J5 d) K" s! j, T
showbbs.movenext
( T  Q8 }2 F7 ^( D9 q7 ^2 j" TLoop
* W, A0 B- U/ v( Wshowbbs.Close 9 Q7 V& F) I2 A- w1 k& @9 W" l
set showbbs=nothing
% `4 h/ {7 a4 f( V% o%>
. {7 M& P! T4 c+ k7 h  O" {9 J/ Y( P
这个文件就不一句一句的讲了
7 {+ C$ z/ l: S主要讲精华部分:
) e9 P0 J$ |4 u* ~% e6 Nset showbbs=conn.execute("select*from bbs order by id desc")
% P! _" w5 O7 P; A意思是:向数据库中的bbs数据表查询数据,并以id排顺序, + [' G: K1 [* W/ ~2 {! \$ T
还有这么一句:<%=showbbs("name")%>
5 V& ?' `; G8 U1 v* H5 K' o6 F5 h+ M就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs   [9 X" K2 f2 \4 V3 y0 e+ H
代码中的i=1和i=i+1 ' w; T0 [1 Y( U; A- K. w# |3 f
if i>50 then exit do
& S" r3 e2 _9 M2 h( P0 Z+ ?' Z, q2 N: e# xshowbbs.movenext 8 T5 W" o7 s% A; V# d0 d9 ]# F
Loop
) }  d3 w( ?, Rshowbbs.Close
/ n$ G4 J: r6 \9 v2 F5 @$ O: V# ~set showbbs=nothing $ K  s6 c4 K; q4 Y. t$ D
* W1 x' o/ q; h5 t0 m  f; F
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
* l& O/ |# V& X* [9 Z) u' y6 ~if i>50 then exit do中的50可以修改
8 ]6 |4 `8 W5 |3 c/ Z, `但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 & }+ N; U5 d+ K" P8 _- g$ Y6 R
还有一句很有用的:
" I' h: f7 A. s6 m5 m<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 4 f! {8 c( c( M& y- r
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
7 E/ K# ~. Y1 j( @% m+ O等一下在show.asp文件中就有用了
  a, r$ Q( a3 ]7 x5 ~2 Q. F' v/ r. o4 }( j
5、show.asp 8 z; N! g7 Q' j* J  }) |% Z2 r; ?
源代码: - v' ^/ m- L$ h1 r+ Q
( f: J. ~% N( Z4 Q7 b$ u9 d7 t- s
<!--#include file="conn.asp"-->
# |" Z$ [' @% X; k- D<%id=request.querystring("id")%> * m7 P, U3 t$ n& Z
<%set show=conn.execute("select*from bbs where id="&id&"")%>
& ~' t# n; @$ a/ y  b% d<a href="index.asp"> " e" L! W$ p! v7 B
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 5 G" L1 {+ w7 p4 f: J/ N5 _
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ! D  ~! {. x2 Q- D1 U
<tr>
# ~- y) U4 O9 @% x1 j3 u6 h# ]' m<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> & L/ d4 i; B$ G$ M7 }
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
9 P4 G" ^: U& J. d& t</tr>
' p# M7 s* ]2 t+ ]: ]<tr>
5 r' W; f5 d5 z<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> # l* a6 f$ r) R* _& j
</tr> 0 X  M' M) ^2 |9 v
</table><%set show=nothing%> 1 ?# w( y. \( p0 K. |5 M

. P: G7 F1 \9 h# O劲语句---精华语句:
) j5 \' T1 {& ~0 N. kid=request.querystring("id") ' N, a% R) u$ v" s5 D4 c
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
" x' i1 Z, W' ~5 b- X# Aid=request.querystring("id")就是把地址栏中的id的值读取下来, 0 G+ K7 @: y$ t/ n
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
! d* E$ R" ?) D所以show.asp使用id=request.querystring("id")语句把数字读取下来
% K2 O; _: q- v8 r' f4 K+ d9 y" ]" ]于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") # ^- j% P% U! y5 ]# v( Y9 d1 v
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" : D0 U& q, Q, }+ ?
最后<%set show=nothing%> 5 x6 b( [  E( F4 z: A% K0 _3 C2 [

- m- i+ C1 b1 h5 H+ R- z好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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