返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西# y. F9 P, D! [( G$ j/ I/ p) y
真NB..佩服ing .....
" V( D; W. ^4 [大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
/ q: c6 P$ H0 j# y, r7 P/ h: u2 W% s5 m# d9 u: K1 ]7 |# M) b
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 " U* \, f9 r& q- L6 R! r
6 z) a! |, K8 s* A
一、建立文件! 9 f0 y+ ?7 r( J% k3 D
最简单的论坛也要有几个必要的文件,就是: ( @8 W- ?# A% [. ]

1 e: H; ]; v' y8 A1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
; @4 p% [; F3 R
- S. E& V' C8 T7 J2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp + a5 ]: G6 H! {$ q$ ]
0 a; L# r2 w* o# v4 i8 `& G# }2 W5 D
3、发表帖子的文件----命名为:say.asp 1 z7 t# Z6 r+ C0 |6 K9 r

0 }/ H/ Z% ]  W9 m5 j2 d4 @: Q4、保存发表帖子内容的文件-----命名为:save.asp
* ?9 f0 D9 ?! n& E: G- X5 B- K- f2 Y$ ?* I. w! r
5、显示帖子标题的文件------命名为:index.asp # T8 t- ?5 h  x0 K

; ]" o6 x( C3 H) U; O+ P4 Z+ p6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ; C$ D; v3 _$ c( m
, o1 X' P$ j% l
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" " D8 M# p5 @- z4 f' y: G. V
& p! S" H( h/ g, Q) R6 a
二、各文件的主要内容
+ G3 N# t  o- Z( }! _! n& [; f/ d
0 {8 f8 W1 c* u# ^- Y& F1、bbs.mdb ' W) S, s$ s. Q# N# z4 M
* o1 a) D# W& C( h3 M' i7 D
打开这个数据库,建立一个表,命名为bbs % [' R- m) B7 ]2 u4 K

' O( j. J' ?* p& f! [& x# v该表中有几个字段:
, {2 K( c8 N% H! C. {; _6 F# E  U4 J# P: {) w" i7 c
id(自动给帖子编号),他的数据类型设为“自动编号”
  w# G+ M4 d* L! b( K$ q+ x- N. a
6 \$ H- c' j3 m# S& Z; j0 Yname(用来储存发表的作者),数据类型为“文本” $ L& h9 g9 V" ?: s5 y

3 V8 j4 s0 o3 H& vtitle(用来储存帖子的主题),数据类型为“文本”
5 F7 v3 R9 m' b/ C! P6 o6 B4 }2 H  M! o# N9 X. |* {/ Z
body(用来储存帖子的内容),数据类型为“备注” 9 a' p! w8 \2 {# `; v2 F  k

* B9 S! l* m7 X% R1 |" F2、conn.asp " n- e! w1 q2 a; M
源代码为: " A3 R" j: ~) K# ^  a. ~
<%   |( {& l' y  \7 x
Server.scriptTimeout="10" ) A9 G8 I" P8 [' U, c8 U1 S& E9 d
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
9 M  ]0 d$ m- U( t5 gset conn=Server.CreateObject("ADODB.connection") ; c. L$ W  k  y" q; r2 S% e3 L
conn.open connstr
* y4 o8 w0 F. y! U+ y5 h%> ' N6 ^0 z# g0 r9 T* C/ U  T
1 \7 |0 u$ E9 f" x9 [5 J! G8 Z
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
2 i4 p) O- g# l* X. X- P
$ ~/ U" ]# r  C4 M$ z3、say.asp * p$ p0 v3 F4 K$ n( r7 v; y3 H+ c

/ m3 O: p5 J: v# r, u源代码为:
0 J: R3 d7 R; e* m# ^<form method="POST" action="save.asp"> ! C; s1 t$ v) N, C( }1 D, y
<p>大名:<input type="text" name="name" size="20"></p>
2 P. J/ C" Y7 `4 G9 q0 A<p>标题:<input type="text" name="title" size="91"></p> 6 d8 k9 C! U9 u* M/ v  M
<p>内容:</p>
& q& W* V1 f8 y9 p+ Z5 l3 W<p><textarea rows="11" name="body" cols="97"></textarea></p>
7 z  R+ X4 B2 Z9 Q% ~7 d<p> </p> ! U& B% ?. F: s  n2 p
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 7 R8 i0 g7 q5 l' a) H3 T2 H
</form>
  Q* D$ O5 x& `( H4 ~大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 6 U% {% [" H* y4 m$ Z9 q
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! * T8 w- g  ^& h3 @

% i' C0 I2 y- e% P4、save.asp * Z/ R$ _4 i- E" V8 c" t3 U( D
& p# P6 I) L4 y8 Z% h4 O8 i
源代码: % ?' S; R7 A: W- {
<!--#include file="conn.asp"-->
. a4 y% U2 J9 k4 \3 ^( {- X6 c<%name=Replace(Request.Form("name"),"'","''") 6 H% l2 J  L9 C. v! f: i
title=Replace(Request.Form("title"),"'","''") ( T  U7 E7 R2 a# k2 D! U# L
body=Replace(Request.Form("body"),"'","''")
" [; k9 \- c5 t; C; C! O7 }%>
4 i2 }+ E7 w# m- h9 X6 V, o5 b: r+ g<%if name="" or title="" or body="" then%>
2 o5 C$ M, q6 r5 ?: Y请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! . |0 e& G2 U- y; f9 B
<%else%>
; r. v0 k) {8 I<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
+ n0 ~& i, t7 E' A. i$ h: K发表成功!<a href="index.asp">查看帖子</a> * v; B4 {' x2 p: h" }6 C9 B0 R7 D
<%end if
* G9 z- G. K1 p7 @' G$ O( q/ yset savebbs=nothing
$ H/ h: C3 h5 J2 ~# D) T%>
# {" [# x+ K( _6 m! j' m/ z5 b
( T1 R# V' O, y: ^第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
. E) a# e" A. Nasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ( H' F! F5 Q$ K* y; n
接下来几句: ! m, M3 D9 Q: F" p& q$ ?$ Y% b
name=Replace(Request.Form("name"),"'","''")
" v# t& T- y8 ^: Jtitle=Replace(Request.Form("title"),"'","''") 4 z. d+ A( P$ }$ F& E. j1 V' ?
body=Replace(Request.Form("body"),"'","''") ; M/ k2 @- ~6 C8 h' ^  Z

% c6 G/ H. q1 P, E6 I$ M2 O, _$ w“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 3 e4 |/ B$ X+ L  M
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, + `8 T& ~5 ^4 ^; b" W& L
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
1 z' o8 g& S. o9 s1 |就是把表单中名为name的文本框发来的数据储存在abc123变量中
9 }' B8 A( \* ^5 i
- D+ k" W& o' u& {0 h3 |: T3 w接着:if name="" or title="" or body="" then ' v/ X7 P. t4 T1 V$ F1 F) d1 R
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 9 |+ P9 V( s, A* z# m
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
0 n8 y9 a4 R9 t3 K) B7 B7 f4 `9 ^该语句属于html语法,大家都看得懂的! & O" {! Z6 i2 E( O0 I

$ A9 L/ o; q( [6 T$ {# l7 ?& q8 z"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 5 X" I# w+ N5 m( f! r
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ; Y7 K1 ]- M  i( `2 ]; U
发表成功!<a href="index.asp">查看帖子</a>” ) h# S1 j+ `/ E3 ~
2 d: C! e* y3 z! z. ~& k
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
: `& }) L, r7 e) W; T$ f4 Q6 einsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) * b- P7 K6 ~4 W  g& d) v  Z
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
$ S7 |( Y3 ]1 t3 x6 Cvalues是“值”的意思 & Q% |! C$ E6 k
就是插入向量name,title,body,向量用格式'"&name&"'表示 ( d: x# p* r3 a
# R2 N) M/ H3 f/ [4 f7 R
最后:end if就是结束if……then
* n7 c+ x3 o% ^# D( sset savebbs=nothing可以说是关闭掉:
" t, d1 v9 L- }2 vset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
5 b8 r7 y) {' O" b, ?% V2 x8 o4 `1 }
: I9 ]4 A  B( ]) o  A! s" v  U+ a% M3 X6 j2 r& s/ b$ W) A
5、index.asp 6 L4 J. h( m# a. ^/ n$ `, `; f
源代码:
0 M& X6 B3 t) w9 D/ E% U, u* J<!--#include file="conn.asp"-->
8 Q, E4 w  E$ f+ p# p( d$ H<b><a href="say.asp">发表帖子</a></b><br><br>
( U; Y% r: X3 j/ n& u- Y& d1 u<div align="center"> 5 \1 C5 A4 P: ^4 G6 F
<center>
) x# l& X. P+ c% O% Q/ w  z: H/ q' a, Z2 \<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ) K/ m6 ]& [; Q1 m) o/ m+ a
<tr> ( t9 [; ~3 H9 h+ m9 s0 |, h
<td width="17%"><b>作者</b></td>   o0 z% [: @# }6 l- y2 B
<td width="83%"><b>主题</b></td> & @5 w& w2 o) U" b+ m
</tr>
4 r  u1 @0 x# C/ r  L- l</table>
( w* t, j* P5 Q9 j3 x6 I. h</center>
5 G# Z, e- J, K</div><hr size="1"> ! ~$ G, C4 f4 C; ]; z3 V, x8 Z
<%i=1 ) V" D2 U6 J$ X  j; ]3 h
set showbbs=conn.execute("select*from bbs order by id desc") 0 d$ {. f, s3 C  D' H
do while not showbbs.eof : I0 B! Z2 m  r8 z
%> - T' }" M1 w2 ^- Z8 X
<div align="center">
( C8 }# U. ^6 ]9 t7 B<center> - R6 ~% M0 h5 F; {' P3 U1 K
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> ! K! M8 t; H- S2 z6 H
<tr> # v( v1 T! b! g
<td width="17%"><%=showbbs("name")%> </td> * M8 C" V' }8 E/ O9 G
<td width="83%">
/ ]& M: x& U2 P8 V# S/ n<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
) e4 A( F5 z/ k2 @" W+ i8 a</tr> 9 @5 D! ~" X/ f) r
</table> 6 I' `1 E0 S9 u, ]9 t! x8 ^7 ~
</center> & b2 ]  Y- U. u( P
</div><hr size="1">
3 Z0 E% y9 L9 r2 C& P<%i=i+1
: W$ D& `: v' d! ?7 rif i>50 then exit do
4 j$ Z* V  Z" p  o4 Xshowbbs.movenext
/ Z. k' _) v4 l# t, d" ?, Z) FLoop
5 c3 g9 c8 l; F. l: d* I6 B/ dshowbbs.Close
) l* S+ g0 k5 U/ a0 t0 Z+ Lset showbbs=nothing % E1 P  L4 h0 b  @% S" }
%>
: U2 D! c% j6 D0 Z. D" G4 r
7 j) k( X' s, }- X& z这个文件就不一句一句的讲了
' b1 ?: @; n. \8 z: `+ C1 B$ h主要讲精华部分:
& W% q1 C$ A. y+ Zset showbbs=conn.execute("select*from bbs order by id desc")
+ z' {8 n" ^2 [! v( ]意思是:向数据库中的bbs数据表查询数据,并以id排顺序, , \1 y8 z: e( ~- r  w/ }
还有这么一句:<%=showbbs("name")%>
) O) v( k: g" j3 x& B" n' m6 j就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
4 C4 q% n. g  R  j) e代码中的i=1和i=i+1 , ^7 g, w* h# j* C( [' z; D; _
if i>50 then exit do 4 \6 y, a1 Z! x0 X$ [0 D; n7 Z3 G" m
showbbs.movenext & l7 H! Q2 e6 m0 I* F& g7 o: ^* [
Loop
* r/ e: _! [* Lshowbbs.Close 4 j, [! U. S" P5 ]: {/ e
set showbbs=nothing " n. f4 f1 Q; D2 ]8 \4 c9 t

1 {  }2 X$ T' o这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
0 L4 p, o% k  d5 I) m5 jif i>50 then exit do中的50可以修改 * k: v1 b+ {1 V' W& A& l' z
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
4 b4 L4 D" f# n3 [0 f4 K" v7 J还有一句很有用的:
6 e  j4 c& z- I; V0 C  {& m6 d<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 6 y' J0 s0 |" b9 ^# M+ s/ T
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, : p7 Q% n2 u! u; ~' \: U( v
等一下在show.asp文件中就有用了 - [" n  w( J  n0 r! S" f
7 m, p! ], I+ ^! G* j0 _# R7 D
5、show.asp 4 F* p( c# B# `! v! }
源代码:
  O( r8 b( }  ?7 T% L' y7 i4 M; s1 s9 C# i) g; @6 _
<!--#include file="conn.asp"-->
% b5 h! T* I& |. W<%id=request.querystring("id")%> ' e& f8 \4 w% ^6 n6 y3 c0 J; W" S
<%set show=conn.execute("select*from bbs where id="&id&"")%> 8 q. h- L2 b" f
<a href="index.asp"> . D0 O- Q8 |  q  q
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . V0 h& Q" s' z6 Z( d* r
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
& o) l, p  U7 g2 w<tr>
8 b2 R6 w+ _) v/ M<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> , O% ]8 v& t% s8 Q& k5 _) a" q
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ' q7 m7 V7 Z. j6 R; |
</tr>
- P: K0 s$ Z/ K6 m9 h7 f: H  {<tr> " P7 q' \5 g1 b, y9 U
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
. ]; ?& T7 z+ M! V7 S$ k) @9 O</tr> * q" ]! d: b9 S# |3 b$ P+ u
</table><%set show=nothing%>
3 Q7 Z; W& I7 B! y/ A# P0 e2 o' O
劲语句---精华语句:
, g- j& M. c1 N; g. I& d1 jid=request.querystring("id") ) x: a1 W2 c6 Q3 L
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 5 l0 _* A: q& s) E) X+ Y; c
id=request.querystring("id")就是把地址栏中的id的值读取下来, , c2 E) u9 H5 U9 z, K4 Y8 u7 g( y( ?
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
$ \0 e) H  ]( z+ j8 i所以show.asp使用id=request.querystring("id")语句把数字读取下来 + _! q( S$ U" h( X
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
1 p/ @. E- M* f- [/ p3 Q向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" " ~4 |" S2 }$ u" I
最后<%set show=nothing%> " c& k' D$ w: S- k$ Y

  I, {) Z$ o- _0 R; S4 ?好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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