返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
7 I, h- A! F7 p- H$ v6 c真NB..佩服ing .....4 g2 O, j. V# a
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
0 E* Q. c' ^5 c7 [% c1 v# C. ~* Y4 Z; C5 \# k9 A# Z! S& G9 N
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
, m5 S* W( s! S3 u, G' _& ]- a4 C& }1 X+ r4 j1 E0 `* Z
一、建立文件! 9 C7 `) i4 W" S* c8 X# \
最简单的论坛也要有几个必要的文件,就是:
: T" S6 s% e, x+ I
* Q; y9 R! S( n1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
7 v% F+ o3 v7 D9 o$ J
: N: n6 x7 D- d* f. _3 x2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp / ~( e' a( T! u! y1 [+ E

9 G' ]0 H( V. b3、发表帖子的文件----命名为:say.asp
% B7 J( q) v1 T, h$ i! c! v3 i8 U9 Y' q" M
4、保存发表帖子内容的文件-----命名为:save.asp
  b9 z" G$ M: }
4 _2 Y" Z6 V- Q; Y5、显示帖子标题的文件------命名为:index.asp
, E/ N( H: h1 }( m9 y) X$ N1 w' h3 N% ?
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
8 B* V. i2 b- z. w
: |) X* k8 F' |% Q2 t+ }9 k建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
; H" D# _7 b: }3 N
3 n$ }5 g% a% }0 r二、各文件的主要内容 / w7 m% v* Y4 u' n, U8 b: [

4 s) o5 B7 R/ O4 V. W1、bbs.mdb + a/ Z# f* k& ]6 a9 I: k

. |$ l8 D9 |9 S- P) e1 J( D打开这个数据库,建立一个表,命名为bbs
: h$ `& G& @: }" L, H' \) T
  Y. s# [& n3 `, M该表中有几个字段: , J; h4 j5 T  N/ G+ z

1 l. ]/ l) A7 D* |& N' I# s/ jid(自动给帖子编号),他的数据类型设为“自动编号” 7 v& f5 s" v, h( l) j3 N+ {* a8 E

- x; ~7 S- W& j' ~2 w* Ename(用来储存发表的作者),数据类型为“文本”
8 B1 W- \- ]1 {% p
; c7 h) C  G& w7 C1 X2 q1 Htitle(用来储存帖子的主题),数据类型为“文本”
$ |5 l& u& N0 A
' `$ o! u. q/ Vbody(用来储存帖子的内容),数据类型为“备注” " U9 N" r: B9 `' @9 \5 U4 J4 Y* I9 a

* E4 u; O: @+ s* V6 Z0 K2、conn.asp $ I/ C7 `+ ^$ C/ ^. `
源代码为:
: }$ d& Y# u# y3 n( S<% 0 m  V: p- r5 e' d- g
Server.scriptTimeout="10" & z  }1 k0 v" ]& {
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" + o: b% b6 V. H$ a; p* U
set conn=Server.CreateObject("ADODB.connection")
- l" Y; J, C# }! K' Sconn.open connstr
" @5 y5 ?/ l! Y! g%>
+ b0 n5 R0 E8 }) E& u  @
6 L& @! a# {& ?% T8 t% [& b, T2 e这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
( X5 ~4 v% l$ s" d, y8 f8 p$ T4 G% w+ B- U7 {; g
3、say.asp 6 H5 M* X5 X+ N9 _# }

; y7 ~3 X0 @) W7 p. P3 l" w- i5 B源代码为: 7 |' w& h, z- `6 W! m6 @8 `; J
<form method="POST" action="save.asp"> ' \3 y9 a0 B2 n4 k+ S& v
<p>大名:<input type="text" name="name" size="20"></p> ' n7 b5 D" c0 R' ?: ?
<p>标题:<input type="text" name="title" size="91"></p> 9 W# f6 N  }: F  f' U
<p>内容:</p>
9 w# b+ F2 y3 ]4 }- J  E9 u/ m<p><textarea rows="11" name="body" cols="97"></textarea></p> * B: q+ X% J' p, V& n4 d" Y* \
<p> </p> ; ?. H6 m- t4 k! g& k0 v( F
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 3 R  d* M8 {: O
</form> ) J+ Y3 p& n1 E
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 ! n9 V- M" n' L" `' E* C4 {
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 6 i# N- v- X; C/ j' s3 r7 N
9 ~0 s- }! V- |8 Z4 @3 O/ X
4、save.asp
& M, o6 Z& d$ C3 s, |8 C% b8 I  |* V! y6 e6 Q" ?! P/ z  r
源代码: ; Y( a# J+ }) b
<!--#include file="conn.asp"-->
+ I! h* u  m6 _9 o4 g% e/ G<%name=Replace(Request.Form("name"),"'","''")
) J0 c1 [5 l( z+ c3 j8 d. `title=Replace(Request.Form("title"),"'","''")
6 L5 A$ L, u; s5 D" a7 q7 ?9 jbody=Replace(Request.Form("body"),"'","''") + ^" F7 R0 J( C1 q) {2 D
%> 8 x6 z# I% X. [2 u) ^& \# S0 q1 S
<%if name="" or title="" or body="" then%>
& T) T6 ?# [) S2 @& I% v请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
# C: F  N: T$ {<%else%>
6 H# N! }# s8 _/ a7 I% g) ]0 E, P5 ]<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
! M4 n6 f2 f6 i/ i发表成功!<a href="index.asp">查看帖子</a> 5 ?; {: _  m, U# p
<%end if * x4 W, L7 L& W$ c& F
set savebbs=nothing
9 p  u( M) X) h%> # a' I6 Q1 w" M% O" O
  ?( T4 l; e! }$ d# D
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! . @, O4 c- I6 m; t7 l
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, " C! W0 i. I6 \  n
接下来几句: 5 t0 _& @$ v4 p6 ]+ @: a
name=Replace(Request.Form("name"),"'","''") ' V7 E' Q0 N' x/ I9 w! t9 ~/ I
title=Replace(Request.Form("title"),"'","''")
! N0 i/ c$ F7 `. R6 dbody=Replace(Request.Form("body"),"'","''")
1 C* I, B& q5 G/ `- I- _( y0 x" I1 P
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, / F9 v% x5 y: n3 v% b! T
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
/ Q: i" o4 y3 w0 Q8 M如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
. [( \. S/ Q$ G; l# G8 y就是把表单中名为name的文本框发来的数据储存在abc123变量中
2 D3 ]! \; g) ?, e  W2 ^, }
9 y, U1 W, u; m+ d6 l2 X: R- _' L接着:if name="" or title="" or body="" then - @+ `6 A+ s0 {$ r8 ]" p3 h
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
, D  y" c4 O: y: F“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
1 {; X* s6 C+ p/ z9 R, V7 c9 B0 j: f该语句属于html语法,大家都看得懂的! 1 Y- @4 i9 _, t( t/ j+ O, g+ I% W8 o

9 S( L0 c( |4 l2 ^& A7 b( `# R"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ; f/ J5 A1 }% ~/ Q
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
8 n+ {6 D+ t! R( s' z发表成功!<a href="index.asp">查看帖子</a>” 8 z8 c3 d) N; O3 e2 T/ y+ r

& c' |% \7 `0 e8 n) \"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
2 k' o# ]0 a( p- A! a3 @& linsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) " W1 _" L$ y9 a3 {
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
" E4 v9 N2 y* ]* lvalues是“值”的意思 4 g  T$ O8 |$ N, N7 {+ ^
就是插入向量name,title,body,向量用格式'"&name&"'表示
1 G1 T* n: j3 k; T  P5 W
# t% v3 J, K8 e1 X最后:end if就是结束if……then
0 \; k$ Z: i, k! Lset savebbs=nothing可以说是关闭掉: % o3 g# ~0 W* l; d7 |
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
9 |% X! x6 m8 [6 D4 h
) P' q- p: h/ T. Y
) P( U3 O* l! @: c5 }5、index.asp * Y; n. \% L0 l
源代码:
- d5 H" D! y$ X4 g8 {<!--#include file="conn.asp"--> . N% C  ^8 T( [: |' k- }9 w
<b><a href="say.asp">发表帖子</a></b><br><br>
7 S& y1 w0 a9 x$ N1 I<div align="center">
' B# i5 ]! a, V8 B7 e4 L<center>
6 p4 O% T2 B) R  _8 e<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 8 T0 ~, g. k: f8 K
<tr>
* a6 O( W( k5 `& H+ ^<td width="17%"><b>作者</b></td> " J+ N) f# l- I+ i) c" Q/ p
<td width="83%"><b>主题</b></td>
- k; |( y. M& `</tr> 5 A$ k% l! i0 B4 d7 j# ]( k. S: f
</table> 5 D# _& m% W( L9 ~1 u6 @  E0 {- X% {
</center> ; L. ]$ G! t, ]% }
</div><hr size="1"> ; o$ p  o  i& g
<%i=1
# |& L  v6 E8 B% E  Mset showbbs=conn.execute("select*from bbs order by id desc")
  {& K+ q8 l  L1 n/ |( Edo while not showbbs.eof
1 v) w. U! t( z& I3 S7 t( p%> : i! ?& K6 {2 v
<div align="center">
2 ]7 e* K* U* S( r; K<center>
$ V7 Q' ]3 [, B* f<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 7 q# _: S" x& p" V# [
<tr> ; \# F# ]% S- g) s
<td width="17%"><%=showbbs("name")%> </td> 4 O5 [/ {5 E" L1 J
<td width="83%"> * Y& c& i" f& H7 V( t' {) ]
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> - w8 `  }" e; Z8 I# _0 R! k7 p/ Y
</tr> " a4 d9 V0 `: O, X) P: u3 [# ~
</table>   T2 b7 x9 `7 t% Y
</center> + P, a3 t) g1 s9 t
</div><hr size="1">
0 d" z* D- \+ l; V8 t<%i=i+1 4 j6 s% E4 ]  d2 j! i, X
if i>50 then exit do
; q; @* A$ `5 @' O2 ^! y4 T' Gshowbbs.movenext
2 W- W. R' E, i+ ?2 TLoop
/ W& i$ h) Q% a4 sshowbbs.Close
5 B; C: L# o% bset showbbs=nothing 3 g  i, y, l/ K9 w. E  K) i2 [3 r
%>
5 w# i2 @, z. m4 K& I& i% T. X# S9 ~# o6 ^8 w5 L6 d
这个文件就不一句一句的讲了
+ I, `( ~+ q: z0 R- k0 p* Y主要讲精华部分: ' r6 w- e; n7 H, W6 x2 x2 O
set showbbs=conn.execute("select*from bbs order by id desc")
3 e8 \# E8 n% t7 W# {意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
2 p' J9 ]% ~3 F" y  O' Y5 A还有这么一句:<%=showbbs("name")%>
" h+ K) B+ X/ @: Y) |9 O' D就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs + A8 f# V7 H0 `
代码中的i=1和i=i+1 1 v; |0 V% m, s; @* ?) ]9 ]
if i>50 then exit do
. d; E8 j, J+ f1 Q9 Z- H" }showbbs.movenext
' c3 W  q* E, n0 ~4 jLoop
/ V+ {4 |) F# K* l. i9 lshowbbs.Close $ `1 R2 ~# ~4 e  u
set showbbs=nothing 7 w  c# c  s4 z5 H$ c- G

5 R3 m4 F6 w, G+ O' ?这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! - V/ B' H& R- _8 k
if i>50 then exit do中的50可以修改 7 h+ T1 ~+ e. D6 D. U+ x# H( z
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
  T' v$ T* l; [( H- I! b还有一句很有用的: 2 J  P, ?4 t& h/ N- N  R8 s, L
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
6 K2 t4 ^' r  C3 a+ r* I$ i# c里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, * G  Y" C) q- k$ q2 t
等一下在show.asp文件中就有用了 ) F. S' e" n/ w: b+ k" G/ A$ t
/ N; ]7 P. E1 G+ }0 p
5、show.asp . D* `. c) ~/ E0 E8 o1 k) J
源代码: 5 y. x. J. p2 F0 N0 ]% ?5 l  X
) S* C, ~/ [0 `4 v9 G4 y
<!--#include file="conn.asp"--> $ i+ ]4 ?0 w" h5 ^
<%id=request.querystring("id")%> + B1 Y- e5 Q5 a1 p
<%set show=conn.execute("select*from bbs where id="&id&"")%>
% a) J/ i8 j7 g- U" k: k' x<a href="index.asp">
. Z3 ]1 a3 l, U. T( a2 b. {0 r<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
9 p  G9 H( Q( q# u. Q4 _, \<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
" ^) D& b. l- @- I: T<tr>
; s+ Z. `7 H' N8 z0 u+ x<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
9 [! n0 O: j7 S4 W5 T/ B; z<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 8 s% s( }9 _" d. f! I2 e) \
</tr> ( c8 v# B# L0 P1 H; @5 D+ H$ a$ l
<tr>
: a  _8 X5 \, e<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 1 W% ]+ j% K: C6 q# W$ S
</tr>
/ q+ x$ p6 [( U* \6 I</table><%set show=nothing%> + S! x0 S: L: @- Q+ X5 B
' j5 D  Y& X* Y( r" O
劲语句---精华语句:
+ I+ l* f3 Q* I% v: h- hid=request.querystring("id")
  R( X( G4 V6 `7 c在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
  ?: D: q0 [3 Q% |5 N6 F! Jid=request.querystring("id")就是把地址栏中的id的值读取下来, " N7 T4 `5 p$ @! e
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, " n6 Y! R- ?' ~# M! j$ W7 I' S
所以show.asp使用id=request.querystring("id")语句把数字读取下来
  m3 R# u1 {& t: t于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 3 w+ f/ a3 _1 N# D' H- ^7 E
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
/ W0 c: J2 v  |# R最后<%set show=nothing%>
2 _$ b" `" ~. F6 D4 I
+ h! c) T4 G5 R* p3 ?好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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