返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
4 v3 ]7 [  m/ P% f- w: @真NB..佩服ing .....2 @% F$ |% `) t9 m4 \3 a6 O
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。) E  ?" X8 \7 z# l( Z2 {& O( A
# r) C* L: T5 A' e, l
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
4 d" G6 k# }; f& K
( U" {# T" b' d9 _1 L1 _: C一、建立文件!
  n/ z) S/ n& A0 j! w' I最简单的论坛也要有几个必要的文件,就是:
5 F9 q7 ]) x5 K' U: M  b
5 U3 X( D2 h5 `. y8 l1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 9 j- R6 ?) q# H$ d; f

2 d- L7 R; X! j* C/ J2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp : k3 G2 _+ C$ ~% ^
9 m8 ?7 _8 D1 x! X/ K7 L
3、发表帖子的文件----命名为:say.asp $ z9 d4 e  c5 D9 J, O, c! @9 x

  w- c* ~( z3 o! r4、保存发表帖子内容的文件-----命名为:save.asp
  [) e8 w0 E) D* w$ `: [; x# h+ m1 @$ [" u" U
5、显示帖子标题的文件------命名为:index.asp
' J* O& }& V6 O
. o+ i( b. F/ K! v; Q6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
; y( o3 e  H, a
  V1 ^) C" q9 I3 c& Z. y5 o建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ) z7 S% Y4 g+ p
# A; `7 {9 \+ m) j9 A' D- O6 j
二、各文件的主要内容 1 U# E9 G4 T% K& K* L  D+ g' e; v3 L
7 c/ ^- V# c& z
1、bbs.mdb
6 ]/ m- K3 y3 w; |
5 q" s/ o: h/ a" d! g8 C0 O+ N( X打开这个数据库,建立一个表,命名为bbs 9 `3 n2 b5 ^2 W5 v7 {$ y2 v  p

) k$ O, ^3 K% t. |! ]该表中有几个字段:
' N1 f* o0 M8 \& A& @3 ?
" f9 e+ f% D0 ^. a' v, X3 Sid(自动给帖子编号),他的数据类型设为“自动编号”
! a8 {/ E* r. F/ X+ i& `. b8 f- r" O0 Q( ~$ @. J
name(用来储存发表的作者),数据类型为“文本”
$ D5 o7 u! i$ X  S/ e: [8 R% A
2 \: x% ^3 S8 o& f/ f# ltitle(用来储存帖子的主题),数据类型为“文本” 4 l5 g! |& ~0 `* C1 Y4 A
1 a0 E! }9 u1 L- j5 d
body(用来储存帖子的内容),数据类型为“备注” / j( Z: _8 n0 E  ^: C# b% S, a

, a$ A. m/ [/ t. z2、conn.asp
8 p# \& o# p0 ~; j3 K源代码为:
0 A% G2 Y7 F, j<% 6 Q* ]" h" L& o* P0 j
Server.scriptTimeout="10"
! z' F/ z' @: Q4 Rc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
7 P0 Y: o$ Z4 _set conn=Server.CreateObject("ADODB.connection")
! I# w* w9 f; i, V0 Wconn.open connstr 9 C  H5 `, C0 {8 _
%>
* k* k  V) y( I. O
! R3 |/ O2 p! t: K4 }9 M这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
; x' p. O- ?; G4 D+ J& w3 a/ n6 l) y- R0 ~/ y* w! h3 c
3、say.asp " i! r% `( M' v! R

$ ?/ V( d1 n! \& ]% p源代码为: + v1 Q! [+ j4 V1 q4 J# L+ z. j( i
<form method="POST" action="save.asp">
) W+ y- E' L# v+ Y9 q! \8 b<p>大名:<input type="text" name="name" size="20"></p> . s. R( }$ ?7 a, n9 N7 Y3 c
<p>标题:<input type="text" name="title" size="91"></p>
9 F! S! T0 k9 F% P- }$ i, Y* S<p>内容:</p>
4 L# L% ]) E- X9 K<p><textarea rows="11" name="body" cols="97"></textarea></p> % Q! H0 ?5 V( G
<p> </p> ! l# n4 e3 w7 ?& e
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
+ z. d! ^; \: d& ~2 m3 y4 m</form>
) w" s) S( z4 F# y  d大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 4 d0 y1 c; G# m- u, [1 E1 V  z% D, c
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 7 R+ c  r% u3 r8 \# a* T
) `# k6 q4 z* g' |& z! U/ Q- v* h
4、save.asp $ e! ?6 J6 t/ S, \! l: u
/ L% o& T/ W! i, n  j
源代码: 0 N$ x6 `& L7 f+ g
<!--#include file="conn.asp"-->
# L6 W6 J% U* C5 [9 T$ j<%name=Replace(Request.Form("name"),"'","''") - b6 W. W3 }0 @3 v
title=Replace(Request.Form("title"),"'","''") - y5 p' a9 O+ B
body=Replace(Request.Form("body"),"'","''") 0 u8 i7 C( n2 p2 y7 `0 J
%>
3 h% g! c$ |) }: r; I<%if name="" or title="" or body="" then%>
: o: [( x9 N* i8 j$ E0 f请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
* f7 u3 n/ |# _. O4 Q! z  K<%else%> % P7 Y' ^# I3 P  B7 @8 d
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
* d/ M2 X6 }1 d5 U# B发表成功!<a href="index.asp">查看帖子</a>
2 k. [4 s0 r2 h( r/ P<%end if 1 c' _8 l* }# L; t! M
set savebbs=nothing
% p4 @3 J8 [$ c( z%>
& b# [2 n% i9 B2 A* N! l5 A
+ z( x* a* ?# A) ^( _, c; r# I第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!   b1 `$ w% j$ ]4 x
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
) B6 q0 F2 X9 r! P- G3 R3 I( U8 Y7 k接下来几句: " }* V$ G0 F7 V6 l6 w% S' X
name=Replace(Request.Form("name"),"'","''") ; t' u7 |: v' k; Y" y; f
title=Replace(Request.Form("title"),"'","''")
6 P; P1 _9 e# T' Mbody=Replace(Request.Form("body"),"'","''")
1 O0 R1 h0 i% ~
3 e4 e. x; Z$ M  m( [2 K  p2 R8 W* U“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
# `" y, |! l$ o而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
2 ^3 @7 z; H) \/ Z如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” / l, ?& [) {& q' o. O
就是把表单中名为name的文本框发来的数据储存在abc123变量中 ! _+ G% n/ w5 }! O/ T$ H, a
# z% `8 B9 c  }4 f* [9 @! V* r
接着:if name="" or title="" or body="" then
+ W( N% |4 w4 R  U5 c1 k判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 3 S5 X+ h" o. F3 Z7 k, X
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
/ }+ t  I8 U' u4 |$ D! q该语句属于html语法,大家都看得懂的! ! l3 G7 p  t: q

7 y/ N! b. f. m; c3 q5 j+ S"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
9 [3 ?+ {4 d6 F8 i“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> # ?0 ]: a, L1 j' D! ?! q" T
发表成功!<a href="index.asp">查看帖子</a>” : S+ ~- L# J. I: W7 V( M8 x' s
8 o4 I- Q% h. E4 l- H' A/ l
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
' D$ P; g5 x% V8 ?insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
0 _; X( W/ [& j# a中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
& J' [% y# \: M4 `6 s* ]2 svalues是“值”的意思
+ B4 X' Z: Y/ q4 s就是插入向量name,title,body,向量用格式'"&name&"'表示
7 f( @- j0 o, |0 F4 Y' T
4 ~3 U: d2 S+ c* s8 ]- o/ L最后:end if就是结束if……then ; w; J+ m) M& M& t6 N: r
set savebbs=nothing可以说是关闭掉: ( F% `  C$ D9 T4 f! j& M. S' b$ e
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") " I# r: L' v4 K9 \. K' [7 L8 N

& @6 U( c2 o7 h$ Q7 Y0 I9 W! S, u8 X6 a
5、index.asp 5 E5 m8 ?. s. n4 k# _
源代码: 2 V7 b" q1 F  a! K2 Q% ]9 _
<!--#include file="conn.asp"--> ! a/ w7 w- P/ F0 z3 j
<b><a href="say.asp">发表帖子</a></b><br><br>
' V/ P8 r) W+ G6 t1 b# a( k$ C( D<div align="center">
+ O; r) P( N$ ?5 B; L<center> 9 F6 [* \* ^' g4 b0 Q9 V# |
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ! Z3 n4 j. U' v9 H" N0 c! l
<tr>
5 @  B* n: {3 r, l<td width="17%"><b>作者</b></td> * ?2 p3 }9 q$ B9 z
<td width="83%"><b>主题</b></td> ' c% b! R8 K* B6 n; g1 G" U
</tr>
6 e2 \% [8 N$ {- }</table>
3 k$ a6 t' u% t, C% e</center>
" u% f- `' V; ^, u% f1 g3 J7 [</div><hr size="1"> , I8 ^! N- i& W! O5 `$ K
<%i=1
! ^! {) m% J6 u9 y) m3 m, G  Oset showbbs=conn.execute("select*from bbs order by id desc")
, H8 A7 a; C- @" M# s3 pdo while not showbbs.eof 5 z& Y/ ~) E$ g" k3 Q0 H4 C
%>
& ~% u1 n1 [0 d+ `% t6 r* q! ?# _  A<div align="center"> 7 \! H* k' ?0 V" \
<center>
5 [: e) g+ `) F' v2 L  j<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> . J0 R% _% E+ X5 @" O( s
<tr> 5 Y. I0 Q4 N% U, a+ d
<td width="17%"><%=showbbs("name")%> </td> 9 J5 k, N4 v& r# x( b- N
<td width="83%">   Q' c) A3 p( y
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
: B: P* L8 T3 J( g! Q5 _" t& B& d9 S8 r</tr> 7 d! }( W$ s2 l
</table>
. _- Q  h" R$ ~; N) ]</center>   m* J6 ?" @5 y( o7 x5 f
</div><hr size="1"> - N- `# `  ?5 F. ^0 a
<%i=i+1 0 i" H1 ^7 A/ g" s
if i>50 then exit do ! H" B% s6 C: R2 F3 g' w
showbbs.movenext , d* W- x- d4 E  h# @0 P8 `
Loop
/ R# v& M" J- ?showbbs.Close
' V/ s+ k* Y9 j( d/ [; Iset showbbs=nothing
& ]% e* X* z& R& a  D2 T%>
2 s$ {2 A* F7 C' i- m. o6 c6 E$ {$ N1 W* q, c
这个文件就不一句一句的讲了
7 \' p8 \- n0 i; J; o; ?! h( u主要讲精华部分:
* s! G9 j1 e; k* q' I2 u% O1 _% r$ F- Tset showbbs=conn.execute("select*from bbs order by id desc")
: e0 M+ j5 z9 G% v6 `意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
- ^7 s; e" Q) Q" b+ q& q还有这么一句:<%=showbbs("name")%>
9 e* c% p  g2 F1 {' H就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 9 E9 Y& q: V9 c# P% e& x2 v. F! w
代码中的i=1和i=i+1 " l1 q% U* Y* A+ p) a9 P  d9 b9 t/ g- g
if i>50 then exit do 8 I/ g) `! r! G! f3 U( K& P- y
showbbs.movenext
0 I, s3 K& r2 Q/ t$ j! sLoop + g1 _6 T0 |5 d
showbbs.Close
, \2 O# t6 t( t! yset showbbs=nothing
% V( e( }. d1 Z% Q1 U( b. k: O+ |4 F6 ~
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 7 C9 l! B; U5 G7 X
if i>50 then exit do中的50可以修改 ; _( }: T8 O! ^; S9 c$ b
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 6 e& U  h- f: Z$ k
还有一句很有用的: ' X  L9 n2 j9 |! e$ z; U& J
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 8 O9 S! u2 q& _/ `3 U, o
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
/ B- |2 {5 U; [+ w# j0 l等一下在show.asp文件中就有用了 ! X& l* r, }" m9 t) C! W
5 O# r3 ~* V7 T" U
5、show.asp
9 m9 ]! U% g$ W! J3 R- W3 S4 Y7 w源代码:
4 O  C! K5 u7 q1 \+ l4 J; I% o- J6 d* y8 E& w' |8 D
<!--#include file="conn.asp"--> . |3 ]; a- u" M/ C. j
<%id=request.querystring("id")%> * o' D; t- v: M' ~1 ]
<%set show=conn.execute("select*from bbs where id="&id&"")%>
# a0 O7 p! I- ?8 D5 b1 D4 ]- ]( V<a href="index.asp">   z" {1 ^$ W! H* G
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
. [* \7 q  B2 f% Q, e<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> + l% T  b8 o( C5 R! g
<tr> 4 T, U0 q* n- d6 _: B& D/ \
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> / n8 V; E- X( Y1 q! I$ M- a
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
! \* ~7 B$ {0 Y) k) ~* R; }: O</tr> / j, T* v, ]+ s0 H
<tr>
5 g1 O* V& M" ^  P6 u& Z$ J/ ]<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 2 H$ o) A4 p; S3 N$ g4 y- B+ I* N5 ]
</tr>
. i; a6 u5 x: b9 K( a. a</table><%set show=nothing%>
) _( E9 D" F" p& N( U9 Z3 Y6 E# |4 X$ q0 K& B4 Z- O
劲语句---精华语句: # [/ v  ?* L8 U! S) t
id=request.querystring("id")
' Q4 x. C) Y" E6 G$ c在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
; E' g$ S& K8 H) N  {3 _id=request.querystring("id")就是把地址栏中的id的值读取下来, : k- b; \' U+ T# S% V/ D# z& v
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ! h% z8 S  I1 p9 N
所以show.asp使用id=request.querystring("id")语句把数字读取下来
1 l7 p! @" ^( q2 ~- o于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
4 X" G( B' t9 Y. s8 ~向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" - j7 Z% U! h" m( ?$ b
最后<%set show=nothing%>
* X3 S# m. F/ {/ _. B: Y4 P2 U8 g/ J. j8 `; M, g$ _
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

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