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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西2 O  R# Q4 x& Q
真NB..佩服ing .....
/ w- s- Y. w7 S$ D- Y. s$ k  l大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
3 C$ @. w0 T% X$ T& P+ f5 w* }6 |0 _* H
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 - J7 G6 Y6 Q' S, Q& v  K8 K) |
' _) D# {; f, q5 A& Z
一、建立文件!
4 |6 t' h; C7 |; a最简单的论坛也要有几个必要的文件,就是: ! q8 @# I9 {, A% j3 `$ d  X

5 `% X% v5 W, P+ s; k' \, n! g4 e1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
" i# H4 S) w* v* [
. G/ j3 q+ @- H4 Y2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
" M+ D& V0 [# ]
' x. Y# m! D- N( [: ~1 q5 s2 Z0 ~2 z3、发表帖子的文件----命名为:say.asp 6 S( K4 U7 T2 I5 q4 [6 |/ f5 Y) i
) s6 r- [% w5 V# w* H, e4 ?/ D
4、保存发表帖子内容的文件-----命名为:save.asp 5 j, W) q4 O3 j! U9 ^5 L
! k6 z9 ?' J: c3 S0 ?8 ^5 N
5、显示帖子标题的文件------命名为:index.asp
& {% A7 n/ c) \  M. K+ y7 C) P1 w( t2 Z( T& q
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp $ p0 I7 U0 T7 ^" m
' k# U6 E- c5 H$ c# x) ^* N
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
5 F5 `* M& t% {. R. [% G2 v2 C4 W+ `% o
二、各文件的主要内容
9 o' f" \0 B  `& r
$ r$ U8 G/ T0 k! Z) y1、bbs.mdb
7 {# m% j5 N- F5 }; a* D! E/ m
8 P) ]5 I- T% C+ i- V/ ^+ m6 L- j打开这个数据库,建立一个表,命名为bbs 4 h. [1 t+ H! m- W* c' ?  V
& l3 ^) c! j0 Z" d
该表中有几个字段:
1 j: u2 J2 z% }4 l3 c+ Q- ?
( o1 ]: q" O) X7 H( L: bid(自动给帖子编号),他的数据类型设为“自动编号” # c( F: {" J0 R4 d' b. F

1 x! f/ d! ]6 E: Qname(用来储存发表的作者),数据类型为“文本” 5 b& t7 _1 b: @% }& ^

, s, ~8 w; x1 D! {title(用来储存帖子的主题),数据类型为“文本” ' {, b/ M* y' q

+ ~$ {3 ?: X; n0 |5 M' O0 {! lbody(用来储存帖子的内容),数据类型为“备注” + }- y$ c4 L' D' W8 }6 c

% C8 y2 \! B3 k" {5 y2、conn.asp " U8 D- y- w- u
源代码为:   Z6 K5 i. J1 O! k; ~7 X
<%
+ M) V, ~3 N" yServer.scriptTimeout="10"
7 T2 f5 d, Q3 v7 S# E2 l& s3 c( Ic+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" + H) }, N. I7 }( r3 s5 P
set conn=Server.CreateObject("ADODB.connection") 6 V4 O7 p' c# W
conn.open connstr 0 T; t9 [8 g1 b# Z$ }2 C
%>
* e& y( V* y, o' Q7 B' y9 H( a
! T1 C; s+ z) d8 `& s6 o这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ! H# D& r: g0 D4 |7 f, F8 C0 D
# L) [: g7 U3 H. X
3、say.asp ( Z% v+ @3 {) x' O
5 m& T+ A1 E8 X2 |9 k- Z# a
源代码为:
# n( g* w$ b8 H0 u% b<form method="POST" action="save.asp"> ! j% \" n& Q; x. U6 {/ V/ |
<p>大名:<input type="text" name="name" size="20"></p>
* _/ e9 w1 {; N+ y, J<p>标题:<input type="text" name="title" size="91"></p>
! A% P7 ~8 S/ V' i: W/ }<p>内容:</p>
1 O# C* |% }* \' G8 J/ h) R<p><textarea rows="11" name="body" cols="97"></textarea></p> / B! U/ e0 n; |9 l
<p> </p> ' n! L5 G. _5 v; P6 _$ |
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
% d, G2 M0 X" n# g3 B/ k</form> ( m6 y# L' C: W3 q8 r; S
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 $ ]8 P, P" b- X2 @8 z6 h( K+ l
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 7 C) E9 ?+ W  F3 {

1 C2 q% p4 H1 h* P$ _4、save.asp
7 K; E# Y% Z% p6 _- m+ m1 ]2 K9 Q2 }5 ^
源代码: 3 n/ t9 L3 c$ G  R8 Y
<!--#include file="conn.asp"--> 6 Y8 J* F! w/ q/ d8 l+ G8 X
<%name=Replace(Request.Form("name"),"'","''")
9 F" _# a  a! I" o) u9 Rtitle=Replace(Request.Form("title"),"'","''")
; ]' r6 {! t6 V: I4 C' pbody=Replace(Request.Form("body"),"'","''")
: z0 P5 g6 m2 \' e%>
9 l$ C; c/ k( L* t<%if name="" or title="" or body="" then%> 5 _+ o8 J/ @8 {, N! z
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 1 L* Y! P7 f; N# @( B( b
<%else%> , F/ U2 L2 U9 b6 i0 R* x6 z- T& C
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 0 ^1 C  o2 S3 x, w3 M8 P6 D9 }
发表成功!<a href="index.asp">查看帖子</a> , u; e* D" G  [6 f1 @
<%end if
! q# I" x5 E4 j  Y5 f' Uset savebbs=nothing 6 L3 x6 C( a2 F1 u
%> 5 f% Y! R) K. L4 o4 ~# Z6 h
5 ?9 H) {' \& _; B
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! ) r0 I5 h1 f( y- U4 G5 W% y/ K; v; Y
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
- S) q  `1 h6 A8 G7 P( h' H6 g接下来几句: : b# g' h4 f4 S5 q
name=Replace(Request.Form("name"),"'","''") 7 V* _" ?! w! G& ]1 K3 ?  V$ T
title=Replace(Request.Form("title"),"'","''")
* D7 u9 j) V& O& n2 S7 qbody=Replace(Request.Form("body"),"'","''") # I0 L$ a3 T2 ?5 W; @# n
7 P7 Q+ r; B/ @* L& T# L8 [
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, # M. L0 M, V0 s$ X( M
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, & u2 N4 f1 T, K9 K8 E1 e
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ; ^" D. y4 a! E$ E" E; K2 w" \
就是把表单中名为name的文本框发来的数据储存在abc123变量中 8 D$ F% s! m0 ^( i, H1 W. U* P  x* r

, Y, k3 B6 e8 G7 \接着:if name="" or title="" or body="" then / U' a( B9 H# ^8 H. ?; J
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: # Z( X; R: m3 R6 ^3 T' m
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
# V: F# e" v4 r9 k该语句属于html语法,大家都看得懂的!
/ K. G2 k; s! v7 z9 I" ^3 f
% H/ b; u8 ~- M"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
3 [" ^9 g: I- X; e( C3 g: v2 ?5 ^“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> . k+ v( V/ z* E( ~
发表成功!<a href="index.asp">查看帖子</a>”
$ N, J4 j7 D; [% s" b+ X; T' D' R) D, |7 x# S  T$ n. I- Z- m5 v
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: " O. i" V) g* X7 T4 J3 {1 F. I+ M
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) , L6 N+ J2 p& E; D8 W
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 5 b1 j( p+ {* G, m/ n
values是“值”的意思
/ S, Q: F% Y8 e1 V( `! s就是插入向量name,title,body,向量用格式'"&name&"'表示 & i  R/ F% l+ F: b2 K- b! I& b

# [+ t: W' l6 X( Q, M' L- g9 v最后:end if就是结束if……then
8 y$ V" Q6 F: S  ]set savebbs=nothing可以说是关闭掉:
" i- v* e& e& Z( A$ r3 z( aset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
- |* Q) G4 c6 U/ k% a5 W# Z1 K% q, n5 b2 U

4 C* D; x  d* d: K) c) ]5、index.asp
5 v8 x. S. U% [5 v, o5 D源代码: 7 G% z' d, {" Y: n1 J9 p& s$ T) m
<!--#include file="conn.asp"-->
; l# a4 h5 u" W* M3 G* c5 v<b><a href="say.asp">发表帖子</a></b><br><br> 4 E# _& h8 \  S. E
<div align="center"> ) R) {! y' K' U8 |
<center> # \( z5 B; J- i- f
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 7 I6 V+ }% {: R5 u2 L
<tr>
" g; `, q! U1 q+ s; v9 z<td width="17%"><b>作者</b></td>
8 H3 Z/ J# o3 u! _9 C: F<td width="83%"><b>主题</b></td>
: C9 ^4 t3 B" ?+ `9 @8 [9 \</tr>
2 y7 Z+ D) A4 d3 e6 P8 ^) c</table>
7 h, W% I3 Y0 @; Y  W  ]</center>
, @+ t. u* c7 V; M</div><hr size="1"> ' V; h. @; O  [: H0 ]
<%i=1 / Y" \0 }5 K0 K' ]8 a, `
set showbbs=conn.execute("select*from bbs order by id desc")
4 G; L. K$ L2 f7 ^9 K% x' h  udo while not showbbs.eof . ~' V0 f" i$ H+ J. t# i
%>
* a* x2 j: p5 I& W<div align="center">
* z. ~0 t) M$ @<center> & ?$ ]7 v2 E' Z
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> . D; Q0 S6 h1 ]# c" |! p
<tr>
/ {9 ^2 B' y/ A+ T4 y<td width="17%"><%=showbbs("name")%> </td>
# U& Y0 J: H( D4 s% R: D<td width="83%">
" L5 R' W" t. ]) D% t  g! ?<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ( Y. L) R. B3 k; P4 v
</tr>
. T  F8 A  ~3 Z' z! x, F) Y. m</table>
0 }& z9 Z: ^/ D</center> 9 H  u  |7 E: d7 x( Z
</div><hr size="1"> - M# P  x& r5 @; [
<%i=i+1 + ?/ v8 [% y. B& e6 m
if i>50 then exit do
; y' \5 Q7 j8 i  C& t* Xshowbbs.movenext ! X6 l7 _" y* D+ C6 |
Loop
; C# l6 {0 f( \+ d, b) Cshowbbs.Close + D7 o! ~! [" A& c' C
set showbbs=nothing
/ b) Y# \; _' w6 [1 W4 B%> 8 h$ `* [/ R4 f8 w. [

  T5 \- s& R% a" g% Q" r这个文件就不一句一句的讲了 ' j) G+ F  b' K. a7 s3 a6 e
主要讲精华部分: ! T2 d4 P( y+ c$ E  b
set showbbs=conn.execute("select*from bbs order by id desc")
4 }% k$ H' J3 e7 e( u) i意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 7 A- X+ Z- ^" p8 x
还有这么一句:<%=showbbs("name")%>
/ U& M4 \3 E9 P" q就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs + \) x( D6 d% K
代码中的i=1和i=i+1 2 A8 L& Y0 O7 a' F/ [  p( O" g+ O" s
if i>50 then exit do
0 l: H+ l- m) A6 y9 @6 hshowbbs.movenext
8 l$ ?% G% q3 BLoop
! a8 \9 U; y, d: p& M4 H% ?8 y/ Rshowbbs.Close
, j5 W& \8 Z9 Tset showbbs=nothing 4 e7 E2 s/ x9 e- ~% w4 I

& ]! w5 Q( L; {- x+ V这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
* b: U' P* j0 V0 x" b& p: B7 `if i>50 then exit do中的50可以修改
9 ~' j6 F5 Y. B8 h但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
/ P% G( e0 J# ^2 L! A, |+ ?8 o还有一句很有用的:
: L9 H" u9 w& Q, v. o1 I) x<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 2 y; P8 h9 M8 O. b+ `) O$ k* r5 Y0 q, m
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
: b& `: i/ o0 I/ w等一下在show.asp文件中就有用了 / d* n0 m) z3 F# Y) ]
6 E: r6 U! y( i, \5 d
5、show.asp 8 m; w( O* j: q+ [+ r4 |2 ?$ A1 F
源代码:
8 A9 h  Z0 c8 r9 M/ K$ ~- x/ W
<!--#include file="conn.asp"--> 8 E6 p3 ?0 C! ]7 f
<%id=request.querystring("id")%>
5 D5 z: W8 W8 s  ~9 ^<%set show=conn.execute("select*from bbs where id="&id&"")%> ' v& i7 z! K& H
<a href="index.asp"> ) ~0 r4 K4 k0 c0 c) p
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
5 ?/ F' v1 T2 B$ Y<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> $ k( T: G1 G3 }. A
<tr> + e3 O: k7 E1 J4 j2 a4 N$ W
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
% X, N  q/ P) P) s: L& f+ \/ k5 r! s<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> - b8 D5 d. b& e# y  m
</tr>
1 H$ A4 |9 r" H( ~! ^6 z/ h1 a<tr> 2 }2 I7 i* `4 N- M  z2 j) J
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
8 A- A" k7 m; @/ d) _</tr>
7 G! ]3 e. q/ K9 m) s, r</table><%set show=nothing%> / c1 t4 G9 J' m

& X) _6 z6 ]  S& C  I) }劲语句---精华语句:
; ?  c" N. J" `. Hid=request.querystring("id")
9 g& R, S) Q' y% l: N2 K, b, j% O5 p在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
) U5 I/ s5 T) l0 n) }% Zid=request.querystring("id")就是把地址栏中的id的值读取下来, 2 i* a" Y9 u* P+ N
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
' n0 a* [' e2 S( K7 E所以show.asp使用id=request.querystring("id")语句把数字读取下来 # n" ?8 m( t2 {- \7 y; r2 }- R, ~
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
, g; V( ?: U: O  N向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
4 {# A' W, M, d- T/ @! f  }最后<%set show=nothing%>
( s0 d! T5 @1 t- E) r' |% K- p$ F$ F' C7 ^  q3 U; w
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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