返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
: R, u, E9 V( P* o/ z' i) Y真NB..佩服ing .....# U% Z. [+ V9 W' P
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
9 n$ Y; @. n+ f" U$ q% K9 n
1 t+ j" L9 g6 j$ v  a. p同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
' S8 V1 N  n& Y; V: q# \+ i$ n  b5 R- _! e0 j; t5 B( ?& D6 n" c
一、建立文件!
' b% P4 x3 a/ L0 l/ }( p最简单的论坛也要有几个必要的文件,就是:
% @3 Y8 a( p$ b8 i0 x0 w
2 o+ e) S0 K2 f7 Y5 [1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
4 n9 @0 I$ ]7 C0 e" q. X7 x
7 t$ ^( `9 O" R, M9 |# I. I2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
  B/ [! ?, ]; P5 s
, w5 j& E7 j8 i; y3、发表帖子的文件----命名为:say.asp
5 I0 ^+ B7 j; t1 L" o6 h( E
( O) p  C8 j# O( w% M. w$ |4、保存发表帖子内容的文件-----命名为:save.asp
, }4 z5 Z7 }  \$ Y. @2 F/ B, z: I& \% h
5、显示帖子标题的文件------命名为:index.asp - k* y. S8 Y8 P! E; ^

. f( `" d3 s, V6 C! \$ b6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
+ g4 v# L2 ^2 n8 i& a
! \  Q3 a+ t* L6 y- K) b建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" + H. B- \1 ]: b5 E1 Q- {5 l

7 |! J, s9 y6 H% D& K' Q二、各文件的主要内容 7 O2 U. [/ W; e1 Z. E7 U

" w1 F4 d. X* [% B* _( W2 z. _1、bbs.mdb
- v) V: p! T7 I7 z; `) s& q
1 L; J3 L7 f' r/ \9 o打开这个数据库,建立一个表,命名为bbs
0 H6 }' X/ [1 i$ G- V) ?4 o* W' }1 x" r! j- C- q
该表中有几个字段:
$ ^' W2 R7 b1 e5 C; k* [. D8 M* K+ R) f
id(自动给帖子编号),他的数据类型设为“自动编号” / a8 d! {2 W, T: `6 h
% [$ X4 P( A5 m  v
name(用来储存发表的作者),数据类型为“文本” + O$ f6 S) h1 r2 E& X( {. o: D
- p( Z. V3 e6 p! j% b, M
title(用来储存帖子的主题),数据类型为“文本”
* Q+ w; o7 ~1 d+ @, K0 y& O+ V, n! D& ?
+ f' D9 P; b/ n+ K/ Rbody(用来储存帖子的内容),数据类型为“备注” 4 K* c4 F! D+ H, Z: N+ x% g
/ ]# j0 e' \# g4 O8 w3 P2 c
2、conn.asp # }3 t9 J, \  F4 z9 n8 e9 E: T
源代码为: 0 ]  H3 l) I2 W+ a
<% . L- y; h/ x% f( N
Server.scriptTimeout="10" 5 f% {# i( ]- N6 u; j
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
$ g- M: i+ r7 V# m8 J- [( Zset conn=Server.CreateObject("ADODB.connection") 6 T8 Z( C2 Y, E; }/ \! b
conn.open connstr : `. p' s$ F1 V: S! j' V0 Q
%>
1 j. g' B' d3 ~3 s
& f( z+ O0 J8 i% C' J2 E) G这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 3 F1 ]) E  K' R" w4 T1 b: \

, r$ m# j2 v' g6 n  D  F3、say.asp 6 U" ]! u6 B- c9 M8 E$ ?1 c
- p/ A0 H3 H# Y" O" z$ L3 q* W
源代码为:
1 `; U% U& ^" B* g8 C0 ]<form method="POST" action="save.asp">
9 J# }+ u; X6 E<p>大名:<input type="text" name="name" size="20"></p>
! \8 e6 U. ~  J1 a0 P6 Z4 n<p>标题:<input type="text" name="title" size="91"></p> ; g$ |" ~% [5 E$ e
<p>内容:</p>
/ }) z- X* K4 I( w<p><textarea rows="11" name="body" cols="97"></textarea></p> ( m. l( a/ H7 \9 }: n0 Q" S( ^1 h
<p> </p>
7 S9 S% B: e# A  {2 n& l% B9 i<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 5 T" e/ ~5 ^/ h8 c* _9 `- a
</form> 6 V/ Y" }( p- T+ S
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
6 |) }2 ^  \/ Q  w不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! : y! G6 k7 Q1 Z) ]

8 Q4 H' M2 d3 [1 Z: \& M- |4、save.asp - v  T0 a* \! s5 q4 f- H
# h/ E  _! z, L* F0 Q7 J
源代码: 1 D; q( h9 m7 I& _
<!--#include file="conn.asp"--> # e* O: g9 G5 p
<%name=Replace(Request.Form("name"),"'","''")
5 S8 g" ?9 ]7 j- Ktitle=Replace(Request.Form("title"),"'","''")
0 ^9 Y; ]9 U. D2 G: I7 xbody=Replace(Request.Form("body"),"'","''")
7 Z3 x( a8 g; l6 X% P%> ; Z' B! q& s+ }8 {  Q- _
<%if name="" or title="" or body="" then%>
! t# h# m, H7 G3 Q2 e请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
+ D7 G) e% T' f6 ]$ h<%else%> ; ?, ?: j% D6 `7 F+ y
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
; u+ L& H3 X3 T/ z0 E4 [发表成功!<a href="index.asp">查看帖子</a>
9 x: z6 m, [6 n' P: l4 t  k<%end if
- G4 t  Q4 E4 P) Y/ [+ X# gset savebbs=nothing
1 z. N$ m2 ?5 N0 ?0 e7 Y%> # ~; O9 d' E: a" Q8 Z- K7 s7 R

/ {2 O) o; {$ z: o第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
) W  Z# Y5 J" f" [; `2 W; q! easp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, + V' G1 R" z  K  d  A
接下来几句:
. X9 t/ h7 c- C4 b3 ~name=Replace(Request.Form("name"),"'","''") ) |0 m+ E! ?4 Q6 ~
title=Replace(Request.Form("title"),"'","''")
/ J' ], C/ f  z! Q& ~body=Replace(Request.Form("body"),"'","''")
& k$ o& Y7 C$ c( s# z$ q# A: H5 A/ j( d6 e4 W
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 1 v/ _: ~1 }% X3 |( m
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
0 L* G, V5 w& m如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ( z$ z; \1 q% k6 }5 ~/ n
就是把表单中名为name的文本框发来的数据储存在abc123变量中 $ S8 Y% ^) F- }' v& v: [

6 t* e( n9 m& }; `' D% h接着:if name="" or title="" or body="" then 7 ^/ l3 s# [. G5 s7 v+ J
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ) K4 L, e1 F+ ~" Z1 G# ~( C
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ! d5 p- F: ]  e6 x# @8 a: Z
该语句属于html语法,大家都看得懂的! 0 y3 y" x1 H5 t8 o
& G, q8 u9 D( s# b
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: # i6 {, a" n6 I, ~
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> - s9 n. r5 D( n% E
发表成功!<a href="index.asp">查看帖子</a>”
4 x% Q; _( H9 P5 p# A
  R: {0 D# n+ ?* G( g6 ?"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: % H# h8 A  l5 @+ P2 R) O5 ?# p
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 4 p+ {& M4 _  N; L' v$ E7 D
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 7 U. `+ f4 Y$ S: n9 H
values是“值”的意思   Q  K* {# y# v/ S2 s  B$ Z
就是插入向量name,title,body,向量用格式'"&name&"'表示
! t2 l) p. K' V9 x2 b9 X  v& B! r; q; E5 j1 X
最后:end if就是结束if……then   \. J% K5 Y0 g; Z; Q& A
set savebbs=nothing可以说是关闭掉: % h7 l( \' O) f& H% W
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 8 Y# D6 [' L+ _5 b, P' r! p

3 g: e+ H3 W6 G' E* V+ ^( T( s: Q3 k0 |# h3 N3 o
5、index.asp
& E% o/ S8 t: g源代码: - H, ?" k* D1 S, ~0 e& r8 z) h. y1 P
<!--#include file="conn.asp"--> * p  `+ V4 h  y. f9 q( A  i
<b><a href="say.asp">发表帖子</a></b><br><br>   j( k4 B9 z. E; M  |: I$ @
<div align="center">
  g* c( \/ g/ Q' i$ L8 p7 O5 {<center>
) |5 M* t+ @/ c+ C1 I4 @! D3 G/ i- b<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> " E6 z4 o1 t) v, H8 ?
<tr>
# l! `# c* u5 \1 N2 `0 i5 s8 s/ S<td width="17%"><b>作者</b></td>
, g' B: @1 J4 ~* _5 S: f$ u4 h<td width="83%"><b>主题</b></td>
7 k$ V* b$ V0 O5 _) j3 d</tr>
9 }+ |9 F+ S/ C& _$ Z% t$ l% I6 \</table>
' e1 L7 r: e$ l# Q( H</center>
8 x* B! O# x7 ]4 {</div><hr size="1">
- B( L$ Q+ f! n" Z+ j8 i<%i=1 + Z" n( S4 e2 Y  A
set showbbs=conn.execute("select*from bbs order by id desc")
) u, \3 ^% d6 r6 g3 qdo while not showbbs.eof
6 o; j6 N; r2 Q7 V" n%>
( i7 `2 ?/ F! u$ N7 {<div align="center">
- r, z& p% j. ]- m6 k<center> : {' X5 s, d; \* l7 Y- H2 `
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
( W  I! j: u* ~  D' g* _9 p<tr> 6 ]2 s; T% b! U
<td width="17%"><%=showbbs("name")%> </td>
0 V) U$ B+ t: d" v5 N9 d<td width="83%"> . u) K3 {- V. z' b: U, [
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
. y+ w% P" j2 n2 G9 F/ B7 r  E+ u1 C</tr> % W. y9 z; p4 _- O% z  ]
</table> 5 X0 }* m- `* v7 p5 l1 ]
</center>
! [8 C; }. X3 g2 c9 t+ W% _5 L+ z</div><hr size="1">
  J! @8 G& Q+ d+ Y: }7 I<%i=i+1 3 n5 V- Y5 O3 B2 \4 z
if i>50 then exit do
2 H2 C# `# p+ a# a- P- t# g/ Jshowbbs.movenext # y& c3 ?/ `: ?
Loop
0 b# w3 o5 i$ Cshowbbs.Close
! w* v. Y0 d* [( Y& W) o( Aset showbbs=nothing
/ F6 d) G% F% r% L) u. [7 G%> ; D! W* |9 O. `! y* |+ B5 c
' Y6 g9 t2 K1 U4 c( ?; k+ ^  f6 O
这个文件就不一句一句的讲了 8 p9 |& @. C2 ^5 u9 |& W: ?
主要讲精华部分: & z6 Y6 c9 Y+ ], Q
set showbbs=conn.execute("select*from bbs order by id desc")
4 j8 ^0 Y5 k/ f, E* Y意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
9 V. ~% D5 p' r$ E) C. \% P2 a还有这么一句:<%=showbbs("name")%>
1 [+ S* U: T% v& w1 }+ p  ?就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
0 ~0 L3 `0 A+ D3 k' `代码中的i=1和i=i+1 : M# r- l% c$ }. a1 g9 S
if i>50 then exit do 5 k6 B! _* {0 g
showbbs.movenext
+ x! o4 d% x+ r+ z* Y* `Loop
% H4 Q+ [( h) H4 Q! Eshowbbs.Close 4 w" `7 m, D" G) B  f
set showbbs=nothing
1 g- x8 }' B: u4 @/ a, C+ y; O8 m. P
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
& p0 z. M; \( E8 }if i>50 then exit do中的50可以修改
! ]0 i3 S) e$ G但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 % ^+ i8 ]. W# i# U  g& S& g' `# [
还有一句很有用的:
& B2 b$ N' X- E8 y9 b<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> # J$ r6 Q. r! }5 m2 Q1 p1 v1 t
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 7 ?. i7 s/ L6 `# |
等一下在show.asp文件中就有用了 ! U% z6 ?2 P7 k2 Y! |  ~
& }% A0 g$ |0 e( q) W2 g
5、show.asp ( I$ |# E9 K' X6 z8 g
源代码: " T+ N! A! K! j- w
' v0 V2 m( G0 o  Q$ t2 R2 H
<!--#include file="conn.asp"-->
  h9 {* P- H" h) o  l<%id=request.querystring("id")%> 4 F4 I6 X5 ?$ B( r" X6 {  t
<%set show=conn.execute("select*from bbs where id="&id&"")%>
9 @; y/ n' `1 i) w0 V* a3 T( P+ f<a href="index.asp">
  P8 e9 U7 c( D) D$ T! @+ k! T<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . Q+ M- L  u$ n2 D* r6 n
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
$ t* K% ?$ {( C( k  I0 f<tr> + |4 H8 q( @$ a& K2 d- R
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> + ^6 A$ n& o$ u* u- Y/ a( t
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> + h2 T  z' L! g% \3 E! @  o
</tr>
. l& _; v5 d4 B) J# z, D. @<tr>
/ X+ R( Z0 l! X8 ~" c0 _* m<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 5 D8 F1 g6 M/ ]* ~8 E, ~$ t
</tr> & d7 P+ y0 D% `% \
</table><%set show=nothing%>
6 V1 e/ H* X! k6 F# C" s: N$ h" w/ d0 p2 [: F
劲语句---精华语句: ) |3 e6 \! N5 K' v- b! I+ W
id=request.querystring("id")
% Z. {3 m0 g0 K% I/ k* A: O在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
0 m& n! [: \, {( I  H- |id=request.querystring("id")就是把地址栏中的id的值读取下来,
3 K5 _) ^5 W, e! C  @1 q因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 5 \4 D+ T/ J* M  `( D7 W
所以show.asp使用id=request.querystring("id")语句把数字读取下来 : S% \9 T3 h$ q5 l, J, ^) P8 x( N
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
7 t1 ]) n* x1 L+ N+ u  A- Q向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
- h4 V6 m: s+ @8 O' l* o3 B最后<%set show=nothing%>
3 c/ m* j# U9 ^; {: i3 J" g& m2 _# S: u
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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