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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西% k; h) C$ V, X7 Y/ X
真NB..佩服ing .....
' X- D3 [6 h2 t* c4 s+ e& L大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
) K% C/ s4 P; k' k: c  m, G
  q2 @* h! x* m同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ' ?/ V; g# ~9 R4 k8 V
; y9 C& f8 z- w8 U1 `
一、建立文件! 2 G" {7 A' f) i% K5 r3 s, A
最简单的论坛也要有几个必要的文件,就是: 1 {* A# E' \- G3 @2 {. G, Y8 M  J( {
" A8 R+ R/ d) j  \# l1 \+ R. C
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ) F; w! l7 ^, F2 y" M. M/ [- J
, Y% H1 ?7 `2 R! Q* J* G4 X' z5 z
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 3 ~. g3 ~) I/ W2 j
/ f/ C" _5 A% D8 U- {) ~
3、发表帖子的文件----命名为:say.asp
4 n5 B! c  j1 ?7 ?0 N& t/ H- P& C: n3 b* N8 A7 L0 k0 k$ F
4、保存发表帖子内容的文件-----命名为:save.asp
7 G1 G: o0 t2 S* `: `  S7 w
; d$ N* f& c8 C8 B! `, T5、显示帖子标题的文件------命名为:index.asp
+ \# l$ ^# F& R# t; d
8 i) X7 H5 S# O" g3 t6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 5 e# ^/ p8 Y7 Z+ {2 ~

& W  g$ z  e! T- L4 s5 N4 \建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" , \" A- s" b+ p; v5 @( X" O
8 ?+ O9 Y: s. n3 Z& X+ }6 ^$ e# O
二、各文件的主要内容
9 u0 }2 a7 @" |, L( w; U: m& Q% V& w9 R
1、bbs.mdb % m& L+ m& h/ Q5 C+ q

: t6 V+ ^8 u8 h' W, T打开这个数据库,建立一个表,命名为bbs & Y) `1 L7 A" \: E
+ S8 j) a+ e5 x' ~
该表中有几个字段:   Q+ ^1 a) [. z* g  H! [

' [( i0 T- G" Lid(自动给帖子编号),他的数据类型设为“自动编号”
$ E1 V& d( m) h( a* j$ g" I. C2 r$ o7 r
name(用来储存发表的作者),数据类型为“文本”
, L3 j2 r3 `% g2 n" z0 j1 C
8 e3 K; y+ e, n, [8 utitle(用来储存帖子的主题),数据类型为“文本” - i/ |& W1 N9 H# I0 r
1 j+ F# @. M7 ~. r- C1 G
body(用来储存帖子的内容),数据类型为“备注” - M* Q8 L* f3 h3 n
" N8 w% M9 n8 f  @) ?
2、conn.asp
- E. G2 G/ e5 {源代码为: ( b5 V5 s+ t5 G; e: U& ~
<%
* u( n) L- m: l/ j  bServer.scriptTimeout="10"
% {- Q" C2 F0 b2 f- U& vc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" , d9 N2 N1 ~4 ~# C0 h
set conn=Server.CreateObject("ADODB.connection")
* X& @. i8 W: d* c2 P! c9 O' W. Vconn.open connstr
8 b) m  r, [+ O& d1 W0 H%> " O  s. G; ^1 ^, S+ }4 H$ N0 J
1 @9 H8 |7 `9 ?0 W* h* G( X- z3 o! d2 C
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
$ l" E% m; e" x% K+ S
- K! L' R) y5 a, H/ {# ?5 x3、say.asp
* ^; w4 Y; F- `6 d$ \; W% g7 k$ ~! _/ t  P1 X1 x9 s
源代码为:
* l, I9 w8 j6 P$ x; O<form method="POST" action="save.asp">
$ p/ h, @! V7 t" R( N0 r9 j<p>大名:<input type="text" name="name" size="20"></p> , J, \4 R- J2 ?$ @9 g& ?
<p>标题:<input type="text" name="title" size="91"></p>
( b4 y' Q, o8 H) A, i) ~0 Q6 B<p>内容:</p> 8 g0 G1 Q" O" @: l5 R+ Z
<p><textarea rows="11" name="body" cols="97"></textarea></p> / S0 y) u9 j' s( z" ~& K
<p> </p> 4 k4 b4 I4 Q5 b; v
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 1 w9 @6 K# @& W" Z
</form> 5 q1 m. f5 ^2 X% k. J: y
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
3 X+ e( t! h9 K6 \不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
0 K2 l- u5 D3 W4 R
( V1 p4 x  k; o( Z0 e4、save.asp 3 `) R/ O$ ]( p* X( U/ t# p
  @: Y. Z! y0 P0 V6 t" Y
源代码:
8 Z# w8 Y' g( k- ?  z<!--#include file="conn.asp"--> 9 M* o9 B! Q. ~3 `4 s5 {* w) m# s
<%name=Replace(Request.Form("name"),"'","''")
. ?' t$ Y* `8 s  i% K; ptitle=Replace(Request.Form("title"),"'","''")
. z! @0 N9 d8 s3 m" T7 B3 Zbody=Replace(Request.Form("body"),"'","''") / i# \4 `% A: ?* m0 e
%> 8 v7 w& i) R* c& f
<%if name="" or title="" or body="" then%>
8 r! V) F1 ^7 D9 f$ v; ?& O- Y- _请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
+ s; l" M9 y0 D0 ?! F% j4 a<%else%> + {3 |1 }/ d& `  u) i* l
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> % P; [% ~  E  e- u" A
发表成功!<a href="index.asp">查看帖子</a> ; J$ s0 l: P2 v& L
<%end if
& L& K: T# K6 S( m* g$ D" P1 \% G, Nset savebbs=nothing ' _0 K1 }+ @' X+ w
%>
& {/ }3 b+ I, E! e/ Y# K  n; c! X, o* ]. R( o$ @- z
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 5 d8 g; ?! `" p4 S
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
$ `+ G$ e' R$ c1 J9 Z' a7 ~$ r5 V接下来几句: 7 u: h0 t$ g5 }8 e  P# E/ u4 ~7 O
name=Replace(Request.Form("name"),"'","''") 3 U1 i) T9 b  s& y1 _
title=Replace(Request.Form("title"),"'","''") . q; a  W; r- V. [6 R# b
body=Replace(Request.Form("body"),"'","''")
9 I' C9 A  ]# J7 u1 e3 \/ T5 Y8 _
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 5 d. z8 C2 n' l: t" ]  Z" ^
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, " k( i$ P$ A( D: o0 N0 W
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
/ q  m2 Z, u' A. Q' I6 @4 `就是把表单中名为name的文本框发来的数据储存在abc123变量中
, C$ ]1 T+ e- ?% o- e% E" N" Q# i# Q
接着:if name="" or title="" or body="" then
4 D/ _9 u' u% i8 }. t/ K7 g判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
  g) g% c9 W, @) n: i“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
- e$ s$ M* q$ k该语句属于html语法,大家都看得懂的!
+ p5 |3 ]6 x/ y0 t5 P
+ B: R% a' D$ m& g1 d7 \# q9 w) v"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
- W& l5 b  M/ ]3 R; }3 G* q“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 0 B" L- u6 k) ]8 B! D# `
发表成功!<a href="index.asp">查看帖子</a>”
4 U) B6 _! N0 G7 Y" L, ]) Q# f+ Q% k0 |. e* F" v  l- s* |
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
4 i/ M- v1 D* i2 x% X1 ?, zinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
5 J7 y- {: t. M& r& Q' b中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
3 Q! r1 H+ c! z( x) avalues是“值”的意思 4 i8 E- c" ^9 k; s) B5 x
就是插入向量name,title,body,向量用格式'"&name&"'表示
# b) Z8 s3 \$ q% F) J
# j  b% k: }4 c0 A, l2 w最后:end if就是结束if……then
0 M# u/ h0 z) m7 }7 i4 K( M3 Aset savebbs=nothing可以说是关闭掉:   f* Q$ h0 n7 }* |  l# s
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
/ d3 O" V2 R7 G& C+ N. D+ y  d+ Z/ n; S- r3 c
  ^# E' J8 t- M
5、index.asp 6 \/ b; P, j7 @) Z1 m2 V; h, ?: m% c
源代码:   e+ g( R) g# _" r) w9 s' k" Q
<!--#include file="conn.asp"--> & I" o: }0 X  c; c6 K# N( C- w
<b><a href="say.asp">发表帖子</a></b><br><br>
2 i/ a' Q6 d% r- q; l7 J8 m<div align="center">
1 p# s! g( Y' Z- K6 f<center> - G% _) D: t- g
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 2 J1 _4 n3 R# Z$ V/ r8 {
<tr>
; i! b4 I- L& S' A8 C4 G<td width="17%"><b>作者</b></td> 8 P6 k* O. b9 K0 [* X% e* `# G, W
<td width="83%"><b>主题</b></td> $ F% a2 O. e& F
</tr> 7 P' w+ k9 x2 h; J& o
</table> 3 S9 T/ ?& b. x$ A8 v+ ~
</center> " [+ K" k4 O  x* m# \% }
</div><hr size="1">
) f; s5 z' I# c9 Z7 m7 u3 s! h; o<%i=1
) G1 h8 E, o( {set showbbs=conn.execute("select*from bbs order by id desc") / G! b9 P( o$ v7 l! v2 \
do while not showbbs.eof . F4 _) p6 `1 ^  |4 c
%> ; f4 [( A- ?* [
<div align="center"> ! U: l2 m- z& a- {/ Z. a
<center> , O6 X3 x' g  a$ _3 k" j1 a
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
( Z" ]# i7 M1 Y8 g<tr>
4 M# T% q  G5 M<td width="17%"><%=showbbs("name")%> </td>
& x- l5 l4 a, p<td width="83%">
- ], Z  Z! V, o% J<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> : u8 W$ G7 R. T
</tr>
/ i7 E- Q# Z( k6 X  y/ N" i3 Z</table> % b/ a5 [: W2 j' k- r# |
</center> 0 u8 z# [4 Z/ o. Y- {
</div><hr size="1"> ) F; ^* ^: A6 u+ q
<%i=i+1
: K. G. R! Z# F9 K. Rif i>50 then exit do
2 U" x* F: }9 S, v, M* ?# F+ }showbbs.movenext
; a$ G) j9 t' r# MLoop
$ c4 A8 _4 h. Bshowbbs.Close * ^! B0 Z# r  b# W& E5 W! _  `, n
set showbbs=nothing
" U) L# h$ M9 ~3 L: q* w%>
, A% E3 L- R6 I% w8 L1 \4 N8 X2 ^$ ^. I. _1 e& |$ F+ y; k
这个文件就不一句一句的讲了
8 M' o3 v( H( l- Y3 h- e! V主要讲精华部分: 0 a0 i, L4 k# j: n/ c3 i5 |
set showbbs=conn.execute("select*from bbs order by id desc")
2 z+ {$ u$ _  }4 n! h意思是:向数据库中的bbs数据表查询数据,并以id排顺序,   U9 A4 t4 ~& K; E- x* o" w5 D
还有这么一句:<%=showbbs("name")%>
/ v- `9 u  v  Q/ h1 F, I8 I3 V就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs " w  Q0 L' k0 q1 ?; t3 U
代码中的i=1和i=i+1 ( ?$ c% i+ I& P2 K
if i>50 then exit do
! Z1 O! d  {- B$ l8 nshowbbs.movenext & x8 b( y8 |% y5 I+ \6 T9 q" _
Loop + I1 S5 |: Q  o/ u$ Y
showbbs.Close 4 O# G+ ^! I" G6 ?' ]- @+ k
set showbbs=nothing ! r" B4 J+ G$ F! W$ ]* \
; g. c' i2 N9 f2 \
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
/ u  z% x9 r7 Z2 Oif i>50 then exit do中的50可以修改 . S: N/ }" P, j( b' `
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 0 {% ^( ^5 l# `- F7 Z3 k
还有一句很有用的:
1 i! w8 P" C# w<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
2 Z0 ~& d; H1 d5 N. p7 U* k里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
, }0 }1 P+ q/ T2 n3 M( p等一下在show.asp文件中就有用了
6 p& P7 l& N% R4 ~5 a6 s: |& e
  c$ d& O/ N% q0 K+ ?5、show.asp 5 ?7 F  O+ a  n8 H- @. }! b( d, f
源代码: 3 a+ p3 A3 t$ ]; }9 r
& r/ q0 n) G+ z
<!--#include file="conn.asp"--> - W) G1 s; K' G% m' n4 }. d
<%id=request.querystring("id")%> ) L  C' {. F' [% i
<%set show=conn.execute("select*from bbs where id="&id&"")%>
) ?% ]% n4 g4 f6 E- N<a href="index.asp"> / M. A) f# Z) Q5 @0 q
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
- h8 A2 F- Y+ H0 N5 \; }! m<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
( {* p: K; w  E, E6 j* a) T<tr> . t# v0 [$ t; P. T/ Y/ @' o
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> . x+ w/ B$ |  |% F  b
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
# m6 J7 j1 H5 t9 |/ J% l</tr> 2 E9 d2 a* q- b" `/ G7 T
<tr>
  p/ t- c  h  b5 x, W) @' J  D) |: J3 Y<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
3 i9 \) w+ R, K& o/ W% }% b</tr>
2 M- m, o6 e# T+ G! ?8 O. F</table><%set show=nothing%>
6 u: o1 ?1 u% q$ O. J
* u2 P! Z' _6 P4 h' k" n劲语句---精华语句:
$ I# L# b' W3 ~7 H- qid=request.querystring("id")
, k5 e+ l2 O% d' M0 O! k/ x8 z7 L在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ! K1 u, f" A! V2 g) C& b
id=request.querystring("id")就是把地址栏中的id的值读取下来,
. _( C9 ?% P( X, F1 m3 r- ^. ?% e+ i  C因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ! b- p$ S. ^4 j8 Y* Z+ f( U5 x
所以show.asp使用id=request.querystring("id")语句把数字读取下来
! N  X, o; c; k, O* _$ f9 X于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 6 Z+ i' O; h7 l1 e/ K+ X. K* v' ^
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ! f( t9 R( k, r- F4 o, w3 @' l
最后<%set show=nothing%>
4 S! J8 t, l/ n5 ]) @6 Z1 D( D7 q: M8 Q
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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