返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西/ t0 S/ E! p( K) `$ [
真NB..佩服ing .....4 f1 G* y; j1 p- [( D! p4 ^
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。  H! u, S$ m! u7 v$ Z6 E, O

  X- ^9 v) p% c+ @: b* k* @$ b同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 . X# B: D; e) }; P- z

0 H& ?, l& R0 g! H/ E% w7 F一、建立文件!
/ |2 Y6 Q  C" R* `. L1 h最简单的论坛也要有几个必要的文件,就是:
7 F' n7 q; D* q4 k9 A1 N, I& M9 Y! M* T! a; i$ G2 A
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 4 v# z, }* ~; v$ E" t

$ p" \; L8 s2 ^2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 9 `! q* C1 r$ g2 K
3 P2 O: w2 T& V" R- F! n
3、发表帖子的文件----命名为:say.asp
. \! [& L+ W9 I7 Y& q& n+ A/ o" Y6 y0 ~' y" @
4、保存发表帖子内容的文件-----命名为:save.asp
, V1 \/ a* @0 F; ?' g- N7 A2 u1 L& b! K. K; w( k% @
5、显示帖子标题的文件------命名为:index.asp 3 \1 w. F7 n! }' I# }: z

/ J+ x  W1 T) }+ q* h# t6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 6 Z  F! M; n. f' L! f

: n! b5 K" u7 g  H- y: K) g建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" * X1 o4 v) I) y9 P  C
- `, n& M3 A: T! V: q
二、各文件的主要内容 9 z: p# P3 H* b

/ T3 O0 M. _, ]1、bbs.mdb ; _6 O: p" P# r* d3 q
' y1 [1 ~* b4 T3 f0 f7 R
打开这个数据库,建立一个表,命名为bbs
6 p- [% A, {; M9 u9 M
' _+ |* v  H% O$ C# [: Y该表中有几个字段: ! r2 p' ?0 C: |0 J( g) o. L

/ A" V( Y+ r$ a2 W1 y2 Kid(自动给帖子编号),他的数据类型设为“自动编号” ; j5 Y+ X! [# A$ d: T1 `* j, i
2 s6 z6 x$ P& ^+ H3 o8 m4 \. p* i9 k
name(用来储存发表的作者),数据类型为“文本” ) v6 N# E6 D2 u/ t
4 B- [1 f; |+ S% T+ ?5 S- u8 x3 m0 w
title(用来储存帖子的主题),数据类型为“文本” 8 j: Z( i2 Z. _3 X8 t
: r4 o8 z2 |) z0 E
body(用来储存帖子的内容),数据类型为“备注”
, I- W2 k9 d/ I; x% a
+ c5 E  u& B3 \# T* y" L  F2、conn.asp 6 \* R0 }- `( L6 \# f0 M
源代码为:
! t+ M) t) {2 E' u5 ~3 X9 I<%
: W5 J: f  o# W1 t6 [4 B7 BServer.scriptTimeout="10"
5 k8 K4 w- f$ O7 U, Tc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" / \# _9 c* q' I. I
set conn=Server.CreateObject("ADODB.connection") 3 o/ a" [5 Z' W4 S1 c
conn.open connstr
) o) u9 z; i3 J9 C' v: b+ b%>
/ _3 m8 i, ?3 o) b, ?+ P# c1 ?" A
! e+ b) h+ D5 x  ~2 V: [这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 1 |- O7 P3 J9 o- P4 g: Q7 Q

5 r0 v& H% W  M2 X4 |3、say.asp
  d& X: Y) g2 x# C" g- j0 D2 Y( K. l, s  S/ v6 F/ O, `3 `
源代码为: 6 n  k% Z6 D' N2 C$ P1 d
<form method="POST" action="save.asp"> % m+ b0 Q6 B$ M; r3 P
<p>大名:<input type="text" name="name" size="20"></p> % |: R# N' k: P
<p>标题:<input type="text" name="title" size="91"></p> , r2 p6 {. W% a
<p>内容:</p>
- Q1 @; j" P' C/ G: e. U# T<p><textarea rows="11" name="body" cols="97"></textarea></p> " ]! x: ?" g0 N& Q2 U1 o8 v' \
<p> </p> : p) V& k8 N$ j) O6 O( [% @
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
4 c( ]1 \1 y- a</form> 3 o7 [" L( \1 U5 u) g
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
' N% Y  l5 [1 v不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
5 U1 l8 s: a3 Y' [) O
! a: D" k; l( }) `  h( a4、save.asp $ b* E# m! i& B& }) e) _
$ f' E- q8 B1 c  q- e
源代码:
9 ?1 Y+ U& b- J/ z8 y<!--#include file="conn.asp"-->
/ l+ w8 I/ ^( k, K/ e# {<%name=Replace(Request.Form("name"),"'","''")
8 R( I; A, O/ a0 _& c: Q8 e4 x6 ?& Dtitle=Replace(Request.Form("title"),"'","''") . j8 X, s  t+ ]5 r8 I
body=Replace(Request.Form("body"),"'","''") : v5 r3 y" X! I6 h
%> 7 k1 {6 [; c# k. w7 E
<%if name="" or title="" or body="" then%> ! \5 W2 o6 D$ ]: L+ W
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
6 f0 R6 A4 Z/ w5 h' J6 x* m3 w<%else%>
* y& M  l/ S: a- \& Z' G<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 7 V9 [3 ?7 Q/ [* ~' ^- Z2 c
发表成功!<a href="index.asp">查看帖子</a>
8 u+ x6 e, r) Z' k4 P: E<%end if & {4 A8 o1 O, M( I
set savebbs=nothing 6 x! B, f' D2 }0 x
%>
6 Q! ^/ v* S/ g9 w' \! j, `" K& h" Z% R  f/ t
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
1 F% g  I/ U* H( \- ]asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 5 j" T3 n! ]2 J2 f
接下来几句:
. O3 d5 c+ Q8 K( W3 nname=Replace(Request.Form("name"),"'","''") 9 G* X, {: \) k% A
title=Replace(Request.Form("title"),"'","''") 6 t3 o2 A, V3 S
body=Replace(Request.Form("body"),"'","''") ; f# j0 v+ W1 a
8 z. U! e2 A: q
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, / d$ L2 L5 M0 B/ K! m
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
5 t7 g/ U) e1 J如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” / x" o$ k; G* @- Z8 @
就是把表单中名为name的文本框发来的数据储存在abc123变量中
: ?5 u9 k, o: ~: v' B7 ^- Y; i* v( M
接着:if name="" or title="" or body="" then . V8 P$ `- X- u+ k* o
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
$ G/ ]% D  A; a7 T6 M8 z“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ! x* w, [5 T: b/ B. z5 K1 L* O6 L
该语句属于html语法,大家都看得懂的!
' J1 a. h# Q8 R9 G$ o8 d2 E$ B. Z
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: . B& ^1 A8 u0 H% d6 u: N
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
0 U5 p! P1 `+ i( R4 B1 i发表成功!<a href="index.asp">查看帖子</a>”   G; k2 {  W$ E0 n2 K' G1 D  F

" U) B* k  B5 l0 Q  k& ^: `"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: " M2 ^; U5 [0 K7 j. `
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 8 M4 d4 f/ D, S% P
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ( ^4 z6 G& ~1 L& Z
values是“值”的意思 5 T5 t5 A5 q1 D- V
就是插入向量name,title,body,向量用格式'"&name&"'表示
! y# i; @, [- B0 ~, X/ K* b9 K" V  k3 v# m, f6 g
最后:end if就是结束if……then
' b7 c7 b+ c9 f0 q+ k1 c% U3 ^set savebbs=nothing可以说是关闭掉:
7 \2 N; N5 a# r/ Pset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
( _3 P& {6 \9 `
; s! k: {0 D" S' W& Y/ `1 i' ^& ?( P* W
5、index.asp * L: W; s, l) I( G  J/ o# V: h
源代码: . e. C2 g, J# C* y% m6 Y) g
<!--#include file="conn.asp"--> & i1 T& B7 |0 J/ v' X+ A9 a
<b><a href="say.asp">发表帖子</a></b><br><br> 1 X8 [* K- v- T8 _
<div align="center"> ' U& M9 L; l0 @( `. a! |% V* i: f
<center>
) n: w8 q0 f7 t/ m1 j/ l4 n( ?<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> , r( ~1 Z4 c) H& I; @- V
<tr>
$ W" h5 l! f0 H6 T- G5 Z1 u<td width="17%"><b>作者</b></td>
# w4 }- ^% p- `2 B$ E/ ]<td width="83%"><b>主题</b></td>
, q) {' L  L  a: g! Q</tr>
$ \7 k* i3 J. v; J</table>
  |* k2 [% j, Z</center> " G; E8 [9 Q# T! ^. R
</div><hr size="1"> , e4 f1 j1 H$ x; m5 C- X4 w2 X6 `
<%i=1 6 Z* h% Q1 Q& w$ ?9 r! h
set showbbs=conn.execute("select*from bbs order by id desc") 3 w3 `" j* ~* B1 Y  z1 A5 g) [: M8 h
do while not showbbs.eof
* N% X. I/ u4 ?0 A" `7 X- m: Y3 f! p%> 9 M! Z. O. F. r  q
<div align="center"> / n* T3 ]- V2 C- g: p
<center> & d: [. \" V% ^1 r( G$ E
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
" A; Q' B: ^; b7 D! Z# X<tr> " h: c# z* f; y
<td width="17%"><%=showbbs("name")%> </td> 7 t& E/ l' C! F8 D2 o, n
<td width="83%">
9 n8 [5 c' D3 \9 ?<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 8 P$ k2 \% W/ y9 G
</tr>
8 T( r! u8 P  b. X2 a8 l, o& ?0 W5 K</table> 7 R; m6 _6 Z% F5 A& C3 i
</center>
  o0 g, N: R% D</div><hr size="1">
* g# `' m) y' k4 o) m, O/ r- Q<%i=i+1 $ h7 {, [5 v2 ^7 Y+ F! {% g
if i>50 then exit do 6 d' f) w: M3 b' n/ j: a: D
showbbs.movenext 1 g1 H& n+ v% _5 {8 H
Loop
. y3 ^1 E2 S" @% ]' m( Wshowbbs.Close
: w! \) w, h* mset showbbs=nothing
! l5 U$ o* X3 u% C3 Z%>
5 ^! L9 \7 O4 b9 D. I5 c) n9 B- i) P: M! X: c! p* W# i
这个文件就不一句一句的讲了
6 X, q0 a( t% @2 l( _主要讲精华部分:   l6 z/ n8 j+ F. X: n/ m& W( @
set showbbs=conn.execute("select*from bbs order by id desc")
. _" I  W  b) b意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 8 s/ ?* Y! {8 l9 Q' I
还有这么一句:<%=showbbs("name")%> 2 Y! G' @* B" Q) ?
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 3 B$ P( y$ o( Q. c- S0 Z
代码中的i=1和i=i+1 - S$ M" s: ?" `/ `& ?. O! l
if i>50 then exit do
; [9 J3 s4 Y9 d8 e3 X% S; {showbbs.movenext & F" M% w( r. G# X
Loop
4 V# l" k- j: N: o- dshowbbs.Close ' v! B1 i& f( u$ c) v$ n3 r
set showbbs=nothing , Q! \! a9 g: l* h" }# l' A3 Z! y9 ^' z& o
: ^0 C9 r5 p! p0 A% \- H
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 8 P. }$ j" \: b8 P9 E: w
if i>50 then exit do中的50可以修改 + `+ o& E! J7 i
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 - }  y0 \: A' M% u* r
还有一句很有用的:
& v; T3 ~0 E* U  q0 f<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> # @- ?& b: @3 d) p4 O$ N4 \: b
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
  J* c7 `' Z# e# ]* _$ V等一下在show.asp文件中就有用了 ; D+ @, |( T" Y& V

9 m: ~: b; [* h5 `5、show.asp
$ {/ J7 }0 o: g- C; {源代码: ; T5 o/ d. Q2 E  g) q9 d
. X+ _3 X8 t+ {  }$ n* i* T+ H
<!--#include file="conn.asp"--> 2 |0 M6 H( ~% l
<%id=request.querystring("id")%>
% U9 \9 j" q$ {& y" w<%set show=conn.execute("select*from bbs where id="&id&"")%>
0 f$ d1 f2 U8 s) h6 b+ D9 U$ B<a href="index.asp"> ) y6 A1 g0 Y3 Q9 C2 b+ n9 u
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> " }5 a, S7 e+ s% M9 y# |
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> " j0 ?; V  [/ N+ ]/ F- i8 r& @( k
<tr> 4 ?( f7 O- I' [
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
0 _/ P# m- M4 S3 j<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 3 m' b# w) B$ `! j# ]4 ?
</tr> ; r! z1 V% u/ i2 D+ g  l
<tr> 8 n( p$ i# H, E) l
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
+ H$ E$ U5 L) y- l</tr> , e0 {0 _4 @: F
</table><%set show=nothing%>
! p" t3 a* o7 C) F4 S- f$ ]& C- B! A  }2 Z2 [5 g& A
劲语句---精华语句:
) A% r5 [3 t7 X" E. C+ V' fid=request.querystring("id")
9 @" a% q5 D8 S6 `0 H( E8 Z在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
, P2 Q( G( ]& T( g" f* z/ did=request.querystring("id")就是把地址栏中的id的值读取下来, 4 c0 W2 a0 \+ @. V
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 7 |- D  D2 l4 g! M& j( Y( q6 n5 B
所以show.asp使用id=request.querystring("id")语句把数字读取下来 8 D- K" S" J4 Z8 y$ P  e& {' Z* Z
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
: ~5 ~0 n- |" m2 a- ]' C8 y. M1 E向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 1 N- G9 S- U8 p
最后<%set show=nothing%> ; o4 a- x& l) z3 h

# J' v$ H/ d, ~6 @好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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