返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西" M  r- q; ^$ B
真NB..佩服ing .....$ v1 {1 `2 w6 b! A' V/ x+ E) F
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。5 B, q/ C# E1 S1 I- J

0 n+ y$ A4 M& v# p& W; M# P同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 # M# z4 K$ x8 Y- B& I& ^

$ V$ ]0 M5 ?- z" B; ?" k一、建立文件!
) u, N' @+ R# ~" P, j最简单的论坛也要有几个必要的文件,就是: * D- i5 R6 d' }, D5 n( E' W, Z
2 f/ s- o5 r+ Q6 J; Q  |1 M4 x
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
# P9 Q1 `7 e7 ^: G' [; A3 }
* n1 J6 z2 p8 X( N* `) P2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp # e3 @% N+ r& h5 N: U
2 H% s- l7 ~. e" ^( @" E* I: s
3、发表帖子的文件----命名为:say.asp
2 L3 q; J8 B# z% s" r9 H& u3 h
# {/ n0 E2 ]  S( K4、保存发表帖子内容的文件-----命名为:save.asp
7 R9 y; A( h9 e/ X4 K
- @: P! }* y, E2 y4 C2 g6 V; M5 z6 A5、显示帖子标题的文件------命名为:index.asp 0 Z% s5 N# L. a

- X2 @  N8 u1 S- Q8 c6 A6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 4 |( [% o# j1 g! \$ ^, ~9 C

% a6 r8 I0 Y4 H4 n$ w0 g1 i0 y建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
; R( k, t+ r5 l6 e7 W6 f9 a4 h9 ^9 ~) ?
二、各文件的主要内容 / F+ y' T: @9 k/ G8 q

" b+ U/ P' G& b# U+ r" M1、bbs.mdb 0 [8 v7 Z9 L+ X# o+ P
; _8 A0 I9 O( K" L; u
打开这个数据库,建立一个表,命名为bbs
) x' c4 t6 q( s  y# p; U+ ^7 q9 p$ n# A
该表中有几个字段:
0 G# ]' C. H6 c* X+ u  t! `7 j9 `: w4 G8 N, `0 q4 p3 t; }
id(自动给帖子编号),他的数据类型设为“自动编号” 8 @- T& p+ y, X; C' K

# m& k8 G; O! ^" d* x  O$ Bname(用来储存发表的作者),数据类型为“文本”
% E- ~0 v) ~; A, b4 T6 e! y, W  y
title(用来储存帖子的主题),数据类型为“文本”
' }7 j! O8 Z1 F" F8 S- Y8 B4 @. H* H( d: v% d3 I' Y
body(用来储存帖子的内容),数据类型为“备注” & s* X& D7 S8 _! `$ t2 E/ I
3 X0 Q- R8 N) `6 _
2、conn.asp
, Y6 {9 v9 i. ]0 E* G  U源代码为: 2 R! @* D# j. }7 f7 a
<%
7 S% b+ {; n2 j0 H$ w* b2 WServer.scriptTimeout="10"
) i4 p2 g, S$ X/ A5 Dc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
" S$ D$ l/ h  Fset conn=Server.CreateObject("ADODB.connection")
* U3 \* A6 ?4 b# N4 J  oconn.open connstr . [* z! b- M8 h  o  w0 l6 L- y
%>
$ O& N1 {0 O' i/ v( ~+ G7 j( V' P5 g! `- p
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! % k( g! f) |! R* R! e
2 W6 Z/ [; _4 a2 K% ^7 E6 O
3、say.asp ) h6 S9 S" {! j  l

( p2 A8 `: x) r  y" h5 M源代码为:
& Q& O1 V3 |1 N2 F: p' j3 X$ E# s5 ]2 ~<form method="POST" action="save.asp"> 8 w% m2 k+ Q5 M+ _; M0 b! i: ?
<p>大名:<input type="text" name="name" size="20"></p> ) z$ i9 |( y! m- f  P; Q
<p>标题:<input type="text" name="title" size="91"></p>
$ e- A) b- N- T6 d<p>内容:</p>
7 b4 ?/ S6 a' _0 F. H<p><textarea rows="11" name="body" cols="97"></textarea></p>
/ |, Z! P8 U  Z( }9 k6 f<p> </p>
# W" x* i6 {& W; g; U<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
) b( c5 a4 w4 r6 ~; K8 @</form> : c/ u/ K/ l9 z2 f0 M0 S" x
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
& N! E" b6 O# d* u: {. M不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
( o8 u2 l/ G* @8 s0 Q) x* Z
; L( i6 X0 x7 ?# o" D4、save.asp ; o7 E5 p4 Q* g3 E

. W& w% O% u# S+ c) K源代码:
& o$ E' K6 d  K  g6 `<!--#include file="conn.asp"-->
* F. d# ~! A7 q& |9 k6 u<%name=Replace(Request.Form("name"),"'","''") . S! ?3 V# w" \7 f. I9 E# A! ^
title=Replace(Request.Form("title"),"'","''") 6 ^2 T3 \) i5 `2 y
body=Replace(Request.Form("body"),"'","''")
- F. G. J9 Q+ U; x%> 9 A- @3 n# O* q. A* ~: g
<%if name="" or title="" or body="" then%> 1 C( n; i; g% c' B: u
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
0 b% t  o; O/ o9 z<%else%>
% o% I4 H; F, ?0 A; R<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ) x* {3 l% P) L
发表成功!<a href="index.asp">查看帖子</a> 4 h1 y/ |  r+ M+ g: R
<%end if
: V1 L- i8 }2 d7 K0 yset savebbs=nothing
+ E; h" Q3 {' h4 ~( n%> ; V7 s1 q1 L! S& Y& @4 b6 d, H( ?

! v9 j0 O: c, l+ w1 F% k第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! + U$ b8 I! q) r; C2 ~: B2 x7 H; n
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, % m4 ~7 G7 V( v7 q
接下来几句: + c- U& \, h! w" t+ K
name=Replace(Request.Form("name"),"'","''")
2 D: w1 ^4 @7 t) ]# ititle=Replace(Request.Form("title"),"'","''")
2 f& Z5 ?. @7 v8 _0 xbody=Replace(Request.Form("body"),"'","''")
: G) K. g2 q2 n# E/ ^  e. \9 e. w. d3 j0 v+ Y7 I4 B' d
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
2 R" F' o+ t$ i而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, : A8 Z5 z# |& D7 ?
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 7 v1 f$ j8 ~! {: P& p7 W' l5 q
就是把表单中名为name的文本框发来的数据储存在abc123变量中
0 ?* G$ c, B) O- R
- y9 H) E, G9 _3 W& Y* g接着:if name="" or title="" or body="" then   ?$ S  M5 y5 a! y
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
. C) e1 r. p9 x" G“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
7 K2 w' |% T8 n  ~7 B% J+ n' O, Z" }该语句属于html语法,大家都看得懂的! ( U/ v1 \  N: G! m
7 N7 F, M  T, [9 p8 b, l+ e% L4 F8 ~
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 6 @' l3 v* E( m( H2 N1 a
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ; l! z6 a/ W7 m
发表成功!<a href="index.asp">查看帖子</a>” 9 k; n* b" }1 O! E* }8 [
  D8 {6 C# d# e4 g. o9 @1 k) ~5 z
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 1 r: i: w, {- u( t4 u& i( b
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ; C. y7 j# P  M) R7 y9 f2 }
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
. h7 d4 w0 n) p$ Y' c  Ivalues是“值”的意思 % \  P6 ^5 N6 t- w7 z
就是插入向量name,title,body,向量用格式'"&name&"'表示
5 Q5 @( D$ `. i# c) y- \# X0 \0 z3 B' i4 l7 r
最后:end if就是结束if……then
  ~$ f$ x, {& L; b, W; wset savebbs=nothing可以说是关闭掉:   `1 m; [( K9 d  Z& Y2 a& _
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
) s9 c& P  j* ?2 t+ @% Z& `9 I, K, F/ v0 b9 \% y- N( J- i
, Z3 \2 e5 x; b9 Z5 a0 @' ^) M9 e
5、index.asp 2 N" _7 r3 r* D! P) c6 h) G
源代码:
; j, F$ d1 |2 A/ f) z5 P<!--#include file="conn.asp"--> ( `7 v: n+ v  {: K; m- l" C! Z
<b><a href="say.asp">发表帖子</a></b><br><br>
8 l6 H! d6 i* _/ [- ]8 s<div align="center">
8 f+ u/ b* ^1 S0 @8 i<center> * r/ M! t& Q' d$ e: E
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
/ Z* C4 J' a& u3 h# S- F9 O<tr>
1 E( d' X& \; ?: U, _  T+ X! @<td width="17%"><b>作者</b></td>
. B% ?( C% R# w5 p! J# C<td width="83%"><b>主题</b></td>
% Q) F8 j8 q6 h$ X. g</tr> 9 @4 @( ^# `# i1 l( F. G, B
</table>
. D3 L* u0 |; z: c' \; E" ^</center> 3 @( T( t* ^+ D6 I! B& j8 v- G1 L6 Z
</div><hr size="1">
% @. [5 ^' v2 ~" @<%i=1 8 L# I- Z5 q* r
set showbbs=conn.execute("select*from bbs order by id desc")
1 P& u$ h" B9 n. }9 X0 y( cdo while not showbbs.eof 8 P6 [  _  D, L; W$ F  h
%> ( Q$ Y+ u; \. Y$ f2 e
<div align="center">   I$ o+ y. P! M' h" i7 B
<center> 4 U' e; N" s6 t! O3 s
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> , U# N/ {& z# B2 ]( L- _2 I
<tr> 1 k) A( A1 F- e3 f' g
<td width="17%"><%=showbbs("name")%> </td>
; s/ r/ y: ^5 Q) k<td width="83%">
4 R$ a7 N  v1 i7 O( w<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
. x: R% E, L) t: r</tr>
. ~0 V( G$ x* X6 T</table>
5 u$ V/ m" g6 _! U. V) I3 r2 C" l</center>
0 R( k) u7 f6 r  O</div><hr size="1"> . |( [# e1 Z& p" g- k+ P
<%i=i+1
) I; d* M$ r' xif i>50 then exit do * V$ D. l1 K9 i  A- K; s* }
showbbs.movenext ) m- a0 C) b; C+ U" E8 S0 E( `8 B
Loop
: |, _$ f" ^# ~' d. T' \* s$ lshowbbs.Close
1 \  l5 B( n8 _% Bset showbbs=nothing
- f* W- Z2 N  ?: _& V0 t%>
& ~! Y, |+ G7 I& t
5 A) s: m  ?9 e这个文件就不一句一句的讲了
+ l( O% ^3 G1 ]主要讲精华部分: 8 `+ L& q' q; }7 j/ ~
set showbbs=conn.execute("select*from bbs order by id desc")
7 J$ q# c. I# k" N! Q! \+ M意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
/ z8 z; a5 ^: ^9 z* A还有这么一句:<%=showbbs("name")%> ' z9 ?2 ^* u8 P% D# w  }$ X9 I
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
8 X7 H9 Q1 B9 z, Z" Z0 X, R/ p代码中的i=1和i=i+1
( `( _1 E8 P3 l0 B& \7 rif i>50 then exit do
* e" N+ P- Y0 hshowbbs.movenext 2 {/ X( a; M1 ?; D
Loop
! B7 w6 {9 E  c" tshowbbs.Close 5 c* }1 U8 }! E% W; B& h3 X
set showbbs=nothing
$ Y: c) s' P; }8 S  H; Y. Q1 K4 p2 |5 j+ r- F2 R
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
$ j" \4 J3 K7 J) p- wif i>50 then exit do中的50可以修改 $ z1 c+ t9 @( ~7 \) h* N0 m
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
8 }+ X1 C" u2 |5 O9 L1 I还有一句很有用的:
4 b. l- L1 n' V4 P( z: m7 `  [0 p<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ! J& v5 _6 D) N; a7 W% g( r
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, % f6 c0 b' w) g% w* X9 U
等一下在show.asp文件中就有用了
0 x' _: n+ ^& A6 s2 _3 q  X) K
2 [2 d- ~/ b6 V$ ?- O5、show.asp 9 z& s4 z7 n+ {9 [# A) A+ W
源代码: 4 [1 n6 I& f* y. y3 l9 [

- j" ]! U1 E9 G0 M8 f<!--#include file="conn.asp"--> 4 ?% {, {2 \9 P' |
<%id=request.querystring("id")%> 3 F6 c( n4 p4 E# ^. H
<%set show=conn.execute("select*from bbs where id="&id&"")%> # Y- g$ m2 }' t& U: R
<a href="index.asp"> , c# R% U' ]6 p' o( |8 S0 G6 l
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 7 Q& N$ d# c; ~' t
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
/ ~% h& |  b( k3 I  a9 i/ C<tr>
+ u! W( \5 T, o; R<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
% W* b: }% ]- `7 [3 b8 w* V8 ~$ _<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ; a) b  B/ ?: e2 v# D
</tr> ' |2 z" J1 \- p/ A
<tr> % t) d" ?( K! ~2 E
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
4 s3 ^% w+ F$ x& ~+ H* i' G! @</tr> - H' Z4 j; P- }+ b+ U5 [
</table><%set show=nothing%>
5 ~( H: ^# s6 R4 S# g
: h/ u- y7 Q$ t, I- P4 B: Q劲语句---精华语句: 7 x) O; _4 V6 l2 p8 R/ J- e  x
id=request.querystring("id") : I3 c/ _5 X) E5 q+ ^1 O: {
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
; w  A1 v3 D6 x/ b0 jid=request.querystring("id")就是把地址栏中的id的值读取下来,
6 u1 R3 z3 p) b9 i8 s8 Y) G5 W# W. X因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, % h" `- s) Q8 Y5 h: @: N# F
所以show.asp使用id=request.querystring("id")语句把数字读取下来
, t, X7 e9 G- o( A# J于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
: {5 U& w1 u; W1 [向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
; u0 t+ L2 z6 q1 V3 y" |最后<%set show=nothing%>
  j- B! ?! }  {% [) `* a1 y4 T$ j8 ^. U, }) v
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

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