返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西9 @' u" i) k4 J7 c
真NB..佩服ing .....
! a. w  ]! V! A, {0 f. I9 \大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。- M* U: F. A$ n0 T' F' Q3 z$ e
2 H, x7 r3 L9 ^- V
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 6 m/ @5 v/ t; A' @! ]# L
+ G, K/ J4 d3 s- c. S) {
一、建立文件! ) {/ C) ~; |# E+ O- c! S
最简单的论坛也要有几个必要的文件,就是:
; w3 U/ R5 p+ c! z' Y& \9 u5 B4 l
/ C* L& J4 d- F' |" L& M# A1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
: Y6 }2 _9 J( P6 m: [( u4 ^6 {1 V% x) S4 r/ \+ o
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
) q7 ~3 z2 \* g* o, O
4 c  N3 A2 f% L* E+ f; O" O4 [3、发表帖子的文件----命名为:say.asp 8 m: u, j7 X+ t, d9 w

9 P6 q9 _" u% e7 b$ T4、保存发表帖子内容的文件-----命名为:save.asp
/ q8 z$ L; e$ z: a# V" U8 k! p1 Z; ^7 L5 j
5、显示帖子标题的文件------命名为:index.asp
/ a6 I- ~8 _. h: S- q
# w- C. H+ d1 a8 ^7 c" F6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp # ^: P* A' E, m/ f

: K( x' J% u# r  \建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" . K' C: z  H6 L7 n0 U
+ W' D. K. w# v# [9 G6 i6 K
二、各文件的主要内容 ' A8 X5 n; g. O3 b8 ?, a6 {
8 V7 i- P/ O5 B% O- s1 z
1、bbs.mdb
8 c$ `7 ]6 u+ w
, I, Y" ]9 ^, j- f2 X. R打开这个数据库,建立一个表,命名为bbs
# H, }" v# E. u+ w2 e! P* _$ x4 M+ Z& K" f% q2 k
该表中有几个字段: / M: J, p" I9 H+ R. h9 x9 ?3 Y

. d% E, H! H. d) s5 k/ N' tid(自动给帖子编号),他的数据类型设为“自动编号”
, I$ G* R8 i6 V  l5 K8 @1 H  D- m. C  `5 e; c
name(用来储存发表的作者),数据类型为“文本” / y9 S& `, I4 W7 O% o
. y2 \, }  f# q, H/ s/ g7 F
title(用来储存帖子的主题),数据类型为“文本” ' u- y/ c2 s: R" @& C8 z$ Z& U

2 a' O( i. W! j8 ]$ `body(用来储存帖子的内容),数据类型为“备注” # k  z* O% Q- c, r& [$ ?6 j1 F4 Z

# m$ ?& j3 y$ j8 e% H  W* ^# \2、conn.asp
% ~3 t, ~: W7 i5 V0 z  l源代码为: " u, v( ~7 o( i4 |( Y1 ]9 N$ I4 p
<% ) ^, g2 p( p& r' g
Server.scriptTimeout="10" & Y. _  _5 V; L$ I
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" / W* `  m6 O6 Q
set conn=Server.CreateObject("ADODB.connection")
0 Q% P6 Y! d5 |$ k/ }: O4 T( M1 Sconn.open connstr 5 N8 \  s8 h' B% R" L5 G8 Q3 P
%>
4 n8 @& d2 Y8 q9 }" M4 C- k0 O0 x! m
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! + Y( ^$ W5 F) M" f" ^
( ]+ L3 X, o3 ]& a& j2 l4 }& i
3、say.asp
3 X, |/ U. h& h6 G$ {
4 M: M5 b4 ?' c! j6 K$ w" H0 I/ N: y源代码为:
: @* e. \) f2 q/ K+ I<form method="POST" action="save.asp"> 1 X0 y' F, @: j, ~2 E7 r
<p>大名:<input type="text" name="name" size="20"></p>
9 G: J( d, {% E; s4 g3 X<p>标题:<input type="text" name="title" size="91"></p>
, t6 r" S' _5 `4 x" H. J2 B& r<p>内容:</p> ' M3 v# m% ~$ n, G- Z3 _0 i4 F
<p><textarea rows="11" name="body" cols="97"></textarea></p> ( _" x; U, f1 w+ f
<p> </p>
8 F3 I& A) a- m* ^- Y<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
: `9 g$ H  d+ w4 ~* Z5 R</form>
/ i# K) x7 t# w# [8 q, w6 p大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 : M4 W$ r7 n" T5 y+ j% w5 k8 s
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
1 z" O: W, N8 M! x, q
6 a; v3 X( b- c; J6 Y9 C4、save.asp + n5 L* ~( @8 ?& ?

/ U7 q9 o. e( u. W7 o6 y) a! ]* i源代码:   @$ h+ H: e: i+ A, m3 N& J
<!--#include file="conn.asp"-->
. z3 T- R4 N6 ~9 E, ~6 i3 n& v; j<%name=Replace(Request.Form("name"),"'","''")
# b% s) `" N3 htitle=Replace(Request.Form("title"),"'","''")
5 ]1 Y0 v% F4 x3 K$ I  s8 t# Zbody=Replace(Request.Form("body"),"'","''") 2 J: z8 i7 s: [0 B+ F, R
%> 9 m3 C5 D0 u; h$ F4 U
<%if name="" or title="" or body="" then%>
, ]4 @) [+ I$ Y" o0 N4 a请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
+ R+ h8 K8 z9 {2 \* f<%else%>
, I) M2 K( O0 L<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> - z( W: G) K4 R* r+ X# j# Q9 c
发表成功!<a href="index.asp">查看帖子</a>
3 k0 h" O+ a' H' h<%end if ' F2 o8 D4 {! \8 j9 _4 q
set savebbs=nothing 2 x. R4 X# F) e8 ~7 v. a; l
%>
6 J7 ?- O( u: M1 \( A$ Z/ a; X- p, K3 D9 J4 d- S9 F% N
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! " \% b' V+ v2 V, f; C- f
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 3 m& k8 F) u+ r
接下来几句: + G! l# h" Z& w. l& P7 {: ~3 j
name=Replace(Request.Form("name"),"'","''") / d9 n0 X6 o* g; Z5 c
title=Replace(Request.Form("title"),"'","''")
& t4 x; ?" h6 \5 L  e8 `+ _& kbody=Replace(Request.Form("body"),"'","''")
+ p4 Y1 q$ C6 D- i
$ ]- I# q, @  ]7 G+ h  a% a“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
# s3 V9 T9 w1 Q而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
: I( m9 P# I( E9 R. p& S  t, _0 R$ Z如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
  A5 e; G% |& z. a4 f就是把表单中名为name的文本框发来的数据储存在abc123变量中 6 j! t6 Y7 m6 f% q4 o

3 a3 K3 K5 ~: [  _# _接着:if name="" or title="" or body="" then : d+ U. O, R, @: E! i0 ?" c
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
8 N$ w* Q  |( |/ `8 `6 T“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
* W$ B  j1 G1 l, G+ `6 `$ _该语句属于html语法,大家都看得懂的! # e. o& k/ X/ N  j
/ V. D- b4 l! D) }, Y, ?( P
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ! y$ B' x6 e7 O3 Z
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
4 L) x1 w1 A# L% v发表成功!<a href="index.asp">查看帖子</a>”
+ m& _, W6 v: M: \# @3 u$ a9 w3 `
+ u' G2 e2 n/ v"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
+ j# U' @6 ]1 [insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) * O( D7 Y# v6 M* z
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ; X& T# u. B8 k$ k6 I  C) u3 i5 C: w
values是“值”的意思
# C2 l5 K& G( U- {8 x/ {2 p; |! B就是插入向量name,title,body,向量用格式'"&name&"'表示 " \* Z4 [" w% q1 Y' g
+ ]2 d1 D" g2 k, t
最后:end if就是结束if……then / b8 ^- M- V" n- s0 r
set savebbs=nothing可以说是关闭掉: ( R3 C+ s% T: J9 B8 E; c
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") % _4 E; M# u; w) D+ l* |4 e, N

0 e# p$ W* z; O' Z) H2 }( w8 R& h/ I7 U" G6 v& ]
5、index.asp ; X! {" [- r  H. M+ |% p& U
源代码:
* [0 Y% \/ p7 w3 g* m0 k' |- q) ]<!--#include file="conn.asp"-->
# P3 M& f' i$ e7 M<b><a href="say.asp">发表帖子</a></b><br><br>
! ^# V3 H' ^1 Q1 n$ q7 g) ]5 _<div align="center">
- r' V1 a' j6 k5 v$ k8 b<center> & {5 t6 _  s) q4 ~$ l
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
2 b' H$ d9 B3 B9 O<tr> * z! `0 |: m% p2 R0 k: ~3 a8 X
<td width="17%"><b>作者</b></td> 6 s+ |! U. g6 |7 x& a
<td width="83%"><b>主题</b></td> . D% d+ \' }6 C( O$ t
</tr> ( c* h% B8 e( X  u  {" r
</table>
0 A: o6 {2 n6 e' ^</center>
' _# p6 ?3 L: {3 q; b1 g8 l, i</div><hr size="1">
  n% P5 \* C) [" K9 F1 D$ _<%i=1 : D+ x, J- P3 R9 M1 v) k5 ]6 y
set showbbs=conn.execute("select*from bbs order by id desc")
& L. U9 s& e2 Z8 ?& H8 tdo while not showbbs.eof ' ^# O: ?' s0 o# k+ }
%> ; _+ f5 l( Q; i7 H' Z
<div align="center">
3 B+ W2 B1 _- o<center> - _5 _6 O8 z' O5 z, r7 ~5 U6 [
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
4 x, c; z' d; d- x# H  J$ M, r2 r<tr> * k7 n( o1 k% d, u  {& s+ _
<td width="17%"><%=showbbs("name")%> </td> 9 k* s* Z% T  o, k* v; S
<td width="83%">
% K; r( L- p. o/ W& w& O<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
/ Z3 W- _; b* C: a</tr>
& e0 H; F# v. G$ K2 ?</table> : [, {2 v3 H0 x8 N' T  ]* D" ?
</center>
5 T# [2 }2 B# \5 B</div><hr size="1"> 0 R% P& F% v4 l  c/ E8 @
<%i=i+1
: X. d+ f3 t" X* l" Jif i>50 then exit do ; }$ H$ m9 ]4 r; x  g5 o, X7 ^
showbbs.movenext
% S" Q- @. R1 |/ ~3 OLoop 2 W; i. v9 [5 C5 a- [9 K" @$ E2 Y
showbbs.Close
$ B# E. V7 ~6 Nset showbbs=nothing
4 q- g' q& [: B) S  `%> ( q6 M; F% w. e( t

; D% S. N; h; I这个文件就不一句一句的讲了
. [5 g3 ?% a1 i主要讲精华部分: 1 J1 o3 Z& }6 D, l" S# A- i6 Q7 q
set showbbs=conn.execute("select*from bbs order by id desc") + G# q9 g! o& k( W
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
# q! p  }/ @( K8 e6 Y. P! Q% w还有这么一句:<%=showbbs("name")%>
/ _! G- A8 a% v* E/ l' u) g. J就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs # w7 T: J/ E8 {% [$ x0 D% a
代码中的i=1和i=i+1 & P: l4 [+ q* V7 a
if i>50 then exit do
8 j. f8 Y$ `) g3 cshowbbs.movenext 7 B, n' S7 @: r4 }: ~7 g
Loop ' V  \( e2 }* j; h
showbbs.Close 8 V1 G, o* w" l! [1 T! p
set showbbs=nothing   r4 t1 c2 T6 V$ ~7 D3 p4 }5 ^' l

$ |  y% d8 F6 c0 E4 X4 F, j这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 3 E4 {3 p) m6 b4 \& {3 k
if i>50 then exit do中的50可以修改 - v+ a9 t, O0 O: s0 e9 j
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 ; |- N! \9 H* ~/ P, ]0 {. i
还有一句很有用的:
0 u& P+ l6 {. z8 O9 X" \2 f6 U8 z$ d<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ( `" v' b" M1 v
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
6 t3 @$ O' \. X: w( b( k7 s等一下在show.asp文件中就有用了 : Y2 O3 ]) X- {% R) x
( G3 D8 h7 V" B9 N$ M" H
5、show.asp
" p, S5 E# P. K源代码:
# f3 X) ^" R% i# S+ e# d" _% h5 Y
. r" u' _# d3 m<!--#include file="conn.asp"--> : i. m+ o4 Y2 ]6 w$ r+ ]
<%id=request.querystring("id")%>
6 ]% w' h7 N! [! N; }% L+ {<%set show=conn.execute("select*from bbs where id="&id&"")%> * u( u' K5 M( ^$ B3 ?. }
<a href="index.asp"> : ]; S: l! ]0 B5 f6 j8 @
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 9 Y6 A5 F5 Z# u9 w
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
* ~( P2 T  H% g* L+ k( I<tr> ) Z/ C. {, v) W9 _
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> : g% G9 M, {& P2 j  q9 O1 P) c
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
. ?* O& |0 y8 i1 ?! G% |0 X</tr>
& P, w! R3 H% |7 l" h1 v: Q. n<tr>
. I4 T, R1 n4 i. j) |5 c4 O<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 8 x4 O+ C/ _9 ]. L
</tr> + U. U- [: l+ z/ f
</table><%set show=nothing%> ! x, x: V9 Q: H6 d- F5 |

6 w- h* T, |& Q7 N3 B- b劲语句---精华语句: 6 i- P) p7 [  n5 E1 ?" ~+ u
id=request.querystring("id") , R' s0 u' z; c/ D; b
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 7 j/ K6 j0 A  Q0 x' i
id=request.querystring("id")就是把地址栏中的id的值读取下来, 3 g% f8 _! a# {+ i/ }+ w# g
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,   m* s: n5 ~  t2 k( b/ E" {0 K
所以show.asp使用id=request.querystring("id")语句把数字读取下来 % Y  ^4 A; i* ^
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 8 w& x3 q" Q$ [0 o
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
4 T% [! s1 Y7 W0 k最后<%set show=nothing%>
, O! U7 A. [- t" a5 m  K
4 j; ~7 \0 t7 g& O1 g, L好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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