返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
, u# o, u1 v: r3 H' |真NB..佩服ing ....." R$ _7 W, u" H0 u
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
, x' T! A- e! r# {/ o9 |% z4 k
; x, i; a3 l2 K- U3 f' |% j8 e同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 3 S. ?! z* L1 }2 e3 E5 F

% T$ ]% ^) o& P0 b% w8 k- u8 p- j. W一、建立文件! % M4 ]# j2 L$ q) v  D  l
最简单的论坛也要有几个必要的文件,就是: - D( }: ^! ^- J4 u( K
5 I/ q4 d: E& Y! J; v& {
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb : Z* e# t. G) g" V3 u1 ^
  |: q* k! ~% Q6 D
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 4 `' T, s  X' o- q
; m0 T# G4 K8 J( V, U
3、发表帖子的文件----命名为:say.asp - T& K2 \: ]+ `1 Q- P7 Y( j
  B# g2 n! [' L+ p" \$ ]4 g# [
4、保存发表帖子内容的文件-----命名为:save.asp
# E$ }4 B& _2 Q0 n0 u2 ^8 i  W' x+ W0 ]+ Z  E% |
5、显示帖子标题的文件------命名为:index.asp ( g  X/ ^! b7 R. h* {
8 `) z  c$ C* {+ @
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
& g& K$ b: j" @. ^% M" Y9 f  G* Z, p' h8 m4 k+ S' I9 Q
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ) ^) ?; M. N/ T+ v: M
" c+ \# r1 c% B+ A; W9 E2 V
二、各文件的主要内容
/ h$ p, J; P* i& @' I
% Y* G6 _1 P; w* [9 F) g* r1、bbs.mdb
8 I. ^# o+ J- a0 h
, l! q' e: M  X打开这个数据库,建立一个表,命名为bbs
& |. {! l5 t+ i& S& ^( r
4 \5 t6 W! c, C& \' R该表中有几个字段:
5 D2 S' N& d4 ~, q+ N; l4 v1 @6 x, L1 A
id(自动给帖子编号),他的数据类型设为“自动编号” ; w' e$ Q* [1 \+ f! ]' Y/ X# _
# |+ M* X& j0 Q  H  ~# i
name(用来储存发表的作者),数据类型为“文本” # L: U) t, k. v5 K1 q. w
  W0 F; ?6 q8 F8 k, u! _
title(用来储存帖子的主题),数据类型为“文本”
! R) L$ k0 B3 Q
, G. [( I! i  Z% X! N& gbody(用来储存帖子的内容),数据类型为“备注” . D! f& Z$ v. m) X% A9 e" e) i9 ?

; m, i; b* @  n9 _1 j; o2、conn.asp 1 ^+ e1 T. {& H* ?2 T. V) E, G
源代码为: 6 v. l. u; ]) ~! K
<% 3 L2 n: l# B/ k! P
Server.scriptTimeout="10"
; G' y* @5 R$ u7 U3 O  Yc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 6 ~7 C2 u+ Z8 k
set conn=Server.CreateObject("ADODB.connection") % q9 ]3 c- g7 F% U
conn.open connstr
& c  ~1 \" |8 N%>
7 k* f/ y4 a9 @- B9 R: {7 [7 V3 t& Y) _9 J9 \6 z, H
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! , O9 `2 T: }" `. H; `

! f0 x3 C6 a) T) S$ {2 x8 ~3、say.asp
/ e8 i" a5 u! _- f& |: ~% V) B8 `( R, v9 `  o) y
源代码为:
: ^5 o1 p, D' Q+ y<form method="POST" action="save.asp">
! K8 n% ^' R. e" z$ t6 d<p>大名:<input type="text" name="name" size="20"></p>
3 F" e0 r4 e; l<p>标题:<input type="text" name="title" size="91"></p> ' {1 I  y! L/ W$ P+ t' X0 P
<p>内容:</p> & \2 f# f0 N3 z% a: }
<p><textarea rows="11" name="body" cols="97"></textarea></p> 5 n! @# V" X4 V3 A3 ~; G% a. p
<p> </p> % t0 N% C: a; n2 }& i: j* y; u
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> $ d5 _3 ?/ u( o' Z% c# l+ R8 J
</form>
; M) n( e( T2 O5 ^4 D0 |大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
' A  L8 [+ o) W* r2 \& _, g! ]不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 3 X2 l7 ]( _: k8 n  `
- M5 L! b8 p0 T, l# W
4、save.asp & U( j" U/ K, l1 _8 n8 g" v
6 G4 C, t* ?  Y1 ?5 G/ g
源代码: ' @. Q9 |7 s' p5 N  g
<!--#include file="conn.asp"--> + N% J. x% w) `; s* G) w
<%name=Replace(Request.Form("name"),"'","''")
7 Z( y0 Z, D) J* j! Z3 x& }title=Replace(Request.Form("title"),"'","''")
1 a0 Y8 c) ^2 I4 @. z5 A7 V! M, Kbody=Replace(Request.Form("body"),"'","''")
* ]* b" D% H" X9 |4 I%> ; c; ?; o  I. w# Y- ]
<%if name="" or title="" or body="" then%>
$ w! z% W- F2 u$ L6 B请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! : g, C9 ^$ J+ ~1 C" f" ~* D+ q
<%else%>
8 G$ ?7 `* l( G8 H<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> " K7 i! ^8 }9 J+ K3 s
发表成功!<a href="index.asp">查看帖子</a>
1 b1 o4 o! T0 g<%end if
* F& N6 s. u) F8 D, Bset savebbs=nothing
2 G6 B9 n" f/ q( R%> ; O& ~! a) l, B  Q" D

& e9 i3 K, q, ]3 D  a  m1 W! p第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
! i8 T7 P8 G! Wasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, : H- r! |+ b+ o" s6 p& s
接下来几句:
' l0 x5 q9 g/ Bname=Replace(Request.Form("name"),"'","''")
4 ?2 c( M, P$ X# I/ Dtitle=Replace(Request.Form("title"),"'","''")
7 ^/ L# Z3 {5 C0 ^; q# k& z; [body=Replace(Request.Form("body"),"'","''")
) k6 Z- Q+ w/ ~: T
  j3 S2 R2 _5 |: s5 \“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ) K! ]+ a! Y2 [& D7 a% e3 ]
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
, p8 `* v: {, L8 b& J如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
$ c5 F% e; m& A% _0 Q就是把表单中名为name的文本框发来的数据储存在abc123变量中
7 }! b/ h5 X) B4 ]- H( l* ^3 u0 x2 o
接着:if name="" or title="" or body="" then
: d' u4 b9 B1 x" g6 `8 p  \判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
3 Y' {( e# Q# E5 V2 M“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
7 L( B7 l; l; x  `该语句属于html语法,大家都看得懂的! / `/ U; e8 n  Z' Y- h
$ O& U) ?! t. W
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 2 e* K; Q9 ?* [% R  X* \9 P/ f" W
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
2 f! X7 g( R- a9 O7 |" P发表成功!<a href="index.asp">查看帖子</a>”
8 i8 X+ a" x2 R3 \1 e1 _" s. i8 R( c# q% _5 _
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
9 t* M0 ?" }* r. S  E! g3 @6 `insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
6 I$ z1 f, y5 |/ U0 ^. [中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
- d& o) U' Z* [* J* J- Xvalues是“值”的意思   g, t1 j% s0 ^+ y  U  ]4 B
就是插入向量name,title,body,向量用格式'"&name&"'表示 3 `3 v5 M1 f2 y, ]" X

  [$ p$ F0 Z- d" I7 @+ }最后:end if就是结束if……then
& h0 r7 h4 r$ @. ^set savebbs=nothing可以说是关闭掉: : L. [  X$ z5 L; r. v, L; w
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
) F3 ~: ], k5 S7 u6 g1 D" p# l8 c+ H# t( k& C& Z: w

3 \+ O5 y3 z( h5、index.asp
. l8 j, r! q  {& y6 H8 x, L" K源代码:
& V0 c5 z; N% w8 _' o<!--#include file="conn.asp"--> 3 D- [5 j/ P1 {( h9 G
<b><a href="say.asp">发表帖子</a></b><br><br>   b- k& s1 }: @/ `0 [
<div align="center"> 1 C1 V. f: t+ j  u* x% w# {$ `
<center> ( S9 m7 M6 J! ^3 v- [: I6 i/ y* v
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ( Q9 v: F4 M" l: I& `6 j
<tr>
! v* b6 V/ t; A1 c<td width="17%"><b>作者</b></td> 9 U! n" L6 F! n7 O, F2 j
<td width="83%"><b>主题</b></td> : S. ^# a  a$ i
</tr>
* }  |+ O) D1 G7 Z</table> & K3 _+ l* Y' J! O. ?8 t. s
</center>
; t4 w4 _9 ]8 G+ |& _</div><hr size="1"> " r7 D# B; C' q# b+ S& K: ~! g2 ^
<%i=1 6 ^6 E" N. I% D" l- W# f9 m
set showbbs=conn.execute("select*from bbs order by id desc")
- l( i# D7 }: |9 `9 J3 t% Ldo while not showbbs.eof : X2 F1 v+ R. r" P) x% k+ R9 t, r
%> 0 @" x  r. s! H0 [8 D4 u1 m
<div align="center">
/ H; l$ \: w- P! r6 ^4 H<center>
* z. ]  j; b5 Y7 E$ @<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
7 c0 K! P& H2 x5 ^- t/ O! H<tr> / s$ [$ x# S! e# L
<td width="17%"><%=showbbs("name")%> </td>
  ?* s2 x. j7 e; l9 E4 T4 b; m<td width="83%">
1 [  V3 {7 h* f0 L<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
& N- v! Y2 g6 X( Z" k</tr> # ^" ~% d. T( j) u
</table> : x2 r; K1 k1 j! |4 S! ^( o
</center>
- U3 I5 A5 L; {</div><hr size="1"> 8 t9 Q$ P2 m1 G" C
<%i=i+1 . `$ U3 s5 a8 ]; Z% K
if i>50 then exit do
0 _- E9 v! q% b4 zshowbbs.movenext
4 I2 [& a! Y# F( {Loop
: q1 L! I/ V/ r  j9 Q2 Ashowbbs.Close
2 l2 E0 _2 z) t& ?set showbbs=nothing 5 l$ G% ^  J5 T  J( ^* W7 X
%>
/ v9 R4 j/ X/ K/ c4 o# W  C$ G# `/ Z! [
- G" s2 j* E! S这个文件就不一句一句的讲了
- C* _: q+ _  D7 \主要讲精华部分:   R4 m) ^% e2 R& B2 h
set showbbs=conn.execute("select*from bbs order by id desc")
" h3 N; `4 ]) u. C3 X; ], F+ C意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
4 S& x2 J) u6 Y; R# U5 [还有这么一句:<%=showbbs("name")%>   p5 J8 {" l3 F- f' r
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs * V' e' e( J" a
代码中的i=1和i=i+1
& z% K3 }  }  s: ?) q+ N+ c9 Uif i>50 then exit do 2 @% u7 a& J: d9 K) j
showbbs.movenext " s4 p$ P! A% ?& M
Loop
/ L, f; f& a0 e( P/ r4 J3 e3 p: Hshowbbs.Close
6 Z% J& C8 \( v8 m) kset showbbs=nothing 0 \9 w! ^6 C7 J- t8 B
) n% R0 y' Q1 D: Q5 `
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 9 l3 @4 L! G1 u. T- q
if i>50 then exit do中的50可以修改
+ L1 i$ o$ O. ^+ O但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
# ~9 O9 f! U/ h8 X# X( x6 [还有一句很有用的:
8 K/ [" E9 c( v- X<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> $ R! ]: z6 K, M# {# a/ S4 @/ O
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
7 j7 t' A. |3 I  M; k1 k- G1 n等一下在show.asp文件中就有用了 ( ^, V9 ~. @5 Z# E. }
. M0 w$ O4 R, b* c
5、show.asp   j6 z/ G2 b. r: R2 \, K
源代码: . T  `) @* N5 N/ y

+ N# ^$ i% Q* X9 Z$ ]2 z<!--#include file="conn.asp"--> 3 B# N$ K) V6 Y* Z. z) i! d
<%id=request.querystring("id")%>
/ ?2 T  W" ~# L3 L- ?& [<%set show=conn.execute("select*from bbs where id="&id&"")%> 3 v: _* \/ M3 t( n
<a href="index.asp"> : F0 p5 M& L8 V7 i. j: T. A
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 6 z. O. T* {7 X& ?: }
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 2 i1 P5 B6 I' U2 L" f3 H
<tr>
5 _  P3 H  b) g$ ]. {  X: y) {" D<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
: X* _2 q8 b1 t1 o" `. N<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> # K. m& i' z1 t8 j
</tr>
) w9 s% _1 E9 |6 g2 X, ?! n<tr>
! r3 z* c7 L# [- ^+ `5 I<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> : h  K! n! Q/ c
</tr>
1 E5 _6 v5 @" ?; |</table><%set show=nothing%>
3 M- |9 x; M1 u$ Q: _) A: }( Z' p9 r2 o
劲语句---精华语句:
9 D' e" `3 m" p6 I7 [# [id=request.querystring("id") # z' F. C7 E- K3 [
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
% Q; |2 ?  z( c$ h+ y& M. o3 S* rid=request.querystring("id")就是把地址栏中的id的值读取下来,
8 M6 s4 [1 c' i. s+ X: z因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ; O, i  v' t1 g7 E4 j
所以show.asp使用id=request.querystring("id")语句把数字读取下来 9 c$ r: }4 _6 w: X6 U/ ^% @$ A
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 3 j7 P' Q  H8 o- ~% D
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
  ?4 ~  _3 u3 [1 l最后<%set show=nothing%>
/ ~) l' P- o( {# |
) ]0 {. C) U, N7 h1 B+ C好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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