返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
( v; g- j. C5 t, A& i; D  T真NB..佩服ing .....
$ K( k( q8 ~8 u0 G% Y8 e$ b6 O* X大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
3 O7 _* g- N4 W- R3 e8 E
4 u0 b- B$ a* f& q5 b4 P/ k同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 3 g" b" m8 j2 M4 _
4 |* U1 a$ s# z7 ^
一、建立文件!
/ j4 K9 i5 y/ J" L8 W2 P最简单的论坛也要有几个必要的文件,就是:
7 Y. u' q. Y! _) Q
, W+ t# o7 z; x8 _5 C1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
. T! E3 R% p( G
& }: {' b# b" N: ~. Y: e* R2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 3 w7 H' o$ ~7 _/ L  ?

$ H/ o  u0 I1 W$ f/ ^5 [8 ~3、发表帖子的文件----命名为:say.asp
3 t  b% X& I6 T) U7 z4 u9 b: N) K! M- a* [
4、保存发表帖子内容的文件-----命名为:save.asp / a4 @' U: r6 Q8 y  E
$ w2 }: j" g) t! ^$ f9 p% T$ M( O
5、显示帖子标题的文件------命名为:index.asp
: F4 h4 U" E% c% Y" z! c  f; I/ m; ?7 {: {* Y  ]1 M! L. N
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 5 Q1 Z: r" r! |2 L& a, A9 X( t
% P4 l! B& B/ ]/ W) U: Y
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
+ Y# r  \. p3 A) G8 k1 O- v" d% ^
9 `; D& k5 J' b$ \! j二、各文件的主要内容 # a, r$ A8 F- Z/ Q

' G. E: Z% Z2 w9 C2 d  u  `1、bbs.mdb   ^/ J+ Q3 T" [/ b" \* u& y

. L6 S+ w( ]) l' ^打开这个数据库,建立一个表,命名为bbs ( e! N, C" n6 a( }, U( V, N( a

1 Z' V9 U6 q, E+ w) W该表中有几个字段: - w# ^) E+ a. d* c7 r9 D; Y& v8 V

; l: f' S0 Y& O. Oid(自动给帖子编号),他的数据类型设为“自动编号” 0 H2 H9 `& Q2 p, s
. j2 o! N3 L2 x9 |
name(用来储存发表的作者),数据类型为“文本” 7 F: i, B, I9 _" d
3 ]4 ~2 i, F  j5 K0 h% Y
title(用来储存帖子的主题),数据类型为“文本”
1 M9 ^2 U6 X( }& R; o
! i3 P/ x; [8 Obody(用来储存帖子的内容),数据类型为“备注” & y+ X; \" I" m! c
% R6 g/ D7 w( U/ _# y
2、conn.asp ; O8 c6 g0 O6 p% ~! e& i
源代码为:
% o; D  s. B: ?( M, Y- u4 \<% 4 {0 m" R8 q+ O8 [. k  L
Server.scriptTimeout="10" 1 t2 K0 s6 e( Y2 @5 P2 I
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 1 ?3 f: @& c+ u- V5 U) g
set conn=Server.CreateObject("ADODB.connection") / }6 P; f9 a$ A5 K2 _
conn.open connstr 1 Q1 i& j% e6 p$ x, e9 S/ D
%> 6 k4 ?' C/ D0 l1 D

5 j! C2 l8 ^' Z& a& c8 i# Q9 a这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
, N0 I) N7 m4 [4 \# X7 @: h8 f* E  D! P" c" M
3、say.asp 1 O& @9 D" A" M6 h6 S) z

: H3 P) f/ _- V  A/ S! w8 a3 I9 h3 C源代码为:
! E4 Q- I: q7 R& V/ V) p<form method="POST" action="save.asp"> % V" e0 I" _/ U4 |4 X1 ]
<p>大名:<input type="text" name="name" size="20"></p> ( f0 n# ~% f. A' P! V4 d
<p>标题:<input type="text" name="title" size="91"></p> 5 W8 \' {+ d+ @2 |
<p>内容:</p> 4 Z; `5 }( u% p" M$ u
<p><textarea rows="11" name="body" cols="97"></textarea></p>
% z) Q* D+ l- E2 e<p> </p> - {, b$ |0 q* c) y( g, C
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
9 x& O9 e* \: H5 ?7 z</form> % x3 s, g" b" |: R
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
3 h/ W3 v# @( H+ X* ]$ u9 F: s/ |( L不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
7 Y9 B+ W2 l. N' z( u/ d3 P! d/ E! \9 x( e
4、save.asp
: M: v( a! B% v4 }  z! T
9 Y+ |9 c6 s# V4 M/ {( Z, d源代码: 9 Q: R& @: F* Z& s% ^# m
<!--#include file="conn.asp"-->
0 \) R2 j' ]1 Q  j<%name=Replace(Request.Form("name"),"'","''") / K. U) Z- ]7 w
title=Replace(Request.Form("title"),"'","''") + e8 g, X, R' L+ F6 E
body=Replace(Request.Form("body"),"'","''") $ k  A3 G' M8 ~" s* X
%> $ j4 I! _! j4 ?+ w' A& K
<%if name="" or title="" or body="" then%>
6 j. P9 |/ u0 `- z/ g3 M请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 5 z) `8 K( H, C7 X/ Z
<%else%>
" _1 h# i8 u& N& I/ X9 ]<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ) x# n* x& T% x4 n7 @3 L
发表成功!<a href="index.asp">查看帖子</a>
0 m8 C4 `+ ?) A<%end if 9 U8 O$ Q6 x- c+ D
set savebbs=nothing 6 u2 e) n4 A0 F% x
%>
0 @6 X. U1 V- G6 z
* p7 o- Z9 L! \3 h9 \9 U第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! - [: }! Z  G; T1 l9 ~
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ) h5 Z" W- ?$ U# C) s
接下来几句: 9 I' d4 E, c9 _
name=Replace(Request.Form("name"),"'","''")
' i/ ^3 ]- i  R: X! }title=Replace(Request.Form("title"),"'","''")
7 v6 Q, c+ V3 V4 Gbody=Replace(Request.Form("body"),"'","''") . }' g# r7 J. y# I
% B9 _; B/ [. o' a5 a3 n! T2 l
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
4 @$ p2 H2 r7 q4 A: J7 A* Z: ?而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,   \  D% u% \7 n( q- r1 h- S- `
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” * t8 c+ g+ d* ]; n- b* d, J
就是把表单中名为name的文本框发来的数据储存在abc123变量中 - ~( Z3 S' o9 ^. V6 ^( I/ p7 v

( f5 p! z8 P1 q0 ?# u4 \' X8 L接着:if name="" or title="" or body="" then - W% C7 U& y7 V; v/ {
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: : B+ }) @% O. b+ L' E% R. a
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
  Q0 Q. k6 I- N+ s* ~% o. n该语句属于html语法,大家都看得懂的!
; A" s7 o8 \3 c+ v- V% ]
% r- c) L5 v0 e. m"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
6 N% h* E5 ]  ~“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
. @2 W% v& `0 j1 O7 g  b发表成功!<a href="index.asp">查看帖子</a>” : r0 c9 [/ A  I3 E2 `7 L8 T4 ~
4 ^1 D) s6 Q' J) I' n( k
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: % _  |# ^6 r! h8 v
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
: N1 v. L. y1 A! ]+ w  Y中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") & U  w4 b# Y+ u, I7 y) ]+ i
values是“值”的意思
  f% G% j  {6 F  ]2 |就是插入向量name,title,body,向量用格式'"&name&"'表示 ( W8 c6 Z" E) ~* N7 V

+ f( _( G2 {8 h1 u最后:end if就是结束if……then 1 E. x: O6 U9 M! I3 r0 P
set savebbs=nothing可以说是关闭掉:
% E. K8 |/ o9 b$ |" ^% q5 R/ E* cset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
9 x- F" \! N: N. A$ H
) w6 k7 W( S  i/ g4 L( P* K# _( b/ O* I7 \- F
5、index.asp
& Q  |) ^( S1 G0 `源代码:
% q; H* d" o# a) m<!--#include file="conn.asp"--> ( {+ T: D+ @$ ~2 v
<b><a href="say.asp">发表帖子</a></b><br><br>
* D2 h3 O1 H; {  U<div align="center"> : F; k* L7 z" C* ^" @- @
<center> 4 Z& ~- a0 B, z/ ~: H
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 8 Q/ ^) T( a( q+ ?
<tr> ; \( R7 T9 ~- j
<td width="17%"><b>作者</b></td>
. j0 n; |" t" V( R. \- q<td width="83%"><b>主题</b></td>
8 W8 ^9 o8 S  {: m% e+ }2 i( y</tr>
* ?$ ~. O4 h. n8 Z, f( x" P</table> ; Y2 `1 P' M0 @( [; D! k: ^
</center>
/ \" ^3 y8 R) X  c: v" S$ D* f& c</div><hr size="1">
8 f7 l0 a8 T$ ~% _1 _<%i=1   @+ s& r5 w6 N4 U5 p. q
set showbbs=conn.execute("select*from bbs order by id desc") - @' d; v# _$ D" \1 Y3 Y' g; |
do while not showbbs.eof 0 N5 G  q# t) |* h4 s6 I; N' Q; {2 {
%> 9 n( z# Q8 }$ C) \, G3 d
<div align="center"> ) ?3 [' S# w; L
<center>
6 n. l$ j  z$ [! X<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
* T, u; l( o9 r: i- ]1 k3 L<tr> 5 X# o  z$ K7 u% K2 s" e
<td width="17%"><%=showbbs("name")%> </td> $ U9 p' H" L( U8 K
<td width="83%">
3 W1 x, Z+ v7 v3 {- S<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ! O$ V3 z' i2 L& r6 x+ Q
</tr> , I! B- w7 A" T! _
</table> * w2 ?% U/ S! F% A$ Y7 c' P0 r$ A
</center>
* N- U2 U( P: q' @1 q  q</div><hr size="1">
  _" ^: T4 x+ ~9 B8 w* G<%i=i+1 1 B) F& n9 F4 }: w
if i>50 then exit do 6 p. D, _  A6 k/ j, A9 |3 B: m
showbbs.movenext 1 N" ~7 ?, D$ x. W
Loop ! H( G, A; S+ e/ S& P( R% r$ w
showbbs.Close   ^& `+ P8 f0 R
set showbbs=nothing 7 m8 U. N3 g1 Y& K3 C
%>
. S$ u5 ]2 _6 P( M- r; Z( C1 U' ~3 M+ ?0 s& J# P3 W4 m
这个文件就不一句一句的讲了
& O( {: f1 B$ B; W' l主要讲精华部分: 1 C/ }. o, x3 k* r
set showbbs=conn.execute("select*from bbs order by id desc") 6 W( _) Y! A- T3 B6 n: m
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
  l( u6 ~% i: U2 {0 w还有这么一句:<%=showbbs("name")%> 9 Q- M, N- o5 r. h* ^7 C' Q
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs - a2 J  o- ^* O
代码中的i=1和i=i+1
3 {, u6 }5 f1 gif i>50 then exit do
9 h. K$ H1 ~3 t  a& u% [) _showbbs.movenext
" p  e( U0 e8 W3 q! eLoop
, H5 g  u. A% X" Y- ?showbbs.Close 8 Y+ a6 M' y# \  u. y
set showbbs=nothing 4 z' J1 G$ _: s- C6 Q$ v) v$ ~

% c" @  j" w* Z# s: A* G这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
' M+ g( v& d$ j0 i: I& D) k# Wif i>50 then exit do中的50可以修改
3 o) N) ?+ a$ ^8 m6 e6 r但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 7 F8 _  K0 E  D! y: t* A" G6 S% y
还有一句很有用的: 6 d7 c/ N' _& p) Q
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 9 L1 w* [3 i! ^1 }6 W8 |6 s( s
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
, e: o0 ^5 F8 `2 b9 i4 F等一下在show.asp文件中就有用了
8 j2 D: D# ?$ z- X4 X! Z4 U+ B1 k, `8 {3 @2 X* t; H  X
5、show.asp . R7 a* \5 e/ s0 s" a6 F8 ]) h
源代码:
# @" L  V% L" z- t# V* N9 E. N
7 R/ t( s6 n9 z2 k1 Z<!--#include file="conn.asp"-->
$ O7 Y2 W7 v* y  S<%id=request.querystring("id")%> - g9 V. }. i2 b# u5 `; d
<%set show=conn.execute("select*from bbs where id="&id&"")%>
# i" `0 o5 K/ v# b3 N# R0 i<a href="index.asp"> : O) R, B3 h& l' z+ i2 O
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> - K+ O9 n) `" t4 b3 o& G  A
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
0 X  B1 c1 X3 M3 F7 E% ~<tr>
; B' ^5 _5 a  }; D' j; b5 `<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 3 c/ X8 i$ T% G  B# A
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
. N" w8 t8 v3 Z) e" k2 J4 t: W- X</tr> ' b" t0 a4 l6 E- O; e* i0 a, o
<tr>
3 P( l* f2 S$ w% V5 w1 R# I; v<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
; f+ e6 }' m7 C; S; c+ t</tr>
: C' K1 q4 m, F. V! C% F( u</table><%set show=nothing%>
% v9 t8 o# t2 t0 D  ]7 R  S5 e1 a% J) _- k3 k  I1 F
劲语句---精华语句:
: B% x% D6 T3 i- T- O+ Kid=request.querystring("id")
: w: i) a8 E& ~" d; W2 [在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, . v' g4 g# \2 c5 b5 E
id=request.querystring("id")就是把地址栏中的id的值读取下来, ' R! Q3 v8 K! z" J  B4 j
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
3 r2 o2 V2 l) U4 \所以show.asp使用id=request.querystring("id")语句把数字读取下来 " V0 }  l+ G6 d1 E. i5 b' \
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") - J/ Z3 {0 H/ }0 {  D/ b; o
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
* o& Z9 C! E  x7 Q" ^, n& }6 R5 s最后<%set show=nothing%> ( i0 K% [  o* }# F0 }; ?/ P; \

9 G. x8 F6 L3 x) Z' i% J( T( j* }/ X好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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