返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西; O! c4 G, u6 S4 {: m
真NB..佩服ing .....
2 \7 O! J0 l* y. P+ F; W' V0 m4 h大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
% ~7 u" V, F. e( C
5 P: H7 {# W$ e2 s$ j, D' h同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
$ A) L' ~( u/ D. Y
& J! I2 Y7 F; F5 E2 L$ [& R: t, a一、建立文件! , ]% \$ z3 f- s7 s
最简单的论坛也要有几个必要的文件,就是: / J" Q; v' {# `( b1 ]+ N- v+ }
$ W8 `  S; @8 _0 @
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
6 c' _4 Y+ {0 Y; F$ [# F  h% K; z: T! d/ G8 K
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
+ }; t) o1 V% Q2 f) E8 p  b9 v7 `3 ~* r  H
3、发表帖子的文件----命名为:say.asp
3 m, n# u  {; K; ^. ]3 Y
: {( o, Z7 K, R! z0 I1 W4、保存发表帖子内容的文件-----命名为:save.asp
+ b. P% ?) [: _* x# Y
+ e$ j+ A+ j( z5 ]# g5、显示帖子标题的文件------命名为:index.asp
; o# \' Y+ w' h3 @! x) Y' C
. Q* R$ D4 N- j8 |& x* n: \$ |- V6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp   N& i( ^% p9 x+ _  g' p$ S: Q

2 L/ B) p+ E" F" B3 ^建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" # @- [5 x) U5 J! g+ M( I, i" ?2 o
" o3 E8 l. ^  q
二、各文件的主要内容 ( u6 X& g( L! ~" l2 c
" ?1 @5 t: f. ?
1、bbs.mdb
4 t; Y( b' X% U' M8 G6 t6 i. w3 R
打开这个数据库,建立一个表,命名为bbs
. J6 m- F0 a, Z6 j& Q/ ?3 O- C% r* a9 K" R1 ]5 X8 A5 Y% z
该表中有几个字段: " g+ C6 Z# X9 h+ b9 c

0 h6 ^% x6 l; @1 Q6 @id(自动给帖子编号),他的数据类型设为“自动编号”
1 X9 r# _6 N7 P- d6 J2 Z8 ~. a  h4 v( ]6 M  H# l; ]
name(用来储存发表的作者),数据类型为“文本”
: a! X6 h  H1 B2 z( |8 b7 J) F$ ?/ @
title(用来储存帖子的主题),数据类型为“文本”
/ ^8 r- P. ^8 a" S- F7 i; c5 z% e1 @% Q9 h5 M
body(用来储存帖子的内容),数据类型为“备注”
0 S: B0 J0 ~. p# R% i+ M! H* }( j3 `& u- a( l  n. m! y. m
2、conn.asp
# ]( |5 Z9 ]) a) x源代码为: % [  D8 D5 R6 ?
<% ( i* t. _) e% n2 q8 b
Server.scriptTimeout="10" 2 |$ ]' D3 s; v9 W
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  W/ v6 h$ i3 y5 Cset conn=Server.CreateObject("ADODB.connection")
4 O  O; v2 C% a# K& {9 t/ ^conn.open connstr
; y5 ~; B  O% `; T% f( t: c/ c%>
6 i( O: S8 e) X, u- r
) \0 ^( D( B( a/ p, {% a8 \1 t, O这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
1 F; P- I5 D, q  B- G5 r
- E6 T+ U4 |) a# t$ b# d% B3、say.asp
5 W+ Y$ }8 l1 M0 S
# p  ]% x3 L* r8 t! H  U源代码为:
+ I4 ?3 x, H. A  |7 c<form method="POST" action="save.asp">
$ a1 K& O- n6 e+ h/ R" i  l<p>大名:<input type="text" name="name" size="20"></p> & u* j! t$ f8 m2 w8 ?8 P" f0 O/ E
<p>标题:<input type="text" name="title" size="91"></p>
: s! x4 m$ f0 e<p>内容:</p>
' {2 b4 f6 ]4 V' q( ^$ W+ R- r<p><textarea rows="11" name="body" cols="97"></textarea></p> " K8 g/ e" }: R2 w' `
<p> </p>
& K- s# H' s; ^' U: s* d! u<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
; ]. l% c: ^  j5 B/ A2 s/ w& m9 [</form>
! i" N7 \8 e3 O大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
: g8 a% k2 h. d/ i不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! : }2 _9 x( j! l% s
: X% X1 }, p7 K5 P# N& K5 O8 g1 G
4、save.asp
- f; Z0 |; Q" K8 E' O9 C5 s3 i, |! M' C) }" M& l! W
源代码:
8 H7 \/ ?9 u: h; @& k<!--#include file="conn.asp"--> * m8 `9 ]5 A& v; K. Q
<%name=Replace(Request.Form("name"),"'","''")
) \" p# f& l" F0 Y. Htitle=Replace(Request.Form("title"),"'","''")
7 b3 B3 Q3 ?, \body=Replace(Request.Form("body"),"'","''") # }  q4 e6 e% S+ \7 P) o
%>
) c4 m& m& u6 W<%if name="" or title="" or body="" then%>
  s% U: ^/ y) N+ w# r6 P请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ( H- i: L4 s( P
<%else%>
* N- j+ h1 @8 E+ p0 M; g, E8 I- Y; r<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> # W0 ]& t0 O2 i' z% F5 D1 M- P; T0 K
发表成功!<a href="index.asp">查看帖子</a>
( W1 t$ J  ?5 h! |. ^<%end if
& k1 f3 ]* e, ~! S7 ]' E8 f3 Pset savebbs=nothing
7 K9 d0 [' j/ p% Y) }. l%> 4 E" V% L9 u: P9 A

0 P2 [$ o6 O' P  q: L; U6 a第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
! Z8 L0 [+ W9 Y1 ~8 M. Z5 E( Masp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, * R( G1 `! P' h  g  U/ L" z
接下来几句: ' h: }6 m$ P5 B2 P& c& p
name=Replace(Request.Form("name"),"'","''")
: u& F+ v8 A4 a2 z  [6 k8 ]title=Replace(Request.Form("title"),"'","''")   o) q: Z- x) z  D
body=Replace(Request.Form("body"),"'","''")   V3 a9 ~0 a+ b% V5 Y) ?" L; v

3 @. O4 B0 G& D1 U/ q6 Z“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
  x2 i- P$ o! W8 J/ C+ m而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
- G' G% M& r, R; d% n9 E' F如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
7 u$ J5 X, \( F* }' A3 H+ j4 t就是把表单中名为name的文本框发来的数据储存在abc123变量中
3 x# y; o* s0 T/ l7 f3 X; q9 C, A# b  H7 g; z) M
接着:if name="" or title="" or body="" then + a' E# \. v) `) S# l7 G; W
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 6 t! M! S6 f4 G; f! x5 @% N% j
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ; Y7 G3 A% S9 p+ A8 C
该语句属于html语法,大家都看得懂的! : F2 R1 ~! \2 D+ c8 w3 S
+ O# s8 ]/ c% y. I: ^& ^- V4 p
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: $ v! x6 w# @) v( Y0 K/ r/ b
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
. D. n/ ]2 d5 F+ Q6 l发表成功!<a href="index.asp">查看帖子</a>”
* l$ W" M" P2 X: T  b- W" v: R4 u1 @' w  R# S4 N7 S
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
8 Z, [4 j, O% m- Hinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) . q7 P! y$ Y& i- U6 q% R9 y
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ) ]4 \' |4 h, I0 W3 W5 w: j
values是“值”的意思
9 U" [; r5 A1 Y就是插入向量name,title,body,向量用格式'"&name&"'表示
1 W/ S* E6 s1 G5 {( U+ q
! ~$ w$ a, x1 r3 u0 \; X8 L. @最后:end if就是结束if……then
2 [; F+ c% C9 [& F: vset savebbs=nothing可以说是关闭掉: 0 u" [$ j; u: D& n* Q
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
1 l) g" L% ?5 I' _0 Z2 `2 p  X+ d( O, w9 n  }( b6 R7 w

5 r% U5 A' ]( q3 |5、index.asp
, d1 E# f% M! o- k  G- `2 x" Y源代码: 3 l. L, Y/ Z. |3 Z% p8 o
<!--#include file="conn.asp"--> # Z1 D) G: L! H: Z, y' U! L
<b><a href="say.asp">发表帖子</a></b><br><br>
/ I: E8 Q  B, F. a9 W1 T# `' R: {$ P<div align="center"> + A. r; @& r! H& k
<center>
- v7 f8 v; V: O" W<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 5 c. g# c  ]% r! v) q
<tr>
& g3 d+ U0 s9 h) L<td width="17%"><b>作者</b></td>
( A/ O  S/ s7 C% R6 Z<td width="83%"><b>主题</b></td>
* W4 B; z: P6 e8 T8 d+ M</tr>
! w$ H7 _, V# f& \9 b2 B3 R</table> - Q6 T, G' W' c7 j7 x5 z' l. H$ E
</center>
3 N- Z* H2 c" E- f% ~</div><hr size="1"> ' \  ]/ k9 l7 d0 q! ^
<%i=1 , x  A! G7 B8 {3 s. H
set showbbs=conn.execute("select*from bbs order by id desc")
7 a* {+ G! r) X) X3 S  Kdo while not showbbs.eof ( l; F! W$ @$ X/ r
%>
$ k0 ~$ w9 v0 a% s4 n0 L<div align="center"> . @0 `! H. u4 @: O9 C
<center> 3 F. K( @' p% h0 ^
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
! i% z6 [- S5 T$ V$ x4 b<tr> 9 K6 T3 _( y! C4 T* q" B' L
<td width="17%"><%=showbbs("name")%> </td>
7 `/ R0 l/ J9 Q<td width="83%"> 2 c+ W% i5 L/ X' f0 ^* J
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
8 v, P1 y9 P+ a</tr> ) _8 [' o8 l9 T% N( b
</table>
5 u% G" u, u% E# D/ ~4 z7 B- y</center>
" }* h" }* f- y  ~9 T2 C</div><hr size="1"> 2 V" Q& o7 @: ]3 H% g, ~
<%i=i+1 2 u7 y0 b8 {; |+ p; |' U% G4 q
if i>50 then exit do
# M7 ^* H7 ~( @+ [! q+ s$ Jshowbbs.movenext
- k$ o/ m/ h9 N3 F0 f8 xLoop , L$ l1 i. Z2 ^4 |
showbbs.Close
- @( n8 V8 e$ `0 T  h6 v* vset showbbs=nothing & b( n- g# m( ^3 Q4 G* E- N
%>
4 ~$ b! Y3 ?+ x9 K2 H( o6 S4 x& a: b" U
这个文件就不一句一句的讲了 ) f4 L3 V7 C, l2 l: S
主要讲精华部分:
5 b6 P# {8 A/ a7 r! s+ z9 Z( Vset showbbs=conn.execute("select*from bbs order by id desc")
* J* E8 Q* E& w: r" }$ L$ P意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 6 O% K" w9 g% y# O  I) Q$ @1 b  H; H/ E
还有这么一句:<%=showbbs("name")%>
7 t* s; k- t. o4 W9 Z6 Y就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
% W2 h+ z4 |1 `/ X代码中的i=1和i=i+1
! \4 q& a. K4 X8 ^' T4 V: A+ mif i>50 then exit do
: g& q7 a, }( ]6 ^) j0 M6 g  fshowbbs.movenext
. Z3 M+ x0 q0 A+ i5 J1 a% S5 a% _Loop
8 P# N" ~3 S# J* b" Kshowbbs.Close , l& S( n1 c" x$ \
set showbbs=nothing
9 S$ p* \7 x! U4 J
, o% |. s1 O" K) l这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
3 U0 a2 K; Z: }- bif i>50 then exit do中的50可以修改 0 f% Y; Y# E% ]. Y, C  j
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
$ L6 g" m7 o/ B4 F( S' G) c还有一句很有用的: ; |3 }9 l; s  c, T9 ?4 J
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> : ?7 i- F0 V) @
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ' o5 N/ g* w2 I, F
等一下在show.asp文件中就有用了 . Z9 s4 O/ g& d$ z0 s( d

% y3 Q& G* Y+ |' C8 }: c5、show.asp # y' f- p" L/ o) r: y* \- {5 S5 {
源代码:
' D7 a) u9 _& }  I" c7 Z; t* I
<!--#include file="conn.asp"--> ; ~8 k8 k; y1 G0 I! U1 J, P) Z( u
<%id=request.querystring("id")%>
6 U5 L* i7 W4 [8 X) j<%set show=conn.execute("select*from bbs where id="&id&"")%> + T# F+ V& F5 B! j: ~! }, x% A
<a href="index.asp"> 8 G7 u+ C& A1 z9 s
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> ' u( ]# N+ T" [  G; ~7 ~+ M4 ~
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
" S* F0 c% x8 E2 H7 @+ [- z$ ?$ [<tr>
. X  g- m2 n) A" ?' S  ?2 R9 k3 C<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> + r. v- M  r# A7 K
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
, J) y+ Y3 g3 X5 s3 s4 h' _</tr> % e8 \# e% A2 O2 y. {7 O
<tr>
% x; Q7 F9 v2 S& @4 C9 ]8 P& y<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
1 x. C* E9 B, f- k$ b9 s</tr>
) U- {8 l/ {$ Z- ~, R4 f4 k0 ^</table><%set show=nothing%> " G' d0 f: G* t$ Y" [: G; k8 `
/ ^+ x. Y# g) u( _
劲语句---精华语句:
  C3 |; ]. {4 E3 x9 i1 x& n" mid=request.querystring("id")
* Z0 s' B4 w7 l# d在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
  @1 ~* v  k$ B( w) a, Y4 ]id=request.querystring("id")就是把地址栏中的id的值读取下来,
+ |4 W% F8 i3 y! E/ s* t2 r5 ^因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
8 o! F: F: b: M! {: e" ~5 ]所以show.asp使用id=request.querystring("id")语句把数字读取下来
6 e6 X9 a3 G4 `7 ]# X9 B6 T于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") - w: J4 H( ?9 A
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
% _) m3 P3 H6 v5 Y* s9 O1 |+ }最后<%set show=nothing%>
; |( L! b' T' ~5 n( E$ ?0 w+ S$ S
( H2 v/ q+ r0 w好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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