返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
( K. g. V+ P6 Z: c5 V$ [真NB..佩服ing .....) y- n1 h# c6 Z) T6 B0 Y. q3 I
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
- d; O9 e; n9 e1 ?) V0 p+ C5 Q8 X
9 x) y% D5 v- M/ Q; b1 r0 a3 D同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ) D% C) m2 s. X( ^4 @: j! K$ k, o
0 V: w5 \% I7 d2 f% k7 X
一、建立文件! * ^7 l; N3 ?2 P1 ]; H! |/ h
最简单的论坛也要有几个必要的文件,就是:
/ T8 f& U3 k9 ^0 H( m8 S& A+ u# x8 v& P2 D/ f
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb * {0 ]8 f: Y# f0 b1 ^( c$ x* l

& P4 {; C7 {& ]2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp . k4 f- G$ _; w/ z
$ v  z( k* L+ Q. V
3、发表帖子的文件----命名为:say.asp , r+ C4 Q; E( c3 M9 R

4 n. y4 |/ }) h1 q2 a$ m4、保存发表帖子内容的文件-----命名为:save.asp
# C3 G" r3 G4 e. _9 K$ x, I/ ~2 c' U9 i% @- p/ |
5、显示帖子标题的文件------命名为:index.asp
5 B8 M3 A& k6 v( k( ^) r, }; M7 t
8 a$ @  P1 h- x* M6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
- W8 @) }: M( ?" q% K5 Y9 G4 m; Q" u: {5 J, A% v; w: i+ `% V2 a
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 8 ^4 N& T) c4 n" x, x0 A
* _  c# O; ]) `; g1 M* d
二、各文件的主要内容
! B  }+ Y; b* B- R
0 y% b& ^6 ~% d2 g. e- Z8 N" B6 G% E1、bbs.mdb
# j$ {6 _, @* t2 Y8 Y
/ ^! }  P& G8 B打开这个数据库,建立一个表,命名为bbs
. T) v' H% E, ]# v; J3 d' j
  ~0 T5 A+ C3 t$ T6 x该表中有几个字段: 3 d3 \/ W" R: B) m

$ P  H/ `/ x* |7 f9 Y" M0 T7 [; o( oid(自动给帖子编号),他的数据类型设为“自动编号” * ]# V7 S2 t) d& K7 U* |

# {. I6 o/ d. J, |: Hname(用来储存发表的作者),数据类型为“文本”
; c7 b% {6 p( x0 t+ [& r  L
; C+ p6 i' O6 U, G1 ltitle(用来储存帖子的主题),数据类型为“文本” 8 P% l; {: M* ^1 P( _
) O3 f# @: s+ h
body(用来储存帖子的内容),数据类型为“备注”
1 a0 S8 q# b. g; W9 w: D8 z0 ?$ {/ d# T5 r8 Y
2、conn.asp 5 f& Z+ @4 U4 h; L) v9 i- E
源代码为:
. i/ Z1 Q, Q3 y<%
. G. x; c* N+ r' u# eServer.scriptTimeout="10" : R: h; s1 r& n3 T! |
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" - g; b% T* X' ]
set conn=Server.CreateObject("ADODB.connection")
5 E$ Y' C/ b8 R' v* P% dconn.open connstr
* T7 P  W4 u) _' p! }+ u%>
) b8 ]% h' a" y* [( q) t
, D$ M+ A) g3 q5 }3 h" B  B! B# x这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
' |2 f+ L; A( {3 G0 u2 i: ?/ C5 M$ W( P! L( ~
3、say.asp ; D" ?+ m4 z8 V: U

% X: z; b' e( s$ Y1 r; F8 I源代码为:
( d* v+ G) v1 ^6 t  V<form method="POST" action="save.asp">
  x4 {9 T/ Q' _6 @2 ?; y( R<p>大名:<input type="text" name="name" size="20"></p> ) j* L7 Q7 w5 a5 e. ?2 o8 F6 g) T
<p>标题:<input type="text" name="title" size="91"></p>
6 b* M6 @4 Z, Z# _5 _: ?<p>内容:</p>
# L) X0 y3 i- }4 M<p><textarea rows="11" name="body" cols="97"></textarea></p> " }: A8 z, R, p
<p> </p> " F: {4 ^2 S; l1 C
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
* U. H2 O9 y1 D/ j; |( h1 J- L</form>
. o1 H, h, q% \8 _( G0 I. h" @/ `大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 ; w2 q2 E6 r+ }/ C
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
/ V8 |9 L7 m& a- s7 M& z8 E
$ Y8 }# R" r6 C/ m4、save.asp : `9 p+ U+ k0 K4 G1 h
9 W$ `' C* B) ?! N1 Y2 T0 E) {2 W
源代码:
% G, J  Y( W+ Y<!--#include file="conn.asp"-->
9 Z8 M  _9 u: _, z- \3 ?7 o<%name=Replace(Request.Form("name"),"'","''")
; I( \# @* {2 T7 o( {5 Ntitle=Replace(Request.Form("title"),"'","''") 8 S% N* v  l, Q9 t% o
body=Replace(Request.Form("body"),"'","''")
9 \2 ~1 }2 y7 Y, S%> ' ]- s: {. V7 Z' h7 E% h: [' @( f9 R) a! u
<%if name="" or title="" or body="" then%>
+ [) k1 s* e+ e; D3 r请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 0 H0 b8 R% @$ P! R# ?
<%else%>
  N& M" M1 x9 n) e2 ~<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
* T, ~' [* k( W8 @5 d4 V4 o$ P$ Y, `发表成功!<a href="index.asp">查看帖子</a> : |; k) c! n9 o
<%end if
% T9 p; Q: {, j. M7 G8 K2 rset savebbs=nothing * F  S, n. C% X8 w3 D
%>
, ?+ C* u2 G" _, w, l/ H
" F3 m  t" f3 N3 l4 o& R: S第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!   {7 u, r2 L% ~& Q" }# K6 d
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
5 k1 N) ^' a: h/ D! `接下来几句:
8 ]. l7 U  p7 t' d/ D8 {, C0 y" Wname=Replace(Request.Form("name"),"'","''") 0 v/ Q' C$ T, U, @& b& W
title=Replace(Request.Form("title"),"'","''")
3 X% |7 c' R, U9 V" `body=Replace(Request.Form("body"),"'","''") 8 w' }& l8 w& ~( s9 m) M* N0 t

5 ]  e$ f4 h0 i8 n“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ( W& U% L6 k4 V6 e  `+ S) b4 L
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
# O% g5 @# `9 ]) p* X1 `) g$ e# `1 e如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
' b+ Q% F  J' x, M4 A就是把表单中名为name的文本框发来的数据储存在abc123变量中 4 Y. s* `1 B: o+ T3 G. z
0 P' R8 a, `+ Y5 C
接着:if name="" or title="" or body="" then
) f/ ?3 _- e- e判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: , l8 K- j( i6 P; k/ k! d
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” , ?3 W: y; j2 \9 e( X6 I
该语句属于html语法,大家都看得懂的!
& C3 T4 x7 V- N3 v& q
. h) J7 K" ~' }) s1 t"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 8 y: n  g' P7 S1 g3 f" \" s# U
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
* c  J+ Y  l& h5 w! v" S2 r) o& X发表成功!<a href="index.asp">查看帖子</a>” 1 ?6 Y1 m  [+ L6 R. V' X' @

: k0 d7 k0 r% k5 Q( u"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: $ I2 D0 A' R: I, w$ f
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 8 r! m, ]3 i- W- b
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")   o  L# t( @. ^; s3 \  N
values是“值”的意思
4 q* a; \% D' r$ I7 G& I" D就是插入向量name,title,body,向量用格式'"&name&"'表示
3 J+ o% G# H6 |7 l6 w- v2 C' p7 o# H
最后:end if就是结束if……then / w6 t+ q- D0 K0 {% ^
set savebbs=nothing可以说是关闭掉: ) s4 ?$ Z2 a$ _. g
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") , p2 R8 {' Q6 f3 Y
3 m; f! _' K$ `  t" Z* C8 I& X$ ~( W
* s0 Z5 s9 `3 f1 t
5、index.asp : x3 ~, O5 Y( `
源代码: 4 T- ^9 N: b5 d' Z( }
<!--#include file="conn.asp"-->
/ t8 g: B* ?& M' X0 A<b><a href="say.asp">发表帖子</a></b><br><br> ! r1 `3 h! V8 }+ u9 b5 J
<div align="center">
% l' r" M8 Y& Q! D7 y1 p<center> , F' U6 Y7 _# \& M1 g$ q# I
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
7 w* J& X8 E% H<tr> 3 g# ^. G3 i2 b+ {& m/ ]) ?+ m
<td width="17%"><b>作者</b></td>
! f' k7 k9 V7 n& g+ |9 K/ ~0 _<td width="83%"><b>主题</b></td> ' n. b+ Y* x# \) f
</tr> ; U8 Z: _7 `; b+ Y9 {9 c
</table>
' p" g! t/ K& W0 y& T</center>
5 s1 e1 G$ V+ z. c$ r</div><hr size="1"> ! Z6 G" Q  N2 O, q
<%i=1 1 X7 ^8 R1 E4 S
set showbbs=conn.execute("select*from bbs order by id desc") ! L7 Q+ A9 C/ i) J8 L9 m# |
do while not showbbs.eof
. |; `! ^, H7 u4 ?7 A- f, {5 E9 U%>
: c0 \& x0 w; q<div align="center">
9 r# ~7 X# |. W- l/ G  S& l  Y# _<center> : S. E* \# j* S" J& Q* x, p/ d
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> $ o4 w- S3 }4 m# V
<tr>
- z9 j# S! r  g% b; V<td width="17%"><%=showbbs("name")%> </td>
( s" ?# X) K. q* S<td width="83%"> ; S4 z6 a) B9 c. A# I! K
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> & G/ g9 b8 v1 F! G- z
</tr> : F% U  E1 @( E& F6 ?% S- Q! b
</table> 8 x, V" v. M( O5 ~% z, {" v: V
</center>
* e  i3 T( z8 C; f% ]6 u</div><hr size="1"> " n9 G- e' K% ~8 n
<%i=i+1
% }# V( O: `% Q/ B% P, v' [if i>50 then exit do ) [9 A1 }6 p3 u/ ^  t0 z
showbbs.movenext
( H% f3 V. E, ]Loop
7 m# _' m- i) Ashowbbs.Close
1 z+ F: r5 j* \4 nset showbbs=nothing
& {2 T! P" h# w; @%> 2 `6 n4 Y3 n- s! |4 v* M

4 x+ P/ N1 E! D: l这个文件就不一句一句的讲了 ) C. F9 Y  J* V
主要讲精华部分:
1 [- X& d1 M5 }! pset showbbs=conn.execute("select*from bbs order by id desc")
. a1 l1 T% D) q) P; M意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
  S3 f) y1 r" c0 x2 a, s还有这么一句:<%=showbbs("name")%> , \% P$ W; r3 a7 s: Q
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs $ Z8 I: z9 W) \
代码中的i=1和i=i+1
# r9 w: }  t0 j5 n' g0 D9 g! dif i>50 then exit do
8 v/ r/ n' `1 }* [( d% Wshowbbs.movenext 3 N( Z+ C. \' o* ?
Loop
0 Q2 H+ N, ]' s+ V3 B9 L+ ushowbbs.Close 2 U$ x8 Q% h- u+ \/ c) D' g
set showbbs=nothing
& x% \* ]" D2 r, s$ j% B  O  T$ D+ M  Z$ v
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 5 |. l; N3 k/ J- I& v6 k
if i>50 then exit do中的50可以修改 ; b5 J3 v$ v6 U
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 . a$ r* V' _! K: x8 H" i% Z: ^
还有一句很有用的:
3 R+ Z0 a5 p# x( x# J5 O4 u<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> / ~5 x6 U# @3 Y
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 6 N9 m% _& b' ?
等一下在show.asp文件中就有用了
- ?& Q8 b+ Y$ ~: r* e8 Y3 c2 T
. i+ m- Z% {5 D5 m0 m2 j& V; ?5、show.asp
% M8 _# m$ S) R* J, Q, I3 y源代码: 5 S6 j3 M  S" [' A  J' H2 r- f& t

3 R/ |% P, ?* U' j. o4 O: J: }<!--#include file="conn.asp"-->
6 F: |% S, {0 ^# ~$ C1 R1 e4 E9 r3 S<%id=request.querystring("id")%>
! b5 a" I4 f! T9 H- ?<%set show=conn.execute("select*from bbs where id="&id&"")%> 9 x- {: `5 |  `8 I+ }. Y$ X$ q
<a href="index.asp"> 7 X7 T5 }7 y% o
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
5 O) i9 R3 H# g( O1 `<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 8 w* }- f" N  T* K, W4 d8 e* J
<tr> + _4 Q( q# D$ B: h0 k
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 9 P1 z- U: h4 E9 r$ F
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
" l# K" m- ?5 q1 `5 b6 O. k" Q  ]</tr> , P/ Q3 q8 X, h4 r) F' R* w% K
<tr>
: ?# H+ K& B  I0 @. p; @! O<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
  h7 y  X; C3 B- k</tr> 1 q  L, ?( K9 A( ?4 H3 Z0 ]
</table><%set show=nothing%>
0 B% R% F% n8 ^* a
( i0 w0 n2 v+ V! m" O劲语句---精华语句:
2 S6 x6 E" ^- M. Pid=request.querystring("id") 1 u: s" H5 k* l  ?" o, H6 G
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 9 v, G4 o4 H+ j) g; U
id=request.querystring("id")就是把地址栏中的id的值读取下来, 9 e3 Y% T  V+ _1 S
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
7 y9 N* h& q, y+ |3 J所以show.asp使用id=request.querystring("id")语句把数字读取下来
- W- w+ [& Y7 \! h  f于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")   |! M& r! B% ]" |7 n2 G
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 4 ?5 G- }. D* z% |
最后<%set show=nothing%> ) Q, f& N* p7 z. R" X

: W3 S5 E- I9 b5 _; I9 T好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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