返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
& C' E1 l8 n2 N* X真NB..佩服ing .....
1 Z# T7 ^' O& K$ G$ d. \大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。, s' t/ {2 h3 g# c( D/ X4 W; Q, d
3 y5 h4 k( m  e. B' ~5 |
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。   }7 o7 S- Q9 k! l& a
# F9 N5 U6 E2 }% l/ q; Y0 A
一、建立文件!
, `7 j+ _9 f2 S最简单的论坛也要有几个必要的文件,就是:
$ b& ^7 y* Y2 ]' A" a8 t1 g1 f0 ?) W+ {- p$ m! j
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 6 I% i, A% k0 d4 ]6 k

7 J" X, ?" @1 Q: I) h3 E! `2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 9 f2 j5 d: X1 M1 A( i& }
" Z1 Q! C; g* i, i
3、发表帖子的文件----命名为:say.asp ' l) O; G1 d4 u9 t! N
" `$ p/ L9 ~; Q) }: \
4、保存发表帖子内容的文件-----命名为:save.asp
1 ?7 w2 J. S  m- F. h+ R$ f  W/ N7 T* ]$ [1 W9 X. \! L
5、显示帖子标题的文件------命名为:index.asp % K% B: w) A% k& C

* K, L( M3 h3 H" V6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
  Z( v+ @" |8 F% \. g3 b/ L0 ~2 K5 z4 {  I2 C
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
) y7 c& D+ ^3 M# ]! g2 r2 ^8 i5 Z* R5 h8 N
二、各文件的主要内容
1 O( K; W9 C2 i+ K( q& v2 R% h# a! G# C9 W
1、bbs.mdb
' g) Y  o7 ~. m) O3 S3 r* d: F
) k. l: B( W0 r  @! i3 W0 `% g; F打开这个数据库,建立一个表,命名为bbs : ^; Y5 b+ O) a! F) h

% x& @& x; U, Q& s  _  k' D该表中有几个字段: - }8 h- |' _2 n

* y. ?, v+ c# Aid(自动给帖子编号),他的数据类型设为“自动编号” 1 e+ s$ S9 ?1 H5 x* \8 y: h

! C4 }: ?: W3 c- \+ R" Q' M" Cname(用来储存发表的作者),数据类型为“文本” ) k2 q; p. T& g  u! ^
) d$ b+ [7 p0 ~8 X- \+ B
title(用来储存帖子的主题),数据类型为“文本” $ t) W& J; b* n( {
3 B9 v% A/ X$ v, \5 a& D% g4 d
body(用来储存帖子的内容),数据类型为“备注”
' I$ k  D6 z/ @& S5 B
2 k! h/ [6 a; X2、conn.asp " H- M2 H% J1 v/ o* T4 a
源代码为:
" W& B* ~1 U$ w$ l* K' _( N% ]<%
8 `7 N- Z1 F8 i! V) ?Server.scriptTimeout="10" 3 I3 |* K7 v" I4 ~3 n% T
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ; I! M% X8 }: b2 N
set conn=Server.CreateObject("ADODB.connection")
% Z0 B! `! o) [conn.open connstr ; r: W$ C# W4 j' \
%>
* s. E. p) L' W5 i. ~: ~6 T! T" x; Z4 \7 @; A" o; \$ ?9 j6 g; O
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 0 l1 ?7 r( B. O- j) F. I! |' i# O

6 m8 q& F  _$ Z( b/ q  H3、say.asp 9 {9 W5 J0 h: `# O7 P8 L
  G, R$ ?% f* z8 O) g
源代码为: 0 A0 N$ u! H' L' B! v3 H' A, E
<form method="POST" action="save.asp">
6 T0 A3 i/ u& V3 e7 O# q<p>大名:<input type="text" name="name" size="20"></p> ) G+ `7 \- P$ @2 N" r  S
<p>标题:<input type="text" name="title" size="91"></p>
: F2 H+ N: b% U) p9 N" {# ]0 O<p>内容:</p> 7 w; ^7 w" W: F1 P- F) {
<p><textarea rows="11" name="body" cols="97"></textarea></p> 5 m' `2 k! }. a4 l3 L2 o
<p> </p>
2 ^3 N* c4 f/ t& S' O) O8 D5 c<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> % Z6 u1 ?( w) G. _! X- l% t
</form>
- W2 F/ {/ f! Y- s大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 $ Z2 e2 h( }& L! a- _* w
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
! G; z) v' q0 D! d, Z% E
, `* A& a8 j! I" T, P+ x4、save.asp
5 n7 Q5 b% E7 P2 q+ @* `0 h3 C8 p& w( c; _: e. i& D# D
源代码: 1 ^$ Y# u7 V" ], I
<!--#include file="conn.asp"--> & R; [" _, c% R
<%name=Replace(Request.Form("name"),"'","''")
: B5 t9 t0 l/ h3 a6 X- mtitle=Replace(Request.Form("title"),"'","''")
: D* c7 w) o. ~2 ebody=Replace(Request.Form("body"),"'","''") + B& k" L4 ^  _& \4 G" y
%> 2 o. `. }( p/ x
<%if name="" or title="" or body="" then%> 2 R8 k: j7 f2 o( V! s: ?
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ! g2 S. _' F2 Y4 @
<%else%> ' U; D$ X" I- D
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>   g; }, Y: D' d4 |- M8 }8 o7 j
发表成功!<a href="index.asp">查看帖子</a> # d% j& R) Y" {% _+ w, Y
<%end if / u$ ?$ ^2 z7 P
set savebbs=nothing & `' o% Q( _/ b
%> . I; w7 C$ a3 p5 G8 E
) o# p$ V  \, |( _% l- Q
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
8 W$ @; d" L' P  O7 ]asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
! T8 T- _5 r4 e, d接下来几句: 0 ]' v9 k4 e+ e% F- k$ j; {
name=Replace(Request.Form("name"),"'","''")
* L" C  ~% s' }- X# y8 Dtitle=Replace(Request.Form("title"),"'","''") 0 k7 b0 _6 P5 u( X# q
body=Replace(Request.Form("body"),"'","''") / v% W3 }1 X2 r6 l% `% N2 u
4 L% k4 v. Z0 W/ Q! y
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
/ e2 h/ A) L4 E: [而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 3 ?' T, R7 h0 E1 Q/ C
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 1 ]3 {* w1 z0 _# w" c2 D
就是把表单中名为name的文本框发来的数据储存在abc123变量中 # h7 X1 h6 R$ i  D! }8 {" y, d5 B

$ c  ]9 m  E& p6 {/ q' Q. V0 s接着:if name="" or title="" or body="" then ( F" |5 E: E2 j& A5 h+ M' R
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:   F8 }; w% A  b$ O5 g
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” # L, K; ~% i- |8 M
该语句属于html语法,大家都看得懂的! * ]/ e$ j; Z, ]) p3 O  c
' k5 x7 @2 p: L
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 3 D, v& @1 I( Z- M
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
: J2 |7 b% c1 T% Y7 ?发表成功!<a href="index.asp">查看帖子</a>” $ L+ G: T* i3 q/ u) C8 M( f
" M) z  l& o' j5 D
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: ! l/ [9 p( ^% k, S& @0 ]9 S. ]9 N
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
$ x4 S7 }% ~6 y1 [2 b/ w0 f0 k中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 8 a& Y+ H& S8 }; o8 O
values是“值”的意思
3 \5 l5 K, Y. m* M7 `# S. ~$ M就是插入向量name,title,body,向量用格式'"&name&"'表示 % _% O+ H# ?  A; r1 E8 y. a: e

! {. D- k, O; @; U5 j2 I最后:end if就是结束if……then 6 r- x' v2 J7 r5 b6 J
set savebbs=nothing可以说是关闭掉:
% k% h6 d/ z: k& Aset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 6 D2 t% f$ S7 E5 A

0 k$ K% w: U/ \, h$ Z( d$ A
* D* K& B" Z- k& u5、index.asp 4 \# K: R  o, ]7 v0 c2 g' O
源代码:   I9 T! {. ^2 t0 t$ r& y/ k
<!--#include file="conn.asp"--> ) c+ E2 B; _$ S8 `
<b><a href="say.asp">发表帖子</a></b><br><br>
) t1 @6 C& ?# l6 E2 f<div align="center">
: L+ l8 |  i7 a<center>
' o" O) Z4 h: E<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
0 ^  n* z' w5 c+ s/ r6 Y- ]<tr> ) |- @. p1 e. g# W
<td width="17%"><b>作者</b></td>
, z/ v0 ]  j9 R9 w  z9 F<td width="83%"><b>主题</b></td>
: f2 R# @! f+ l; x</tr> - y1 i+ K. ]% {
</table> 1 [) {) k. C5 A. d% h( ]; }# l9 o
</center> . Y) w7 r9 @7 ?3 C
</div><hr size="1"> 7 S+ ^: [+ S9 {* r9 q
<%i=1 8 d( y0 O3 F5 U
set showbbs=conn.execute("select*from bbs order by id desc")
! m/ v/ Y* C1 r0 x1 a3 qdo while not showbbs.eof
0 d; \5 E. Q3 R; U: s%> " F$ k" `. Q4 @) Z
<div align="center">
$ E4 [# I* A: {' i' C<center> 1 j$ l4 H" F- ?6 I) l6 m% Y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
1 F' B) g# }9 K% W% ~8 q<tr> 7 i$ X8 Z5 f2 ~2 `) x
<td width="17%"><%=showbbs("name")%> </td>
1 ^: V' J% q0 D<td width="83%"> 9 A2 ]; S0 Z. p7 S7 }  G6 Y  ~
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> # V1 {; v/ L& d2 D9 O
</tr>
7 P; V; H/ H+ S4 w+ d( a  M</table>
6 @  @, a1 H3 Y) r  L4 {; [' [</center> 4 \/ k, q. p- O4 u( p8 E
</div><hr size="1"> - S. [1 G$ b- l: G9 K
<%i=i+1
/ U" i0 H8 F$ r2 {if i>50 then exit do ( R' ^  {( a; e
showbbs.movenext 7 O9 M: _1 ]- B5 ]
Loop
! s+ i, {9 _6 V5 h4 Cshowbbs.Close $ [  q1 g1 p% @
set showbbs=nothing 2 X4 \+ O% D! G, ?- O6 ?
%> ( U" d  Y# f# c/ \: S9 U

' ]* W& G& j: ]这个文件就不一句一句的讲了 4 w  e7 o' v5 l% R- |* c  Q
主要讲精华部分: . g7 o  x; b# _/ t$ ]
set showbbs=conn.execute("select*from bbs order by id desc")
" h; Z; D* e; r, \意思是:向数据库中的bbs数据表查询数据,并以id排顺序, * Z- ]) g& k, w& ?
还有这么一句:<%=showbbs("name")%>
( o1 @& [2 A, V* t* _# E4 n就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs + D- B) }) b1 O4 v" ]
代码中的i=1和i=i+1
+ f: s- I; o# Fif i>50 then exit do % u' b( z) L3 T) |+ g
showbbs.movenext ) q& C9 k( A4 x$ I# D/ i
Loop # H( |' ?: C/ z0 u& a: V
showbbs.Close
5 [, w6 N# P+ O/ h; K) }, Z: gset showbbs=nothing
$ x  ~+ ^3 [3 T+ D( ~6 \9 p& E; s- n( _. g& }+ n: [) j
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! # R% u2 r% h1 Y; U) x# y8 e4 j
if i>50 then exit do中的50可以修改 2 a3 }* c% T) f
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
6 N2 @. z0 h+ e, w' E/ x还有一句很有用的:
4 \: f' c) K* D6 l) z<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> + L7 y6 Q( p5 }: [* E
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
4 B- g' \' J* \+ q5 d: D) S- M等一下在show.asp文件中就有用了 5 O- w/ k7 |. x9 M0 O
8 s, D  w& \3 z
5、show.asp
- r9 {5 @+ \7 a8 @, b( i源代码:
0 h0 E  L' x1 p% l; H. Y& B# X; X6 D" c6 @5 X7 K
<!--#include file="conn.asp"--> $ k0 w2 r# ]. T  Q
<%id=request.querystring("id")%> 8 n/ `8 ]  _5 ^) H; E
<%set show=conn.execute("select*from bbs where id="&id&"")%> 4 }4 `# U* J3 z& e- t0 `  J" N
<a href="index.asp">
) U5 Z% _5 R" `- S- K2 L7 d<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
8 H0 _" b7 g# X( B<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
- T" o8 }- \- I$ m! b; m+ ~<tr>
1 b& G% N9 ?% H2 O+ V+ H% a6 Z<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> + q% Y* s- t/ Y) B1 z& I$ U
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
/ p( d4 f0 Y% Z% ~% ?2 w</tr> ! v/ ]$ V5 E5 U- _
<tr> ) B# P6 t6 q' S/ x8 d) u* n
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
% h. g/ i% E, o1 f5 Z2 B/ V1 T8 n</tr> ! R2 s% m0 I: x# t
</table><%set show=nothing%> & @7 I5 ?  v) v6 k, H: R

" ?) L$ c2 _8 I& R劲语句---精华语句: 8 a3 ?6 k/ k/ {1 B$ P1 i3 `6 D
id=request.querystring("id")
5 k% |4 Z: o- O& a  D7 E! U$ Z在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
' U! z' I9 K! \; Sid=request.querystring("id")就是把地址栏中的id的值读取下来, 0 d* G- G: x$ V% V/ |, z# x+ b
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
# k9 q' A1 S+ b& ?$ h# q3 d所以show.asp使用id=request.querystring("id")语句把数字读取下来
, @5 F# s  |, e) y+ r于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ' h* U6 E; \4 S# A/ F& y: P) w
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
3 ~1 D5 R: J/ r2 H" ^) A最后<%set show=nothing%> 3 u: |6 }- p& l, \( R, H
4 _6 o; c) [) @2 \& ?2 l; ^) E
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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