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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
7 X6 @7 F7 p* u# R$ v真NB..佩服ing .....
( D8 ]9 P: C5 |' |+ Y大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
( r8 X/ p" E* c8 A) B& U7 C- X
% F+ m1 ^* c3 x( i; m/ e同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
! j# T$ g/ P. G6 Q* j4 E! I/ E/ j( n- z+ J
一、建立文件! 5 z3 n0 w- A$ T, o# S; L4 O( ?) J
最简单的论坛也要有几个必要的文件,就是: # Y- [$ X; {. ^

3 \/ M  x" u, C2 @; x1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 7 I+ @% F" I: N6 y7 z' m1 y5 M

# b9 b. U# L% G  x2 Y2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
. j# D" j( g# L4 O0 d/ j; K$ V9 u' s  F/ Z- Z
3、发表帖子的文件----命名为:say.asp
# }1 p3 R9 p$ E+ }5 a6 P
; ]' O/ T2 j0 [4、保存发表帖子内容的文件-----命名为:save.asp
- x  T) `" k$ t; r7 X, ~! p6 L
( Y+ B* j$ U- u5、显示帖子标题的文件------命名为:index.asp / _* z/ W7 H' `% ?" n9 k( T: D8 h

' l2 j2 x/ Y4 f  ?6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
' I7 p/ T& u6 W+ B" @8 |+ j7 U' ~- l* b" ]
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 6 g3 c5 L0 B" N# T9 T7 U! }( J0 _

' D+ I0 B8 G" g! g7 n9 G! j二、各文件的主要内容
4 i/ q$ D) G8 N' t0 C  b
& v% d4 K6 {+ o% F: T1、bbs.mdb
7 Y& R, R; ~8 |. K& B* P( [
8 c" O$ G4 U: G( Z- _/ a4 Z* o打开这个数据库,建立一个表,命名为bbs 1 W- ], l7 F( W* c. R$ n

4 p, r' R5 G) t4 t9 g+ s+ j该表中有几个字段:
( u( k2 p/ F2 T" @1 x8 L' n& f$ [
id(自动给帖子编号),他的数据类型设为“自动编号” ! N. @/ {1 B& D* G  R- X

9 V0 A1 x& C- U  q3 nname(用来储存发表的作者),数据类型为“文本”
5 R" J4 c2 R; c8 S0 @0 Y
/ n) q! L% W" a8 |3 J* q; Htitle(用来储存帖子的主题),数据类型为“文本” 4 V1 O, u  b/ m

3 W  K& j. w+ _: |! y% e5 s+ Ybody(用来储存帖子的内容),数据类型为“备注” 5 o$ b! ^: a& {6 s* w
8 b& y! ^7 Y1 b  k8 D& n; _- q
2、conn.asp , ^& s5 ~7 X% E) m( A8 F  v
源代码为:
6 d& N3 d. ?" B+ Q# A9 `' H<%
' ?$ I$ I- G5 A% V3 nServer.scriptTimeout="10" * i6 l8 b* W5 d. i  S0 Q9 z; K
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
! [9 X, E( w( E$ A; z& Wset conn=Server.CreateObject("ADODB.connection") 2 m) ~3 ^/ S1 P# X7 j, T
conn.open connstr
/ a6 c3 D1 v/ B* G! K# Y%>
& N. v3 t) W( D0 c' w
) s0 K9 b2 h" q" B4 [& {5 O这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! $ @6 [3 |2 Z4 @- C. ?
: n3 e; C$ m5 m% A, }
3、say.asp . z# X  W  [& A- @& u

, j$ j  W) V: v; ~: K* R0 ?" ?8 S源代码为: % U* U/ o1 ]: g) O% T: `
<form method="POST" action="save.asp">
1 q% M% ^7 [* B) g3 [( G2 c+ N<p>大名:<input type="text" name="name" size="20"></p> 5 F2 ~" |0 p0 ~2 y* X' C
<p>标题:<input type="text" name="title" size="91"></p>
) c% g; V% G  `: J5 p/ k" Y3 U# Z<p>内容:</p>
( b. b% Q: Z: Y' f5 m9 _6 K4 k<p><textarea rows="11" name="body" cols="97"></textarea></p> " j9 W- U( G- W6 L$ x, u/ z9 Z  J# K
<p> </p> 8 s4 S" X5 y. a- g
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
& K+ O1 d! k& t- S" y4 X</form> ( S; X5 e6 X/ s$ J9 Q- Y! H. v( s/ T
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
/ O5 ~! O  o  r7 U- H; }不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
4 o+ s4 [' S) ^; p, D: O. h
% S# F, ?* k0 ~% D, C4、save.asp
* a* [; @8 g, e1 H
# `# m0 z9 a' i/ y- i& `源代码: 2 L4 F; u% J8 h' y4 v- H6 j: U
<!--#include file="conn.asp"--> - u' L5 z; M# n
<%name=Replace(Request.Form("name"),"'","''") * X3 B, f9 K0 h. k0 J5 `8 H4 l8 k3 l
title=Replace(Request.Form("title"),"'","''") 3 o6 o- D9 {) a$ Z& _7 T. d* x
body=Replace(Request.Form("body"),"'","''")
. ~! Y9 ]7 q1 U/ z, U" w  e%>
( U& t, A$ ]  h3 d9 g7 W6 T. S<%if name="" or title="" or body="" then%> & c5 i1 Q, ]5 M! Q* y
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
# g, l  h4 A* F! o9 B; ~- ]<%else%>
6 T5 s8 ~( j. k- j- \$ B$ `<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> + Z* k5 ^2 g4 n* b
发表成功!<a href="index.asp">查看帖子</a>
/ g) `4 @/ f( i( Z7 m* G; d3 d4 y<%end if , l3 w% N+ U4 L6 ~/ |( N3 x! h6 t
set savebbs=nothing
- |9 Z- V8 `& `* I" b%> 7 p  }" P6 d1 _+ P  ^
  s  \  Y9 I1 |
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 5 m9 G) N2 K& L7 k- R6 s! C
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
* R  G' Z3 B) P$ ~; N! _接下来几句: 3 s7 I6 e' G( _- z$ a. V9 v
name=Replace(Request.Form("name"),"'","''")
4 x- X2 _1 }: t5 w. V3 M9 Y8 H7 y' etitle=Replace(Request.Form("title"),"'","''")
$ y# }; y3 R. a6 [body=Replace(Request.Form("body"),"'","''")
$ C% f5 Y: M6 \! S) D3 D1 X) U: I! z, [; p
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
/ `/ ~: }$ f/ W. n0 z而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
! x, X: q1 L6 |  [/ K0 D9 A如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
$ b# E5 ^8 p" X/ C  p就是把表单中名为name的文本框发来的数据储存在abc123变量中
: N, E& o" \( c5 t2 B
6 J$ ~" M/ R. i* y# Z3 n% H接着:if name="" or title="" or body="" then ' A# r( r2 n# c0 ^4 u# ]
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
* r% J3 [4 {: T" t“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
1 R) a* k: L/ n1 L4 @0 @  g/ n该语句属于html语法,大家都看得懂的! 8 r, Q5 K6 U+ }9 [- ]- V/ {7 k

  b5 V& q/ |  ?"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 5 W6 s% b  u2 u1 W) Y: b7 t
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
+ M! }$ {3 h1 b/ h* a发表成功!<a href="index.asp">查看帖子</a>” + \% m% s. T4 _6 z0 a( f
% r6 o7 ^& M$ ?( z
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 9 c+ G6 h' {' \, G1 ]
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
1 @0 V" r& G* G$ f中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ) m+ T% G, O- S
values是“值”的意思 ) v9 @$ I* O0 J5 J% H3 l0 k4 v
就是插入向量name,title,body,向量用格式'"&name&"'表示
" v. Y  Q# ~3 ]9 e- b; \( S& K# a8 P$ I3 I& _2 z9 w- U/ ]
最后:end if就是结束if……then . r) v* X. v* j, k/ N4 K; H
set savebbs=nothing可以说是关闭掉:   Y  o3 g0 ~8 \  }: z( t. B7 i4 {
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 5 \: h" _/ Z5 c; p

8 W/ [# _! `, R6 i4 r" Y; S9 D  F% C; O# u7 M0 l' ~* _1 o
5、index.asp & B& k+ U* }- ]1 O
源代码: / u" K+ }: |5 x& x1 {
<!--#include file="conn.asp"-->
  s5 d  R& \5 k3 @( b, S& E  x. a2 e<b><a href="say.asp">发表帖子</a></b><br><br>
$ h7 `' v: z: ~# ~<div align="center">
" ?2 I0 l5 `2 T) ~/ m! m: G" k( |<center>
' A2 I  M3 T% D% [. V! l<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 8 a. Y" I' ?- s9 _% f+ f* O5 C
<tr> $ p) a3 z5 e4 v, l
<td width="17%"><b>作者</b></td> ' P# v% q0 @8 F# a) W" h
<td width="83%"><b>主题</b></td> ) N9 D' r* l# |% M* p8 }
</tr> # [& W( q8 G" P1 y0 X
</table>
! v* h. r" |* n( U/ L1 T6 K</center>
; b1 u, _  e+ B4 u9 E' E) j</div><hr size="1">
4 \% t: ^( v# e4 i: n& h<%i=1
$ p+ w4 V* {% Dset showbbs=conn.execute("select*from bbs order by id desc")
5 w( e. k5 z, i# h) kdo while not showbbs.eof
, E1 A7 _' x* ?" ~%> 6 |- P2 w3 g# A5 z( p+ j. }
<div align="center">
9 Q6 h2 ^2 S6 d) @5 u! a<center> # J+ C5 O6 k8 c
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> & _/ n! Y" M0 R" I
<tr>
9 H* \. \' ?. v- C- A$ g0 o<td width="17%"><%=showbbs("name")%> </td>
* V9 s8 [- N+ v7 e! u6 H/ {<td width="83%"> 8 o1 D/ g6 p8 t0 y2 P1 e* _
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ' }! w- r6 G" A3 I* R) M$ u
</tr> ) T- \& j* p/ b9 M
</table>
# N, t" L; ?9 E9 ?- l</center>
  \7 p, X  W  Y. h0 ?3 K</div><hr size="1"> - p' Z# ?/ b4 V" t- m1 H
<%i=i+1
5 h1 M0 _7 L7 @' Z, Iif i>50 then exit do
+ `9 q6 ]2 J3 d9 i6 @showbbs.movenext
$ q  l/ Y6 {# \Loop ( K8 Z' s! E0 q+ K; w% |
showbbs.Close
- O4 u: P! u4 j$ _* lset showbbs=nothing
) z) O" Q' ]9 b%>
( E5 ^: x& U  p. U5 X: z5 d
- Z- T( f! y( Y/ B这个文件就不一句一句的讲了 7 N5 v7 \5 B  G+ l- A. @
主要讲精华部分: 5 e5 Y, k  B- A0 U* @2 z! a7 t3 L. W
set showbbs=conn.execute("select*from bbs order by id desc") 8 c* z* h" y1 c
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 4 D( m* T+ @" X  V! B
还有这么一句:<%=showbbs("name")%>
( _+ N+ H+ p. [# Q7 {/ n6 J就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
1 W3 S. J2 m4 d+ p代码中的i=1和i=i+1 : Y7 m; A& ^7 [7 j. W
if i>50 then exit do 2 q4 ]/ z  I8 Y- T
showbbs.movenext
" [5 `7 n, C0 \Loop
4 `* h- z9 f9 R3 \showbbs.Close 7 ?% D) E& Z. }3 W# t
set showbbs=nothing ! T4 a2 W0 |0 z: @- s! z# g

. r& a7 Y9 N0 }0 E" k" d5 o这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
1 E$ v* k& e) A# z/ k; c0 p5 [if i>50 then exit do中的50可以修改
: g- n. r" M* ]' Z9 J3 A! P但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
8 h- m' J2 a. l, I还有一句很有用的:
+ J9 _, T$ X6 a<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
( E, U. u! Y, [. r  V里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
7 e+ M- s% {6 k8 ~  j7 [- r等一下在show.asp文件中就有用了 - h: }% Z. b& Q6 W9 I5 Q; |2 q
. J) Z4 B: S" D2 S9 X! z
5、show.asp
; j9 q% s8 I7 {- c2 C2 O8 N$ o! _源代码: , k, k7 d* {1 }4 a* `3 n
' J; f& q9 Y, T
<!--#include file="conn.asp"--> 7 A: E  A2 i/ I- \2 H
<%id=request.querystring("id")%> " o6 I& x9 S2 R
<%set show=conn.execute("select*from bbs where id="&id&"")%> " X0 L1 m& X( ^, j4 u
<a href="index.asp"> ' @( B  ?$ J! R( H& z
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> ; }: a9 ^' K1 E& H  f8 N3 s) C
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
( b+ T. i$ k# _5 ]<tr> ' K. l, L9 o! G' f- B2 k' V" m
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> - ^& q( I  _5 c& F
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 4 @! ^$ U/ T1 B
</tr>
( v4 R9 N4 I# ~; h" h1 b<tr> : p: u4 s1 E3 x- P8 e! l4 }
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 9 Y: B9 W& H& b0 h% K$ L. v  H
</tr> ; J" ?' A. D; f7 [" g% z
</table><%set show=nothing%> % I$ [0 H) D8 i- b' V) C
6 m! ]- v; E6 o* F7 F+ _
劲语句---精华语句: 3 i( E6 D4 X- ?
id=request.querystring("id") 2 }8 H2 X3 j. S" T" X* s
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, : f6 Z& t7 z. z, `
id=request.querystring("id")就是把地址栏中的id的值读取下来, + b7 ]- O2 O: Z& Z
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
1 H6 ~5 }  M8 l& M* ]+ X所以show.asp使用id=request.querystring("id")语句把数字读取下来
; [: o7 v( `3 J# H1 Y' B- e于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
% x4 t9 v& M" I' i+ L7 w% U/ p向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
$ x3 Q4 D- X# _! r2 F最后<%set show=nothing%>
( }1 f& p/ V6 K4 Q0 O
# w+ \& ^; j0 Y1 D好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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