获得本站免费赞助空间请点这里
返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西# P7 t- V) P' q' d6 u9 ?1 r3 \2 d
真NB..佩服ing .....; m9 }8 f7 g. i- [% Z/ q& ~
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。  ?- @8 Q% y4 f$ P* Q7 O
/ ~. n# c$ J6 q7 ~  T
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
' w7 N5 Y( P% |2 \4 ?
+ l; _6 @) D( N2 j, A一、建立文件!
8 P1 M7 Q- _' N+ u; L' ^最简单的论坛也要有几个必要的文件,就是:
: o4 s8 h& s" K3 i) F9 R  x
9 c1 @1 ^" E6 F0 v+ d8 C7 w( b1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
; x3 ]( `3 z) U( }" i9 H/ O# \! w4 v+ b9 M
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp # L4 b, P" Y9 v  t# \
2 S7 H) l9 h/ b2 T! w
3、发表帖子的文件----命名为:say.asp
2 o8 k1 u$ W' C# t' T$ E% I7 L3 G
5 R5 K& W, Q5 y0 Q. p: W. Y4、保存发表帖子内容的文件-----命名为:save.asp
( a! M& o5 D6 r' b0 i: S3 a; ^! h# g% y6 s
5、显示帖子标题的文件------命名为:index.asp
2 b+ P; l7 E6 S  E$ `6 L* h; B/ e: e% b) U/ {7 V/ C0 X1 A! @
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 4 X: y6 U- C) s) m; W

, a5 h( @! ~: S5 {建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
7 h; M: g* r* l" y- k$ E0 i( {1 G
; }) u" F4 C8 |; ]! R  D$ h二、各文件的主要内容
* ^8 k) d1 o& p* t3 {
8 X3 I, e" g+ x' T* N5 M1、bbs.mdb
9 R' G9 ~  R7 ?$ o' E" Q
9 K( M3 G5 [' C0 r: u' L3 j打开这个数据库,建立一个表,命名为bbs 7 I2 [9 a8 Z% u

& i$ b- M0 E+ U( _2 n该表中有几个字段:
/ E% n) Y* b& j, C/ R
) N# c) J# S1 mid(自动给帖子编号),他的数据类型设为“自动编号” 2 y5 ^7 o4 }* P# a

. L0 r' s; ^% e. ^: @2 r2 r% Dname(用来储存发表的作者),数据类型为“文本” 1 u) [' B5 B' v1 U( y. r4 G8 p

$ c0 G2 X) h( a" k0 Ititle(用来储存帖子的主题),数据类型为“文本” + \7 F) {- ]8 a) j
2 N8 c( d4 s! z% Q# w; d) y
body(用来储存帖子的内容),数据类型为“备注”
1 j# a  K2 l! S
$ Q3 S7 W9 [/ L; `2、conn.asp 1 V) o. w" I5 o2 I
源代码为: 3 \) i0 A. ]6 K0 F$ b
<%
. e# p' l, [, hServer.scriptTimeout="10"
0 i. z  y$ Q0 E# t8 U/ {/ X- oc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 9 K1 M! h& s6 C; G4 L
set conn=Server.CreateObject("ADODB.connection") 3 A2 e0 p+ R9 f- l8 O# z4 }
conn.open connstr
+ U6 v  e& U+ h7 t9 }# |+ I. e1 K%>
' u' ^# G+ y- O/ }4 A# k
  I3 Q2 b) _4 H; C. S- \这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
/ Q6 k# c" `2 @" a+ r: t. N; B7 c* I, Z
3、say.asp
9 ?/ y) F( T5 ?3 o+ S; R- h9 i- X0 t) h1 A& b6 c
源代码为:
9 s) v4 G* Z' c7 d<form method="POST" action="save.asp"> , D3 Q1 `4 w  Y3 Q1 {
<p>大名:<input type="text" name="name" size="20"></p>
8 U- @- Y# p# l4 {  ]2 ]<p>标题:<input type="text" name="title" size="91"></p>
4 n& a. C5 w2 G! |& d" v<p>内容:</p> 0 g! e5 @; E' N9 D3 l
<p><textarea rows="11" name="body" cols="97"></textarea></p>
8 D  ]* B+ d, [& ^) I<p> </p>
* R: N9 i0 L1 E* m, X" t<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 7 [! l5 ]" j/ O# k- S) K! U: u
</form> ! A% n. m4 n2 J. T
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 8 F2 |8 @( `" w! q+ c
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
" b- y3 U- ?4 u+ ^' |! t. G
4 V- q) c0 b& ^4、save.asp ( b' }) u8 S& s; s/ C# U* c& O4 \

- w) ]- P/ D6 B2 w4 c源代码:   n9 ?5 [( t/ X5 L7 ?( p. G5 j( @
<!--#include file="conn.asp"-->
5 C& U9 _9 P  j8 B+ Q- i) g<%name=Replace(Request.Form("name"),"'","''")
6 `2 R# Y3 P  F, v# j3 l2 gtitle=Replace(Request.Form("title"),"'","''")
0 E; m" k: q2 r* c2 l: L+ Kbody=Replace(Request.Form("body"),"'","''") # V3 K4 r& O, i& i3 |
%> : O* x; m; \6 u
<%if name="" or title="" or body="" then%> % v5 M" Z7 r  Z$ K5 @5 k
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
0 `# b% g( e+ V* `: A7 o<%else%>   C2 A1 ~5 P  H6 B9 n: I: y
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ' l7 y. }; w' n" S9 q  M
发表成功!<a href="index.asp">查看帖子</a>
/ ]) Y! B4 S2 k; {! g<%end if
- C9 C. k& D1 A) cset savebbs=nothing
# j1 P' r/ x' C3 i( b) _%> 5 v# ?" c/ H# _
/ E5 P: i: _* N. K* }! f
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 9 y! M/ W6 ?: E9 |5 D: P6 M* Z
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
* r8 U7 j0 ]6 R  p% F接下来几句:
; d$ F7 r& h/ l/ fname=Replace(Request.Form("name"),"'","''") ( ?! u6 x$ C$ w$ i3 ^
title=Replace(Request.Form("title"),"'","''")
5 `4 a# Y; F7 u' a( n5 v) Zbody=Replace(Request.Form("body"),"'","''")
) ]* @$ m) A' x3 @6 K
8 {* R9 p+ W' j& }% }, w“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, - @, u3 I( b5 @: D' i
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, $ m$ c( y5 j- q4 T' J) n+ N$ K
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
! W" E8 z. [. h: ~9 P就是把表单中名为name的文本框发来的数据储存在abc123变量中
/ e# r4 t& H2 A7 p0 x# r8 y2 d0 o% Q. T4 K
接着:if name="" or title="" or body="" then 4 r+ Z3 Y, x2 ^: p1 o
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: / Y( [8 J5 ~2 T( Y4 d& k* `
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 4 y- b7 R5 b& [+ b0 A9 a9 M! }5 ~
该语句属于html语法,大家都看得懂的!
/ K0 O2 x# g: f0 R  d
+ |) r  O2 `, d1 }: ]5 G0 s"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
; m. D+ Y/ Y' F" }3 F“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> - W" K1 x$ @6 y% i; q
发表成功!<a href="index.asp">查看帖子</a>”
+ B) Z' `8 P" ]# D
; W" N9 M! N0 g. R5 X8 L"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 1 b3 g4 a* t5 T3 g/ @" o" A% Z
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
. K% n  ?% v1 V4 r2 F/ k5 j7 j1 T中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") $ H+ u: K1 \3 l' ~" h
values是“值”的意思
3 r+ Q6 z* C9 }就是插入向量name,title,body,向量用格式'"&name&"'表示
# }9 g* O- Q2 O/ I( Z6 o1 |$ ?2 m
8 m  |6 B0 A& c1 c2 _& A0 T: v7 z1 o- O) W最后:end if就是结束if……then $ \) ?) R/ X% v  u9 i, I
set savebbs=nothing可以说是关闭掉: 1 S# Q3 B# T' j
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ! _- a: K/ B# S! W
; J5 ]- I( Y( F9 P5 j6 `# i
0 w1 k, G3 Q6 N
5、index.asp , ?: ?0 C( }0 K  _
源代码:
4 F# g: J% M. i7 O: v<!--#include file="conn.asp"--> + ~. y) g4 N, W
<b><a href="say.asp">发表帖子</a></b><br><br> * V6 `" ]8 s. I- S6 a: I* y+ i
<div align="center"> 7 J4 {% `& m2 c% v
<center>
" N, w' w0 I$ E' g8 T; W<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> & A; G) `) c* D! d
<tr> * e* \1 J  I, }9 r# F4 }
<td width="17%"><b>作者</b></td>
4 y, _9 Q7 L" p<td width="83%"><b>主题</b></td>
! r9 L) g- N& N* g7 R' \6 y. H0 Z</tr>
4 Q8 ]2 m9 b- w* X' D# _</table>
7 z! \* w2 X, n0 e! |1 n$ A</center> 3 ~! u4 n  f/ Q* Z) J$ w7 l, u$ ~
</div><hr size="1"> 8 n0 H9 K0 d, p2 ~4 f1 P
<%i=1 ) r( a( q7 F5 e+ g5 O% Q8 p
set showbbs=conn.execute("select*from bbs order by id desc")
& d9 U. e, W; _2 N8 n, N" wdo while not showbbs.eof , {/ F2 J' t! b2 F6 M& e' Y
%> - Q9 E4 `: ]' c0 s2 I2 O
<div align="center">
1 ~: [0 i$ X) d# {<center>
& v: u. z, i8 k+ ?( Z6 q0 U% |<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
% ~+ t) F& |+ I" ?<tr> : w& b3 `1 y0 |3 ]  R( c
<td width="17%"><%=showbbs("name")%> </td> 1 Z0 |: S, N0 ?! C" B
<td width="83%">
) X+ V$ ]7 g% D/ g: x1 s<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> : L8 F. I9 ~. N% |2 L3 I$ M* ^7 f, x
</tr> ; X! S7 O0 u$ a+ W
</table>
  p$ z( g$ W9 P# n</center> 8 p1 L7 W5 x) I
</div><hr size="1">
; r( t* G, I2 E$ x6 v" Z<%i=i+1 8 D, v& c9 m' S6 ?
if i>50 then exit do ) @$ w4 p/ A, W: p5 Z' E
showbbs.movenext : S; f! h/ Y. }7 S: ]2 H
Loop 1 x, W9 S2 x  C, d
showbbs.Close
8 h6 ?7 _. j  O; _+ r0 h% [/ v! dset showbbs=nothing 4 T9 f0 O0 s# g, I  i
%> + K) `5 U6 ]: _' S: E2 S+ B

, B( K7 i" }% [) w8 [, L这个文件就不一句一句的讲了
, L* ~* c* I4 Z0 e主要讲精华部分: * a4 Q4 [, p: }9 L+ I% Z3 ^
set showbbs=conn.execute("select*from bbs order by id desc")
; R& F0 ?! F' Q  x5 v. w8 x2 v意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 5 t9 w5 A3 B: }- q7 |" r% P9 r
还有这么一句:<%=showbbs("name")%> + b9 |: i" `0 _
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
1 K- s. P. V& q3 s4 m9 g: a- A代码中的i=1和i=i+1 # @4 Y4 X4 }$ c( I% ]
if i>50 then exit do ' H: _5 G8 Y# A
showbbs.movenext
, Y+ @, }. \, Y! I# B9 k( w4 sLoop ' m% J. C# k# N
showbbs.Close
5 Z' t4 j5 i' ^set showbbs=nothing
; j) Y. O3 U6 ~1 a# M! c& Q
" E6 N" s: H; S* M) k, m, k这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! + ?$ d, H/ ]5 D6 f
if i>50 then exit do中的50可以修改   r5 W" j, L% s8 A5 |
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
; D* f8 q% K+ w$ A" ^# P/ v& a还有一句很有用的: : |4 [  n$ t! W" p' Z, H( ?
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
1 z% {0 f: P  V& E3 G里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
+ l9 }5 K) U$ \等一下在show.asp文件中就有用了
* p" p% g. W$ U* s/ Y+ O- p+ t: d. u2 C( \' @$ H2 v% m* ?. q# {5 W
5、show.asp
. P1 j( O" y+ h, S$ S源代码: 9 J4 a3 P1 M8 v! L; d( h
3 R( e6 @/ l# D
<!--#include file="conn.asp"-->
1 J$ Z6 T6 w3 c3 s" _# `<%id=request.querystring("id")%>
, l) @( b' c  N3 m% }% f- d& E<%set show=conn.execute("select*from bbs where id="&id&"")%>
! `: B# f6 n; a; A. m<a href="index.asp"> ' N+ ]' A3 _$ P) n
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 9 u, ]; @3 H' s+ Z, i
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
4 R3 s7 a2 G+ A2 X& e3 M<tr> 0 i- u- p5 E  F+ d
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 6 A# j/ K, w8 ~5 y% F: A. S
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
: U8 j4 M5 z8 p. H( Q( K7 `</tr> 3 c' V: ?  c3 X) H
<tr> 4 w% E" `# j1 p, u* J9 X5 x
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
8 [& N' d& \0 W3 Z/ W& n</tr>
9 }0 ~& a  [5 r" m- n, L6 {</table><%set show=nothing%>
* h7 \1 D  a( ~/ o9 X
+ k+ I3 U. Q+ }劲语句---精华语句: 6 B$ G8 r* ?9 |
id=request.querystring("id")
  n& S: ?8 v9 ?' `7 `在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ! Q( j1 G2 h+ k: a. G# o
id=request.querystring("id")就是把地址栏中的id的值读取下来, 0 W" K3 e$ A7 t5 {* E6 ~# g/ c
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
: T. P' _5 t5 r4 h' j) ?' M& u( f$ [% b所以show.asp使用id=request.querystring("id")语句把数字读取下来
8 k" `' `2 T# F0 C3 s+ Y于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
: V$ H" J. T' x向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ' Y, J* T. T) J5 @" |
最后<%set show=nothing%>
0 g4 c( @4 A# }4 i" Q! U1 y& ~5 {. L. i: C
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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