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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西0 s) r! ^2 t! d7 n# L
真NB..佩服ing .....
+ L  D9 Y! T8 C% L4 k: d大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
8 H. r5 [% p, f* v0 C: V4 D2 w* S$ i7 m+ Z" o3 \' n' I- u
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 1 n+ q2 y( _$ U: f9 N- [8 l

/ [* r5 M/ {/ z) j一、建立文件!
' C8 g6 }# l& Z最简单的论坛也要有几个必要的文件,就是:
7 v6 L: J7 d, D4 T$ H' J) i$ M5 s# e# x# _# H
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb . z0 }" m; T3 K

+ o; ^! i5 ^6 O: B( m2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
  r0 X1 x/ A4 s5 z( Q
1 ?( _. T' _4 t3、发表帖子的文件----命名为:say.asp
9 Z8 Z* K% Z8 E  ^6 L. M' Z' M
+ j3 ?) \2 q( i4、保存发表帖子内容的文件-----命名为:save.asp
; b3 d- e) K$ E  v; D( P# p6 p) T  u7 U% N( k# p- e% Q) K
5、显示帖子标题的文件------命名为:index.asp
" x9 y2 v, N" C1 Y
) ^% n  r( n* R/ ^6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 2 ~# l( W5 }" g' Y1 w

- x3 v, @% I- V/ h' Q# y建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
( V& N3 B. t- z* r3 ?2 z
, z7 K0 o8 h8 e: ]0 ?二、各文件的主要内容
2 L. v6 Y9 J2 \3 H8 |7 k0 f
8 y: A; L$ \9 k' s" N6 U1、bbs.mdb
; j" W+ c- Z* G( F0 W& X4 Q- \
& w7 e# F- S4 S, E, q0 }打开这个数据库,建立一个表,命名为bbs $ u0 }" u" N! `5 P4 [- n% \; E% V0 V/ n

% k, W  I/ X" N& `0 \0 s2 l0 \7 J) V该表中有几个字段:
) @9 L; D" O+ a6 O, \) F
" O  e9 e9 e& d/ w( wid(自动给帖子编号),他的数据类型设为“自动编号”   y4 @" j1 c% M5 s0 e8 M9 S
8 j4 r0 n/ `4 H/ N; ]
name(用来储存发表的作者),数据类型为“文本”
: \  i9 @0 e9 m- V( q( ?. G6 k5 d& T0 M) ^4 f
title(用来储存帖子的主题),数据类型为“文本”
; {0 l% s5 v8 j/ r+ v8 {
& b/ w3 A9 u3 Dbody(用来储存帖子的内容),数据类型为“备注” * G2 H7 ]) W9 b& E

& j3 @) p4 \7 @9 U2、conn.asp % d( c  v4 _: z0 q
源代码为: $ @0 F& O) {* O" j$ {/ g
<% 3 u% b. y- {: p3 G) x6 \( J5 ]
Server.scriptTimeout="10"
6 b  I# H' |. A7 `% U1 Ec+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ) x! f- k  _2 M: k: D
set conn=Server.CreateObject("ADODB.connection") 3 h' @1 {3 S9 p; T* i. h8 ]" k
conn.open connstr 6 H9 C5 e3 W% ]( p1 f- b; o+ q7 O1 h
%>
3 @7 N$ `- B  p2 E0 [( l) w( {
# }; w9 t9 \4 S' B+ n这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
, I1 q; I1 ^1 h' G% \6 b
9 b3 h' R* E3 A1 _* M& n3、say.asp
6 u. d# F. |! c5 ?# b  m
  C# z- o3 ^+ {' t源代码为:
+ C$ }4 ^7 I1 Z& E  c  {<form method="POST" action="save.asp"> ; C$ P+ y& A1 F' S
<p>大名:<input type="text" name="name" size="20"></p>
4 c3 e, D% N- M# o0 e( s1 g, C! N; Z<p>标题:<input type="text" name="title" size="91"></p>   P& w# \( g4 Z" l7 B$ P8 J4 N& f
<p>内容:</p> % X# B# _- m) X& X# t0 `3 F
<p><textarea rows="11" name="body" cols="97"></textarea></p> - }& V$ h1 i) @( V  E
<p> </p> # a, Z# e$ G$ [! f& G/ W! U" ]! u
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
3 s( N: ?5 v3 {/ \! \. w</form>
$ X5 t( P( u3 v$ V# K6 v大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面   E! |- h$ l1 U- K
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ' I8 s; j3 O* {& {0 a0 w0 T

: `9 e% [! K+ s* Z$ v4、save.asp
6 m* G. k) n$ Q' W: G) I7 F" A; V
源代码: " _4 H3 ]3 ^) z& ~# ^9 w  \& a
<!--#include file="conn.asp"--> - m! h4 I/ y/ a1 q
<%name=Replace(Request.Form("name"),"'","''") & F0 h4 O5 `+ I6 W* |6 v0 c. X7 ]
title=Replace(Request.Form("title"),"'","''") ' @. O" q5 L6 g' n' s
body=Replace(Request.Form("body"),"'","''")
8 L7 c1 E' K- l%>
. E$ o; M  O+ O5 n<%if name="" or title="" or body="" then%>
% Z1 ^* R. Q% c" d7 _请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! / G9 Q! w1 D' i8 Y/ t- s
<%else%>
( w/ d6 d. P, `<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 8 ]1 T. J- o7 _0 M' q( q
发表成功!<a href="index.asp">查看帖子</a>
, X0 f$ F6 e; `5 T4 s, G<%end if
3 u  C0 \$ j6 f. {set savebbs=nothing
" \. p- c8 L0 e% V6 r+ x8 G%> : A! a2 B1 S  j! P+ d
/ E' Y% q8 F0 ]* j
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
$ F4 H0 i/ s4 \% g6 [! X( dasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, # o( l' g7 W0 g$ c/ V. d3 M
接下来几句:
. D2 h6 s/ ]3 k2 C) L5 u7 Rname=Replace(Request.Form("name"),"'","''")
" Q  C8 w/ Q: M% g$ F% mtitle=Replace(Request.Form("title"),"'","''")
% ^* i0 F+ |: w$ [1 Ibody=Replace(Request.Form("body"),"'","''")
1 n5 j% q8 F, ^! p" ]
' \( {; ^4 E$ P! d4 C# P2 p“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
/ @$ d, v% }2 ]8 z2 b" J7 F& F而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
) ]7 q/ W# y7 O& Y如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
7 \, C, Q! F; u) v就是把表单中名为name的文本框发来的数据储存在abc123变量中
4 {5 \& r: A& Y$ G
& ]+ ^1 S7 K; H接着:if name="" or title="" or body="" then 4 S& X5 v/ u2 s9 T$ Q& E
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 2 z' x& o0 e. I2 B
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 4 t  L2 Z3 P3 x! v
该语句属于html语法,大家都看得懂的!
6 i* m: q7 T6 E3 r5 p5 Q8 r% ]5 e% i
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
/ t1 u, T' p3 K  k“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ( r, q* _* [( g% E2 X7 [: t
发表成功!<a href="index.asp">查看帖子</a>”
2 w' o- x, I1 ?1 G& N
' b6 l( s( N0 H+ V; K: m! b"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 9 j& N2 P5 v; B) H" _
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
5 }; T2 u- B( w中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") * `) g& I( T, a6 M0 L; r3 T
values是“值”的意思
' s& P3 x' C3 d, T就是插入向量name,title,body,向量用格式'"&name&"'表示   X! f- g- ~1 D& y* ~
: v% i: }' ~$ r, L) R( F/ C6 Q. b  C
最后:end if就是结束if……then 8 e; ?, t4 P* D- q+ V. |
set savebbs=nothing可以说是关闭掉: & F) |% \6 p, J
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") / Y! w. v/ B% f9 T

1 a1 I' x& h. U. r" c) O3 W6 r
0 |& X8 n5 S6 E% u. v/ m5、index.asp
1 H% A2 f5 {, {, O源代码:
2 l; E; H; o/ u$ r<!--#include file="conn.asp"--> 3 E% O# s. [1 @( C3 V* \8 Y1 n
<b><a href="say.asp">发表帖子</a></b><br><br> ! G+ d2 H. P0 d6 f3 ^2 Q4 L/ R
<div align="center"> " j1 T9 X. z. O- Y
<center>
4 l) N( i: \7 G; C<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 0 ~, s; ?0 R& f* i; z: m0 t9 h
<tr>
5 Q3 R9 T. U" S; M# F8 B<td width="17%"><b>作者</b></td> 9 d( \+ U% h) l: U; `" Z) B
<td width="83%"><b>主题</b></td>
. M7 v! o( q3 Q2 }. ?5 ?3 t; M</tr> ) Q$ C' C5 e# A
</table> 2 V* l; S% W- z, s; E% F  F5 @
</center>
7 ~1 L! g& r, X</div><hr size="1"> " N0 M# J- S% Q8 c; _- q' m
<%i=1 ! c1 ?7 v/ b2 W* a5 L; u' C0 N7 R
set showbbs=conn.execute("select*from bbs order by id desc")
8 E; @4 [' y7 u& \. p4 ndo while not showbbs.eof
0 {. }5 b- Z" A: x- D! r%>
0 Y$ P' ?/ I, I  R  F<div align="center">
: i6 Z5 [7 W9 g' W8 a) i, ]<center>
9 d: M+ i+ H5 z0 c$ _. R% n<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
+ A1 J* M2 \* q! ?) j<tr> / V" A. @$ ~5 J2 O( Y
<td width="17%"><%=showbbs("name")%> </td>
+ S2 ^% d; n; p% z8 w3 J* A<td width="83%"> 0 i; ?/ z" v' ^) j0 \! }$ X
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> $ r* p. f9 N) O
</tr>
8 f# U( ~! d, O" n4 t</table>
/ p# A5 O" ?2 J1 J8 m</center>
, O2 c8 @! ]% ]0 ?9 `0 ~- I</div><hr size="1"> 6 v1 @7 r0 {1 s" ]1 F3 z, @/ O
<%i=i+1
0 U* D( }/ q/ \if i>50 then exit do
& i. V+ _2 v! j2 P, dshowbbs.movenext " k% K6 W6 m* _
Loop   U7 @9 Y! j2 R% s5 g! M
showbbs.Close
3 q1 \! f' H; J5 `2 G- Eset showbbs=nothing
4 J- Q7 t8 o! O6 ^  {: h  N4 a%> ; G! A: |* i- t

& s8 \) M6 g) f3 p+ F" {* P这个文件就不一句一句的讲了 0 N. D# v( Y+ Z) n9 S8 |
主要讲精华部分:
  m9 t1 a  B, ]0 o9 Pset showbbs=conn.execute("select*from bbs order by id desc")
9 q5 y* I9 l  n2 B意思是:向数据库中的bbs数据表查询数据,并以id排顺序, $ |# c% T; }9 V; G
还有这么一句:<%=showbbs("name")%>
) s+ X! K. \8 m4 `就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs , u3 U& W' W' Q
代码中的i=1和i=i+1 % f! ]; j: W) k
if i>50 then exit do * W8 F2 {0 A* T9 m
showbbs.movenext
, l9 i$ Y! b) d5 j6 TLoop
7 g8 w; J+ p; ]- j# rshowbbs.Close ) J) q) \% E( L1 @
set showbbs=nothing 1 w* N* _" H# H- d1 E( i9 a

; \0 r! H6 B/ d( H) V) N6 N这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 2 M7 S9 x- K8 C2 S
if i>50 then exit do中的50可以修改
  h5 t! }8 [! U) f但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
' \+ w6 K4 N8 W还有一句很有用的:
4 }3 L: ~4 n9 J' w- V2 g8 W<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
$ d: z# y6 V1 c, [% T! _里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, % i  V4 V1 c, h. B
等一下在show.asp文件中就有用了
6 f& b, y7 S  d) G* K, t" P3 U8 E: K7 V9 }  e/ W% _
5、show.asp
" w5 U% B( ^+ u9 U$ U6 u2 \" d源代码:
" r2 t! T# s  ?* w! T+ U3 J. W) `+ R) c1 _6 b1 j" E
<!--#include file="conn.asp"--> ) L$ A( @! ^0 i1 Q  P& i: B8 {7 o
<%id=request.querystring("id")%>
$ C. L( |% {$ a9 i0 J4 k2 _<%set show=conn.execute("select*from bbs where id="&id&"")%> 2 k& s" j, a! z7 a$ z4 d. q$ X
<a href="index.asp"> ! @" n2 z8 X% h) e9 n
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 1 _8 K! H3 w( K8 L1 K. T' z( ?: v! C
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
. M: R2 ^: P. D( k% m<tr> " G2 ?, A; a3 w0 M: E- z
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
0 W8 C1 o. ]  J% o3 P0 f<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> - c5 ]: a. C  _6 \+ j
</tr>
2 d0 M8 X  g2 t* s1 X; Y<tr> ; m" ]! g% R, k8 e% A9 q# U
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
( x- Q9 Q" d" |' r( i</tr>
* K, ]8 q& _! S</table><%set show=nothing%>
7 ]6 I. l+ _6 [+ X6 y! X
2 q: x% X1 V$ z' {- o4 ~劲语句---精华语句:
6 A$ o' ^- r" F) A9 @id=request.querystring("id")
3 d3 c" ]) P+ u7 i0 r+ \在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, % E6 m; ~6 j! K# U
id=request.querystring("id")就是把地址栏中的id的值读取下来,
. z) l9 y. k  }因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, " ?2 t0 ?/ e9 o: X# ~' w' x
所以show.asp使用id=request.querystring("id")语句把数字读取下来
8 [/ h4 E  v! A- r4 R4 ^于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") , v1 {0 ^8 F3 b* ^
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
! b8 E% h8 O/ W; q最后<%set show=nothing%> ' n7 U- ?8 B; F1 {) ~3 f/ \

6 s1 N2 E: l- e# o3 }" p9 U5 H1 U好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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