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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西5 W3 m8 y; Z7 s5 _- @
真NB..佩服ing .....
7 \, J1 o) C8 M大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
% Y8 r7 M0 q% H9 K
3 c4 k  j. }! G# }* a3 e8 a同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
# I/ `8 B5 e* A2 g) z6 u' o9 L9 \: e
一、建立文件!
% c# e$ b/ c7 F" j* F( F+ Z# h最简单的论坛也要有几个必要的文件,就是:
0 i6 I) q* p$ ]' O7 p
- _2 i( N" x, T: D" G3 C1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
! q$ D2 Q2 L9 \8 s, m# }, r
% j1 p# j* _/ _2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
% _3 b; [8 |* ]+ H$ h  ~/ I) s/ I3 x% H. x0 D
3、发表帖子的文件----命名为:say.asp
3 t5 o( E3 q; u3 |. Z+ N3 U, J7 D* M* M, r/ K
4、保存发表帖子内容的文件-----命名为:save.asp
+ b+ n9 Y% r/ Z+ r1 K# A8 D9 f
5 ~2 G  M) k4 J0 N( T5、显示帖子标题的文件------命名为:index.asp
6 {2 }3 @: z" ~# [! F. D) ^" p* }/ t8 S! L3 C- W" c
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 1 C0 O) k" m5 p* s, f
. M$ K1 K9 j6 V2 {2 W6 n% ~( G
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" , p$ n/ d. ]% l& X" s: O

5 c& L& |, D) |$ |' s二、各文件的主要内容 + b" t" N& T! `- G1 y1 o2 p

, L0 M* |6 _$ B& V1、bbs.mdb - G! r- o  t+ s% H/ e
) X) O0 Q. {3 u+ A, o" s
打开这个数据库,建立一个表,命名为bbs
) k% }* C; w' f4 |
. r1 f. H5 j4 D( M( N, A% o7 C- @0 T该表中有几个字段:
! v8 q" G+ A  E+ n, D) E
% U8 {7 L+ S# ?, m; x3 y: C  @: Zid(自动给帖子编号),他的数据类型设为“自动编号” * @$ y) F  Z; x( b3 l2 o6 C

+ k/ }. L1 n, n( h- f# I$ s( tname(用来储存发表的作者),数据类型为“文本”
+ H% A, `) B7 r- r- w  @  E5 {, @: R. H4 ]6 ~
title(用来储存帖子的主题),数据类型为“文本” 8 b1 j4 ^# l7 `  {3 c& r
: F9 V  |+ j* u  R
body(用来储存帖子的内容),数据类型为“备注” # _2 \1 J8 F  o+ K. K; r! ?

" A1 S6 }! f! e1 L7 ?7 Z, U! Y2、conn.asp + V9 s* {5 x* \9 J1 g
源代码为:
' @2 j; \- n, ^+ }4 y<%
) X7 n( ]; n, Z5 Y! ?Server.scriptTimeout="10" ! {" h6 R! Z; V- J
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
8 u6 }4 M" e7 s3 O4 K9 Y1 [9 |set conn=Server.CreateObject("ADODB.connection")
6 E2 H, G1 j+ ?2 Dconn.open connstr
! {! h7 p/ D" h  Q& V* Y" F: P' I% H( w%> % W5 X; h4 `3 a' i5 K
4 x$ J" S8 C, ~! [& B. H) ~3 w
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
  i, {7 [! V9 P$ J1 S# D/ E8 s. F
3、say.asp
- f3 S7 @6 Y( J6 f# b
9 B$ J6 {* H* P0 X) `源代码为:
$ M4 @* Y) B4 W$ U2 V<form method="POST" action="save.asp">
  M5 E, H2 `' ]& p: n, R: J  `<p>大名:<input type="text" name="name" size="20"></p>
% U" M3 i8 g. K; v6 H" B$ T<p>标题:<input type="text" name="title" size="91"></p>
( a7 ?! d& K1 F' l<p>内容:</p> 9 C* }3 v7 X: ]
<p><textarea rows="11" name="body" cols="97"></textarea></p>
! w9 G- n% d! V) i, \& Y# x; B. s<p> </p>
2 @/ J9 _6 H# B# F+ B9 Q( m<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
" P! {% o2 ?4 p. M4 p: J! m) Z% W* X</form>
  d- e7 \1 D- E' {# ?+ p大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
4 Z+ s. G" p( D$ D. N3 w1 a不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
% k$ r: K/ b: E* A! r; t
" ]5 o6 w6 L  z& `4、save.asp 4 n( v5 ]* ^8 u# a) p
* d7 f! O0 l1 @& y4 ~0 M: Y
源代码: 4 N  X0 N5 G* P7 y  ]& b/ j
<!--#include file="conn.asp"--> 3 p* B2 R: B7 m8 @6 R
<%name=Replace(Request.Form("name"),"'","''") ' Q/ C8 A8 B2 ]$ Y4 G
title=Replace(Request.Form("title"),"'","''")
7 L+ W6 C/ l: W/ M) }/ k. Bbody=Replace(Request.Form("body"),"'","''")
: r" u+ m1 ]; e  i! `' C  K6 L%>
3 }/ h& N3 i- s" n0 ]9 ]- A2 i. u<%if name="" or title="" or body="" then%>
/ w2 x" q& _- q请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ; t+ ]: a5 e1 {' G8 E  ]
<%else%>
. H" y8 m3 `& d/ p( I( T- k4 y<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
$ Q: ~7 R6 q6 L% u; f8 y发表成功!<a href="index.asp">查看帖子</a>
- B" L3 Y& N0 {<%end if
& V8 O$ o5 ^! T6 A6 I; j& ?& Yset savebbs=nothing
  k6 ^( I3 s" l0 O& b# E) p0 N' `%>
1 x7 e' g/ l. A( ~; g- i3 [7 L! ^% @/ R) d1 X) f- t2 Q7 U
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 4 U) M1 s. a3 A1 r/ |
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 7 q+ V8 x+ o0 M1 {
接下来几句:
# l8 {8 n) X& U% I" Zname=Replace(Request.Form("name"),"'","''")
+ b6 d" R% F2 f: Z  O7 w& ]title=Replace(Request.Form("title"),"'","''")
* w7 }3 F; R% j. Z$ p% rbody=Replace(Request.Form("body"),"'","''") & C1 Y- X, ]  @7 K4 ^) T5 j

; l  x+ f5 n. |1 s" @  K9 J- t8 P“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, + ]& ~+ E5 j6 I9 Y6 H
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 8 `- ]& {( u% U8 T* R8 D5 Q5 Q! g
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
* @# W7 ]( L& ?3 f# e. L* ^就是把表单中名为name的文本框发来的数据储存在abc123变量中
# }& N" o* J$ P! X7 I
: u# w8 ?$ }' g  N* Y接着:if name="" or title="" or body="" then 6 a0 t- a" y  h" A
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
( U5 x  `7 _! n* R6 S  {/ d9 f0 K) L“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” / N, n2 i, r7 o! g# D5 Y8 X1 A" E
该语句属于html语法,大家都看得懂的!
/ {# ], N- X* A2 X2 y9 n( R
: P8 C6 S6 f4 K4 x1 P, K/ D"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ; ^, T# n$ l' `
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> / n6 F4 f/ M4 s/ o
发表成功!<a href="index.asp">查看帖子</a>”
* V7 i. c; ?3 s! V3 Q( R4 K6 I/ `5 t+ {# m% L+ Z, n
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
; C2 w$ b% `! Cinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
" Y0 ]: b9 [: k+ {1 ~4 J中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 9 b7 d8 @% g8 P+ \5 c3 Y1 E
values是“值”的意思 . K' g5 H( ?# q% ?6 q( a8 s
就是插入向量name,title,body,向量用格式'"&name&"'表示 6 Z* M# N" h: s7 B' l

' P5 g4 i# q0 ~! o/ J) Z/ J: |( _最后:end if就是结束if……then ! b: Z9 A4 B: x5 c3 c  s( X4 _
set savebbs=nothing可以说是关闭掉:
& ]. A, ^& h+ ?8 m0 xset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
* @& A) W; Q7 B- {5 O" _
# ~1 P8 F) R! U3 Q. o. r
5 j9 |, x# n  I! X' _0 U' x3 k, K5、index.asp
' y- B, F0 i! `3 g+ d源代码: , Y7 E6 q4 X3 L; t6 x
<!--#include file="conn.asp"-->
3 p) H1 k2 ~  K8 h; O<b><a href="say.asp">发表帖子</a></b><br><br> 0 m: k) Z# n9 v# T# q% K( X
<div align="center"> 1 @% X, }" D$ j* l8 V  B1 }
<center> ; |" K' P2 w3 C1 ~7 s& ?
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ( g3 U; I0 ?0 d( |$ j6 @- q
<tr> . h- U( w9 Q4 H6 G# S' e8 |* g
<td width="17%"><b>作者</b></td>
2 V3 h# G2 U! i; }4 J<td width="83%"><b>主题</b></td> 6 ?5 \9 M$ z6 g# s9 H) K2 b
</tr> , ?+ n& i) ?* o; j
</table> 8 }6 Z+ g. A; _& B4 v7 ]; d  p" u
</center> 6 B7 `6 w! u: \+ C# G2 l5 I$ }) \
</div><hr size="1">
- _. g, M2 O8 l! |/ Y% J8 {<%i=1
3 f% Q+ U. J8 q! R/ o2 Rset showbbs=conn.execute("select*from bbs order by id desc")
$ ~2 L1 o' M" h* Z) ado while not showbbs.eof
0 b1 x! U+ q& |' m+ m%> ; P* N3 M9 o3 S! @% t% d# U1 _
<div align="center"> 2 B, @3 r! i0 `" T3 J
<center> * Q. x0 z! ^- F7 l2 `! c8 k- h
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">   h/ i" j$ f) j3 m' Y, M( ]
<tr>
) [$ {! N1 Y# |, d& C1 G<td width="17%"><%=showbbs("name")%> </td>
0 o' M# }. E1 C# y" W5 u  r<td width="83%"> 0 l: A/ f$ t1 I
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ' b% t9 V: z7 Z0 Y1 ?+ f1 P8 a
</tr> 3 l8 }* p" \9 Y4 M0 C
</table> ! ?1 u0 z2 U) q/ y% T7 q
</center>
3 v1 e) w- ?  N4 [7 C( X</div><hr size="1">
  Q, k- c) _. Z- w5 e. [<%i=i+1 % D4 t" P; J5 C5 B
if i>50 then exit do 9 z; u' k: J( D
showbbs.movenext
7 X2 |6 Y+ Z# s0 b4 d7 G5 P  k% rLoop 2 k6 M" s- l8 x: j4 L5 R/ o' w
showbbs.Close 6 ]' D* w9 `  m$ r
set showbbs=nothing / N2 \* |- p- I% _
%> 9 ?/ P& d# f* j1 l( }3 q3 L

# F; ^# f( G- n# u1 _$ @: w这个文件就不一句一句的讲了 1 l6 y; s% s/ A! b& K4 Q% E
主要讲精华部分:
# U9 p) {4 _; R$ Dset showbbs=conn.execute("select*from bbs order by id desc")
/ i! p1 x, @- r5 D意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
+ ^6 q" a8 M. t  [还有这么一句:<%=showbbs("name")%>
- I( e6 T7 w; c% g* ^7 y: O就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
5 c" g$ K& R; z: N. O( w代码中的i=1和i=i+1 ) F5 t% l6 ]+ ~4 G* Q4 z6 u" [7 \
if i>50 then exit do
. ?% D2 `. ~* e/ x# E% _showbbs.movenext
; |9 \5 k5 R$ B8 ]8 ZLoop
% X2 R4 B* S% U4 Ushowbbs.Close
7 _* r* R3 G2 f# n; w! C. L9 x; Qset showbbs=nothing , ]$ ]* L( t, b- l

2 [$ U  j" [# H0 w$ U. B7 M  R这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
, g- T+ r4 n7 N9 v# \  @, G- e9 vif i>50 then exit do中的50可以修改
( q( ]' s$ d" D) Q. k  W但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 8 e8 y4 u& d) r5 k) L7 x' Y& A* O
还有一句很有用的: + p8 s% i. m/ \( Z) X& X- K) w" I/ C5 ^
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
/ Y2 _4 q  N2 A! |6 u% @' }% v! T里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
2 K/ Y  O/ s# V% X: t等一下在show.asp文件中就有用了
7 W$ `( r% ~6 ^! [- c+ @6 Y4 ]+ N3 g% N2 N7 W, r
5、show.asp
0 g/ G( d# b% w源代码:
% J! |: V% Y& N/ Q5 x) P% y' W& Y5 u" q$ D; z
<!--#include file="conn.asp"-->
( X0 ^, {9 p& |; b: J, Y9 o<%id=request.querystring("id")%>
0 N3 P' ~  {7 i" T<%set show=conn.execute("select*from bbs where id="&id&"")%>
) J2 Z# S  T# N0 ^  g<a href="index.asp"> * p# u3 ]0 _* d
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . k# e% P) W# N% @
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> * }- v$ b: o/ B/ j- ^/ ?
<tr>
) V% W1 C) N0 @<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
" d7 ~" p7 a) |( u" `  O3 a<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
8 g# T; f0 J' t) y4 F2 K; f</tr> ; i4 d% N4 Y" n1 B2 b
<tr> - |; R/ D& k* R$ [$ f' e8 B
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
9 P7 \+ B/ P% k. V</tr> 4 X3 K+ u/ E9 s- e+ N
</table><%set show=nothing%> : R' f* {: y2 X- ^, f6 N
8 y3 i- e. B. K5 T
劲语句---精华语句:
; e9 g- v- d" v7 P" d' ?" Zid=request.querystring("id")
; Z; d( z" u1 \, i4 N  g9 W7 w6 M4 a在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, $ F6 m& y1 f7 q( D
id=request.querystring("id")就是把地址栏中的id的值读取下来,
3 t; O& a: o8 m6 [, f4 t" D( f因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ( \) v( S, _6 m" n& C3 H
所以show.asp使用id=request.querystring("id")语句把数字读取下来 3 E9 A, k# K1 L3 W9 s) H
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ) L& U4 Y; C- a8 F
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ) z# b+ l- h/ [
最后<%set show=nothing%> : w6 ?* G6 y6 |

1 T7 L& z9 b1 U4 @% q+ S好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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