返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西0 n+ }! H$ o# N" i* d
真NB..佩服ing ...... _! }' I  t, G, U' e  o
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
4 }1 Y: S3 j8 b* i% w# U8 t! E( f$ O
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
2 q7 N' y, [9 L( W( Q' ~5 R5 ~+ o  `. J. n
一、建立文件! * P! U/ \, r$ q3 Y6 v/ a
最简单的论坛也要有几个必要的文件,就是:
" L) m# K( G! {  E2 {. F4 e/ X* J7 h
8 V4 I- I4 [: O/ _1 Q! ]- E* V1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
8 z( [8 q" M2 L9 T" [: p! `1 r6 }  w3 I8 J% B
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
3 }6 Q6 m2 b5 O
" A0 S2 L' j3 U- f' w6 }" s; Y3、发表帖子的文件----命名为:say.asp 0 n) \/ O1 ?8 V" n; K
  R% z# ]" _2 r) ?* F3 ?( M
4、保存发表帖子内容的文件-----命名为:save.asp ) u& v6 ?5 D$ Z5 K$ Z6 `; j

/ `1 U% V- B3 w  e% Q, F; m; p$ H5、显示帖子标题的文件------命名为:index.asp 3 V# ~# M3 j7 s6 v  X: [, w) C
: N! n$ F( I: O/ Y
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
% K0 F8 d- W8 d# ]" o5 _2 S1 T
1 _5 j8 ^/ }% ~$ a1 N  d建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
. {& O% l" u5 h* s% u9 N
- i9 F$ y6 Z/ }1 b3 d二、各文件的主要内容
- l" {3 T. M" z0 A# u, S3 A) \7 `6 c
1、bbs.mdb
, T8 b: F2 C0 \$ ~9 B8 a$ k* V) S: m7 Z& E: A* }% O% W
打开这个数据库,建立一个表,命名为bbs
. m5 `4 m$ y6 b( _/ q3 r, m; D1 k' U0 ^- {9 P  C- y  K' ?1 ^; b
该表中有几个字段:
* t% \2 \  ^% Z1 x
4 Q+ M: T# S8 i, g; N) V+ Yid(自动给帖子编号),他的数据类型设为“自动编号”
" X- l) M; l! \) V  B6 G/ L2 B$ ^
name(用来储存发表的作者),数据类型为“文本”
' P' v2 n. Q* ]: n0 T5 i) c/ Y* ~
  `  W, |, D, @" G. ktitle(用来储存帖子的主题),数据类型为“文本” $ b( P4 R: N( o' Y  ?
1 j% K2 R! f1 w; N4 O  Y. n
body(用来储存帖子的内容),数据类型为“备注” - X: e$ L/ g" L3 o" D( Q$ V* o9 \
  g0 `, @; q( l0 v: Y4 ]
2、conn.asp " Q5 }" g9 ]6 G; T) K5 Z
源代码为:
" [5 F- Y8 d8 C+ r) X2 E& K6 T8 Y<%
5 U/ w' @" a/ zServer.scriptTimeout="10" , f/ u+ r% ], Y0 I; g/ b
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
! n3 u" f4 s2 J( eset conn=Server.CreateObject("ADODB.connection")
, j6 ?, L! Z5 ~& V6 q: E1 Mconn.open connstr
: A* u% ]) ~8 j1 K) g5 {%> ' z9 T; N5 N3 r0 M" k
7 v/ v# R& S* W! C& e. z
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
- M: g: n+ Q0 l9 \0 e9 u, v: A5 q: Y' {# Z9 p& G
3、say.asp ( D6 Q5 Z0 k. a& ^& @1 k- y9 U

9 F- K0 G0 ?9 z( l5 K2 y源代码为: % v8 A; H. [4 {. O; g
<form method="POST" action="save.asp"> ) ^! d6 F& `- F7 _4 V2 {6 p
<p>大名:<input type="text" name="name" size="20"></p> , A# p* l2 T1 h1 g, t, U  n4 ^
<p>标题:<input type="text" name="title" size="91"></p> % |: ^: M4 e# Q& k. ?! h
<p>内容:</p>
# \. }) P# F0 M) t" F0 }8 z<p><textarea rows="11" name="body" cols="97"></textarea></p>   p6 j! P0 R/ W/ `# l# q0 X
<p> </p>
" o; ~" k/ i! I2 S<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> / Q, i: G+ M2 b& w) N
</form>
7 T7 t6 z1 F' u0 X# Q, q9 {( q1 L大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
/ a: H* }  g) m6 n不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
4 b3 Z- |" O2 X/ D; k4 b* D% N% w6 I
8 f+ T/ @0 O4 c1 C/ v, E$ U/ _6 q4、save.asp : H) M' {0 V; Y$ B- v/ v
: C5 J, y. b+ d0 b
源代码: , L! \7 f, e; l( V
<!--#include file="conn.asp"-->
# @: }5 p7 F' o  e; }% S7 x) {<%name=Replace(Request.Form("name"),"'","''") : X2 ^% H; `/ u
title=Replace(Request.Form("title"),"'","''") 5 {; ]2 @3 b" M9 }( w
body=Replace(Request.Form("body"),"'","''")
8 H- Q0 |/ c, @%> # F1 b3 v- v# i1 g
<%if name="" or title="" or body="" then%> 9 p4 u' \  z& i3 A* ]4 w! b# v
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! % m. {" f% Y2 G4 G: B9 Q9 w
<%else%>
' I0 C% T+ G2 D; W' S<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 4 |. f9 T. ]  k0 f
发表成功!<a href="index.asp">查看帖子</a>
# P2 T  o" L, v% U; s<%end if
# p5 G) }* v9 s5 Z- k! ]# {set savebbs=nothing
6 T# r: l6 h# I%>
: J, @# Q2 E0 z4 I8 F
# t% ~+ p# y* H. R+ A  O- b+ k. m! I第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 1 Z+ d) E( [. Z  D( \) o4 j! D
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
+ i# r. C6 _$ C0 _8 W' [接下来几句:
' ~2 c- }8 p: sname=Replace(Request.Form("name"),"'","''") # ^/ B' m; E3 W9 T  Q$ E' ]: O
title=Replace(Request.Form("title"),"'","''") ' v/ T3 u% a5 D3 g3 P/ q
body=Replace(Request.Form("body"),"'","''")   @0 t7 g0 f$ `  h4 q$ H
, e, U4 e* g8 k  [
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, : b6 T0 ?# |* {" g, ?
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, ; K0 F& L) a- C6 n  u
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
, I6 r8 V4 c$ k" u就是把表单中名为name的文本框发来的数据储存在abc123变量中 2 N1 D# J; t0 b9 t. J/ I
; }4 ^& o  M# T6 }* j+ i/ X. ^' K) ~( R
接着:if name="" or title="" or body="" then : t& q* r6 G- A4 l- b4 A
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: % E5 R2 j1 k) q; Y0 y
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”   I4 L) {7 x& S
该语句属于html语法,大家都看得懂的!
7 R  |; P6 y) _( S" w4 e* M$ l; x; f3 N9 O! o
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
, u% q6 w8 E1 T% I0 b“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ( j; ~/ [5 D, |6 k( D
发表成功!<a href="index.asp">查看帖子</a>” # q9 k. g1 w. G
7 H8 n0 x6 U# C) g( k3 _1 `
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
6 d# z$ G# L( ~5 x( Sinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) " ^( z# _4 u6 @' L0 @
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
# s0 a1 Q9 e0 @+ S) S( }, s- Rvalues是“值”的意思
5 W' B7 K9 g1 v8 }# [6 n' _就是插入向量name,title,body,向量用格式'"&name&"'表示 ' b9 f, ?$ q4 a' C+ N
7 \% N# Q% m  V# x# d; m& E3 c
最后:end if就是结束if……then ( ~: b% N+ r9 F. L
set savebbs=nothing可以说是关闭掉: 9 a  z3 Y9 o5 W4 I# X9 N6 [/ T
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
- n* q4 _* _( r3 u: o
) J5 r( S: Z' D$ j2 `
7 h: I2 _& i  i5 ]0 Y2 v5、index.asp 4 R, Q7 I8 Q- a5 w; m5 n! O
源代码: 5 S, {& @2 D# D) [- i" d) _3 p
<!--#include file="conn.asp"--> , T4 }) R7 h* e1 X2 Q% K5 y7 g
<b><a href="say.asp">发表帖子</a></b><br><br>
2 V+ ^  @* G$ s& a! s& l3 l9 ]<div align="center">
# O! d3 {& x$ k! u0 _' {/ {<center>
) @4 k. K( J5 Z& ]<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> % ], g8 d0 j, n; S3 @1 o
<tr> 5 s2 Z+ h/ K+ F! d
<td width="17%"><b>作者</b></td> $ D6 I4 A8 j- g* K% X( G( R. k5 g: b
<td width="83%"><b>主题</b></td>
; \; |9 X/ p) O  s  m) a8 K</tr>
( L9 L0 y  x' S$ L. d( |1 S</table> : S  {. A. q) J  @8 `2 m6 R6 [
</center> 5 a7 j# o9 S7 f( B
</div><hr size="1"> ) I6 Y- y) {$ Q/ \, K. d
<%i=1 ( v8 b5 T! t' x, ]2 _
set showbbs=conn.execute("select*from bbs order by id desc")
# Y" a4 W: W( B4 R) [0 b7 A, `do while not showbbs.eof . N. q4 v7 L+ L# k8 Y! W
%>
% V4 j6 k: g( y, X" w  m  i- `$ J<div align="center"> - [6 X2 g4 @5 \( ?+ N9 I( n* d
<center>
$ w4 j9 n$ N  K& ^: T2 v$ V<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> . |; q; i" \& Z- a9 u  q
<tr>
- T4 }9 y. X* o+ W; [<td width="17%"><%=showbbs("name")%> </td> * L2 x, B  Y6 n! c1 G2 P* A* t
<td width="83%">
( K: \5 x5 x5 _! l1 d<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
) n# N/ k& w, l% q$ ?9 E7 c" m  d6 P</tr>
" D4 J+ P2 q* P+ c) J+ \" h% c' \% i</table>
2 N. `9 g0 {  }' Y& t3 _* E5 V# i</center>
/ k! |5 Y, q9 H. u+ E: W1 O</div><hr size="1">
( N5 |! W! \. I) s. d6 ^<%i=i+1 4 R" T( ]. P! r7 Y) I, e
if i>50 then exit do
+ o) t& b; n! |/ G1 @showbbs.movenext   b4 Z) @) b( n# s$ A# ^
Loop ; @5 O$ p3 j* y! f" ~2 c3 H1 I
showbbs.Close
/ ^6 w) ?" a: e+ Dset showbbs=nothing 7 D; E; i& F5 O- F' x& @1 h. T9 c
%>
6 q4 A  r* `& Z3 _9 N4 X
+ I# T, i' e5 S: e/ S2 F这个文件就不一句一句的讲了 $ h* b& D: D( r" y* `7 ?0 b
主要讲精华部分:
! E- u1 w1 j! }3 L; |4 F" b, aset showbbs=conn.execute("select*from bbs order by id desc") ' w( ~( O  A$ S( E$ [, i' K* v! `
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, , G. j$ f: \* P$ B
还有这么一句:<%=showbbs("name")%> % ~8 F  }+ N: a
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
+ n& T4 g) H$ H9 B6 |  t代码中的i=1和i=i+1
# l1 Y: {( V6 B: ^if i>50 then exit do
* s4 n' f- G  H: x, n) R! t$ sshowbbs.movenext
- N  h5 {1 i: x0 M, s+ |* Y6 |/ ILoop
. p# B: x4 l0 f0 k5 Ushowbbs.Close 4 `& V; p1 d6 I, L+ w
set showbbs=nothing
( g$ M2 Z1 X8 O! K( H8 d5 c8 G6 j
+ a9 h3 C- ~# Z% p+ ?' X, b( v3 U这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!   f& _( e! G$ I# G8 O
if i>50 then exit do中的50可以修改
) _& r" g6 R, ]  i# z但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 ( ]2 U# q* n5 r% ^( ^9 S; N
还有一句很有用的:
% d9 L% f4 v& p<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 9 q6 W- F, s0 [3 {- F/ P% ?% l
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
+ {4 i3 n. k5 o  G( j8 l  C等一下在show.asp文件中就有用了
! s4 i5 U% R: r# X, P
: m  |6 R; p; v  `5 I, C' G. `; y5、show.asp
4 _7 s$ y7 b- ^/ b  d7 n源代码: - N0 j; x4 t+ I1 r( w: p0 H
: q: I4 G4 M, @0 ^8 }
<!--#include file="conn.asp"-->
4 |. M# S7 U% L! e<%id=request.querystring("id")%>
6 o; j+ n2 F; [# {& x! c- x9 q! _" `<%set show=conn.execute("select*from bbs where id="&id&"")%>
  s2 d* K9 z! [+ g3 E<a href="index.asp">
/ c/ X% z- U8 [$ T<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> $ a% a: W& h* |; [
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
7 t! {: s0 Q% V% j1 Z* v<tr>
: ]7 r% s/ D1 i" n+ {; _<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 4 j+ v' x: O2 s
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> : K$ X6 N+ \$ F, ?- ?7 O
</tr> * J7 ]* g: [8 s8 V- [3 b2 L( @3 k
<tr>
3 q1 k$ v/ i' K' ]4 w: ^5 X/ L<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> / h' P" p  ^/ H% `3 s# o
</tr>
' d/ E% T3 G7 B; O+ c$ C  U& ~% a</table><%set show=nothing%>
& S- V# e2 W, K  P) `: C4 l6 L
1 R' X" n6 ?, [9 f5 E9 G劲语句---精华语句: 2 g/ H1 K; Z2 @1 T* j
id=request.querystring("id") 7 }# \! @+ f! B6 O* e
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 3 ~* H1 b6 I0 T4 j3 s
id=request.querystring("id")就是把地址栏中的id的值读取下来,
( i. g. `0 _! l5 f因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
6 }+ z' \0 _% ^! F9 ^4 _! ?3 u所以show.asp使用id=request.querystring("id")语句把数字读取下来 # o* j! \1 [! O* w7 M5 J
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
; O& S7 ^7 N+ d( H2 ]向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
3 A3 T8 h" }: {* U9 I* W最后<%set show=nothing%>
- B  u  g, q1 c, z6 s' V, d$ Z: v+ [* q1 l
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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