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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西! k$ a2 D+ R. v) Y9 z5 C* Q2 ]5 f
真NB..佩服ing ....." ^' O1 a! k$ G1 T8 d) g5 [" [" _
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。7 ^8 N  I; o3 m; o+ W7 V
4 _& }& K6 m& F  H* V9 h, b* m2 ^
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
. W) x2 O; q2 Y2 z& V
. c$ W9 v3 V) O4 Y( N一、建立文件! , G5 Q, H0 l% E3 I/ Z& x* A
最简单的论坛也要有几个必要的文件,就是: 8 n4 l' X2 i9 H) m8 t0 C% S

" m) n6 A, y( K6 g1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
0 Z0 X% K9 C7 u% F0 l& N8 H9 q
! y6 p! x) K" z2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
0 c& r. T* ^) r: r" O) U
3 M3 w' h! S& T6 f+ Q3、发表帖子的文件----命名为:say.asp
2 i4 }! w2 P4 R/ {
- z6 }, n, s% g4、保存发表帖子内容的文件-----命名为:save.asp
4 X9 f0 g2 U) I* e
3 n3 C: ]- I5 D. T* r8 o/ r5、显示帖子标题的文件------命名为:index.asp 5 Q$ j1 M6 ]9 D# z6 F+ `) E9 u
" U4 ?3 ]8 o3 }2 O0 |
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
, \! a+ c* O0 ~. f1 B5 L6 d' v: }4 o% N# F$ M! y
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" , ?' P8 e1 b# w/ a

0 \! D' \2 L- c3 l/ ?二、各文件的主要内容
. ~( V: w% U6 W. q. ]
+ k: P  ]6 q: e! ]6 J1、bbs.mdb
, w7 \) c) g' W" H) \) n3 e. t
& y1 r& X) @2 G& i打开这个数据库,建立一个表,命名为bbs / L- z% a  r- J2 }

% s$ u  z- Z0 A/ h  P, o* A" @该表中有几个字段:
7 ]% c  m- ]* `: L* G' }) l2 D4 T5 G. C% u2 J3 ]* N, \/ Q1 a
id(自动给帖子编号),他的数据类型设为“自动编号”
1 H$ X4 w  S7 v
- f8 d9 \2 u" A- q1 k2 }4 C& k2 \9 Pname(用来储存发表的作者),数据类型为“文本”
6 w4 l' k3 A8 Q8 r
7 u- e* n2 R# _% p& C* O' ^title(用来储存帖子的主题),数据类型为“文本” 6 Z6 B: O: D2 N. k! M) u! Q

- y2 }8 E5 ^2 B% ^# P; gbody(用来储存帖子的内容),数据类型为“备注”
( m# }8 F/ W* m0 }2 Y6 ]7 V0 t# z" ~, G
0 n* _6 ?& s$ T) Y! m; ~2、conn.asp
* [6 Q$ t0 D+ s  U源代码为:
( ^% L" W* M% ^( z1 N$ d5 r<%
7 M' a6 j  D# R' h* WServer.scriptTimeout="10" $ P: i( @) p, H4 |$ C  t
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
. }$ V# Z; _0 Eset conn=Server.CreateObject("ADODB.connection")
/ {, d3 s  n3 O. [$ H$ tconn.open connstr ) y+ k: y( R2 y% C7 t+ _  M" E
%> 1 q: d* M- o  \& A

9 [: m, p0 ^; ?' i2 \" L2 O这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! " c' `# h# `  X7 D' a& N9 K
  \4 f, k/ V) z
3、say.asp - \( n% }$ G4 d' ^: R8 c) W/ y
# K/ a, v; G) c/ U
源代码为: 4 u' m: N4 A0 H; C0 z% a9 g$ [
<form method="POST" action="save.asp"> 3 `$ I) A+ f" @  q' e7 R7 g. S; C
<p>大名:<input type="text" name="name" size="20"></p>
$ M* y. ~% d4 g. q<p>标题:<input type="text" name="title" size="91"></p> - O8 N3 d. C; ~0 a2 R
<p>内容:</p>
' M* q; N" {: @7 H% Q<p><textarea rows="11" name="body" cols="97"></textarea></p>
6 P2 P/ |8 P$ A5 v6 ~3 S! R<p> </p> 8 ~* \' `' r: Z) P; d( F; Z6 f  ~
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
/ D& S; u$ ^1 ~</form> 6 A# a5 Y  v- }% s4 T" H8 \) |
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
( Z! C4 {% x7 W# R; _不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
. T6 V& i2 k$ V% y$ F5 D' m- _
4、save.asp
% @6 q# H1 u. u- _  T6 M
# O4 S! W7 C1 x9 l& C+ w源代码: 0 ~2 n  E! u7 P/ i4 J$ ?
<!--#include file="conn.asp"-->
) A+ O  |& D' B4 S<%name=Replace(Request.Form("name"),"'","''")
" Z. I' y. W5 N1 t5 _( Htitle=Replace(Request.Form("title"),"'","''")
* ^# R0 x0 F, S2 p, Jbody=Replace(Request.Form("body"),"'","''")
& O5 _9 i/ Y8 _7 y& D, K9 I. P%> + w9 n6 O' Y% K3 z2 N
<%if name="" or title="" or body="" then%> ( \+ D9 M1 l9 k6 Y
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
6 _  b5 d- ^( g  ^" E: e! n<%else%>
/ W9 A: O$ _( K/ J3 `5 W<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 3 v5 O' o7 M" u- u( |6 c
发表成功!<a href="index.asp">查看帖子</a>   L$ O3 e8 }* y4 w4 e# o' ?4 _
<%end if
3 N; N) j8 u1 oset savebbs=nothing 1 _4 Z4 t, d1 w" W. k6 a- U
%> / `. L" ]8 S: M( M/ k( n' F  p0 V

0 a* f+ T' b: Z5 p第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! $ a1 K. |7 X; C/ ^5 J( d% {" {0 t
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 8 G+ e8 g9 y/ T( ?) C
接下来几句: ( J6 k/ G' O9 W# S
name=Replace(Request.Form("name"),"'","''")
8 d% F5 p! F) H$ U0 ^. Q  Etitle=Replace(Request.Form("title"),"'","''")
5 j% u' d6 w# J+ I, q; e/ I0 pbody=Replace(Request.Form("body"),"'","''") 2 M2 ~, C; H/ L
5 H9 i% r3 h3 ?# b+ {
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
! v/ S& ?6 J4 e+ E而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 6 `7 ]4 S- p0 H4 G! _
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 0 _1 j, h6 W9 D3 s7 M# G7 @+ J8 z4 L
就是把表单中名为name的文本框发来的数据储存在abc123变量中
/ s" n% U1 N; [! ?' c" e/ [: {, y& z! {* y. a4 t6 @$ G
接着:if name="" or title="" or body="" then
; t" [7 I; m/ d; O判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
8 L# M2 N3 o. n1 E“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
3 @6 Y5 ^- N) R" _& a) F- ~该语句属于html语法,大家都看得懂的!
( H9 w1 r9 M, v+ q
& L1 ]7 i7 [) v3 p$ b  W"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: $ ?5 L- z3 l# A0 J$ H6 h1 {' T
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
! |3 o1 f  o! P2 m) p% w发表成功!<a href="index.asp">查看帖子</a>” # Y% I: }) |4 V

2 J7 u* o5 |' ~"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 0 u! W7 H( q7 x8 v4 }! n
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
" G& E- Y; v4 j4 Q. C& r! V/ v中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") " Q& ^* O0 Y5 P; s
values是“值”的意思
: }) y7 J2 o$ O) S就是插入向量name,title,body,向量用格式'"&name&"'表示
& _$ n- q( K$ k0 p# H1 L) ?6 ]2 C1 z
最后:end if就是结束if……then
6 U9 x; d! R. u% P& v4 {- h7 V& Lset savebbs=nothing可以说是关闭掉:
2 G* S3 Q2 G* |$ U6 nset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
/ V: a( w6 r( G3 u
' @; R. B0 X) h1 S3 ^7 D( a
# y+ @- y7 L" @5、index.asp
* t: I/ r& c) U' m7 X源代码:
- u# h$ t8 b! _5 i<!--#include file="conn.asp"--> # n& ?$ o0 V" O& j5 Z
<b><a href="say.asp">发表帖子</a></b><br><br>
* e# L) r7 x+ z4 o, k<div align="center"> ' v  Q1 Q# }, m$ j
<center>
' Z& R! U& e8 U<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> & H% X% u0 f9 R* ^/ k* |
<tr>
( r8 p/ _8 x! D2 W8 k* `/ x<td width="17%"><b>作者</b></td> * `# k: \: o2 `# T) k
<td width="83%"><b>主题</b></td>
2 v. c5 E( V/ H</tr> ! N: E5 x# G( H9 C( V' E5 \
</table>
/ Y' T: g$ s9 [, I( g8 C</center>
( L0 S: a2 w! E4 v8 \: Z</div><hr size="1"> 8 a4 d1 q  v, o# ^- d: K/ h0 R
<%i=1 ! U  q1 H9 `; K0 e( r$ Q' `
set showbbs=conn.execute("select*from bbs order by id desc")
8 X' \& n8 ?* J" x6 m( Wdo while not showbbs.eof
. }3 T1 J+ c! ]- Z) Z; q%> 7 ]" V/ m( Y- z. ^5 H& p7 ~7 o* h
<div align="center">
/ Q  P7 e+ ?- a1 x; k) Y<center>
7 F9 O) \9 y6 N7 E9 d, o' @: u<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
8 c' a: D* |* n3 ]  S) M<tr> 0 [; W; z2 c9 I, P& Q) ~2 L: U+ ?
<td width="17%"><%=showbbs("name")%> </td> $ B+ s) d# _1 `* k8 s& D
<td width="83%"> ! v6 N+ ^; I4 }
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
% ]- x! z0 q- M% v</tr>
7 W: Z: h& l) A7 W- e2 {6 {/ [6 m</table> % `" K6 D9 x' r$ o" _
</center>
! B2 _3 G( U$ i: E& o" K7 p</div><hr size="1"> 3 |6 u( C; l: t2 W1 m0 p3 i5 Y, m
<%i=i+1 $ \. V3 {- x  H1 l
if i>50 then exit do . z$ R5 U( C: ~( u; w: r% I8 g1 e
showbbs.movenext
( Y+ D5 U' \4 Z  A  ]2 JLoop   J" i3 S( a! |) l
showbbs.Close # Y! a$ g; q4 f) \8 f' h+ m
set showbbs=nothing
3 q1 K) {$ S8 G! T%> % q3 D' G1 ~7 q0 A
8 C1 E  ?1 G4 \% p, J
这个文件就不一句一句的讲了
' H' H9 U( J8 {& q4 d$ g4 l主要讲精华部分:
# q( s8 C1 g% I1 Pset showbbs=conn.execute("select*from bbs order by id desc")
0 j/ Y8 l! g  n. X$ }2 Q意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
0 U7 h6 p! X2 e2 o8 f还有这么一句:<%=showbbs("name")%> ) `) Z) W+ p5 _/ P
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 4 f0 e) B7 w7 ?1 [
代码中的i=1和i=i+1
" A5 B$ j$ F% M: r* Q! K/ L4 ]& c* iif i>50 then exit do
% C8 [6 Q+ ~+ X  P. Y5 cshowbbs.movenext
8 P2 m0 t3 Q& j8 Q/ J) TLoop
' H0 G2 E& N: Ishowbbs.Close / `1 y/ B' G  w0 ?% P3 Q+ x) k: [
set showbbs=nothing ' |9 Y1 f) B! k- @$ l0 o/ D; E

4 ?. E5 Z  X2 J6 y6 c# D+ a这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
) Z6 b$ [# I! ~/ O) @( hif i>50 then exit do中的50可以修改 / H" Q3 X: n: b, G- Z; U( |2 l
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 ; C* m# i, d* l8 e& d# V7 E5 ]
还有一句很有用的: 5 i' f# a' C2 y3 \" d+ G/ @* N
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> + I0 v+ g* z5 q2 ?
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
4 }* O  E4 d+ E5 V# r  I等一下在show.asp文件中就有用了 ) G, M; v- \% S6 a0 x3 s. _: V

+ q2 D  Y  M, `6 k3 d. v: e6 T% W$ I5、show.asp ) t/ P& e# y* v5 m; W0 h
源代码:
8 h, n9 Z. b) @7 a7 L/ E8 }# n3 ]$ M7 R0 E( q5 E
<!--#include file="conn.asp"--> 0 _4 D3 m: c3 r
<%id=request.querystring("id")%> 4 Z7 b' e& u6 K- e$ f) ~
<%set show=conn.execute("select*from bbs where id="&id&"")%>
" Y* s7 n* _7 k8 R<a href="index.asp">
: X- [0 u" ]% O0 W% ~- O0 W& _<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 7 R; h& x8 d: a' n( g
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
2 w- [% i+ A' B" L8 ?9 }<tr>
# E5 R$ V1 T9 Z8 s4 i0 L<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
) t* g) G8 `, u* @9 [2 s<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
& }, c( j, I; M. e. C5 I  H% b</tr>
! O+ E9 S4 y- \% l4 G<tr>
! {4 F2 x, y0 ]5 Y<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> + M* @7 y  W, W. L
</tr>
& i1 w& B) D. o</table><%set show=nothing%>
  x/ o7 `' A+ j4 ^; a! W+ f
9 z4 ^4 F; l7 I" c% l' |劲语句---精华语句:
9 _5 x% |+ y: E& f9 T0 c; zid=request.querystring("id") 4 N) a; q6 \5 u. `! p$ O, b
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
, y8 O+ l5 i( x% m  X% D" Uid=request.querystring("id")就是把地址栏中的id的值读取下来,
2 p  j' [8 M- E, y因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 5 `- ?2 X( m/ \! g3 G! P
所以show.asp使用id=request.querystring("id")语句把数字读取下来
1 g# c- T6 c" Q8 y8 V4 y2 ]* w于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
) w/ g+ I: m2 H9 S+ e向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" / s, j) d" s  S. o  n: i# k+ y( ~
最后<%set show=nothing%> 7 o% d& q: O) V- O) o

1 d* x! c3 C) G  x9 d$ t好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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