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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
9 |8 }  D+ `3 R0 w  O( W7 l  g真NB..佩服ing .....
4 u/ x# \6 }% S" z1 f" o大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。( V! W8 U9 n* @4 D

- ?, w- e  g' e* g" }* r" i8 L* n, `同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
! v" F' z: T6 w* L. [2 q, Z6 M& X- s/ [. w. |# D
一、建立文件!
7 T4 J6 Q, M/ I8 j$ i; q最简单的论坛也要有几个必要的文件,就是:
* M4 U. i7 U1 A  N$ {
" a* G7 [& r' z1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ; Z5 b9 {+ z" g5 N% E# I1 C3 v/ k( ]( y

3 O/ M8 C2 v$ A; R# I: Y1 v% n2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 5 C! F3 Z6 d5 `9 s$ |6 U

% f3 ~/ c( N8 `  O; E3、发表帖子的文件----命名为:say.asp , F; x' x4 T* i, @7 k

( S4 O0 S3 b1 k4、保存发表帖子内容的文件-----命名为:save.asp
5 ^" c3 r" s  i
* l" K& r* I" i8 z! ?5 C" e5、显示帖子标题的文件------命名为:index.asp
- M1 Q/ T  J, O$ y- U) ~
4 F$ A2 ?; Y/ O6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
/ c) g3 {, h' K& z+ E7 P% G  Y$ G0 ?
; j% b4 A6 M' b! n3 l建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
$ U3 z, V  L3 s: c- d$ k* u" I! B# R
二、各文件的主要内容 / u4 R! |' w% b
/ _/ I, P# j* a+ M/ ~: v  g
1、bbs.mdb
, H: Q2 d' J* `! ~# I# y
! A) D0 a8 A9 V/ ?. H打开这个数据库,建立一个表,命名为bbs & W% C& t4 P0 v  r; W* t) I5 t$ I; z0 n* W
5 ^! b! g5 g" s) I# |
该表中有几个字段:
" o! @1 {! f1 c8 T  v% N; U, [/ j7 @& r$ t
id(自动给帖子编号),他的数据类型设为“自动编号”
; `5 r% B' k* {- ]% _' l' L: Q& b7 I+ Z3 M9 k
name(用来储存发表的作者),数据类型为“文本” ( x. M) k3 J- F+ B+ F

* N9 x. Y  b5 ~. I8 Ztitle(用来储存帖子的主题),数据类型为“文本” ; C6 o- U3 _3 ^: o- P9 ~

6 u: ?9 W6 Z4 I; l; ]- Gbody(用来储存帖子的内容),数据类型为“备注”
0 V" }9 _; s6 P% ]% l
; n" W! J4 |( S8 U" S" M2、conn.asp
& L8 ?) c7 b+ r% u源代码为: 4 _# v. J! ~4 {; A, N) A+ v2 n
<% , p8 q" J; d+ H6 j% G
Server.scriptTimeout="10"
5 I1 {9 |; L7 k2 _4 ]c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
. s; Y  L9 l5 C* I- c1 Bset conn=Server.CreateObject("ADODB.connection")
/ F, F" z: o  V" Fconn.open connstr
, Y, T. l6 o9 Z6 A7 w. J%>
, r, ~) ^/ l7 f2 m( {; R2 x
# a& K& N- d9 P5 I6 m- d) T这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
' }& H! ^# m4 k  w8 J
7 M- K( _3 n0 V6 O; V) {, q3、say.asp , t5 q  k/ ]: ^& ~" f6 ^3 q# C
: E9 ^, Z1 ?9 H
源代码为: . m/ E- x: b: i+ l6 X
<form method="POST" action="save.asp"> 5 U! `  q1 L( j4 H( w
<p>大名:<input type="text" name="name" size="20"></p>
0 W# v. S5 }7 {1 D<p>标题:<input type="text" name="title" size="91"></p>
; I" F. {7 j; q/ {9 t- t<p>内容:</p>
$ N" s0 K: U' v2 O0 O* N<p><textarea rows="11" name="body" cols="97"></textarea></p> * J+ ^( k* V* N3 |, o: s
<p> </p> : Z" ?* C% I/ D( e
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
0 v! Z2 ~0 M' A" q</form> % N; d; r1 l1 H  d, ~# X* k, k
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
% p" ^) ^6 b9 `9 G5 [不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
2 _3 v2 W1 D, t* {6 {+ f& m: O; g2 Q( t0 z  \# `' z  ~
4、save.asp ( n7 c% I! o# @* V, E" M

7 g. m- s; e9 Q+ S; P源代码: 8 u# b% P) a- @2 \9 ~( o
<!--#include file="conn.asp"-->
- z: p1 e0 r5 k# s) J( ?<%name=Replace(Request.Form("name"),"'","''")
7 r2 R6 r& w* s, ]# ~title=Replace(Request.Form("title"),"'","''") 2 T$ N/ {7 p, ]( J1 d
body=Replace(Request.Form("body"),"'","''")
2 y0 J4 |* T( g4 l4 W' ]- \/ n%>
5 T; \7 j1 c/ |1 ~. n<%if name="" or title="" or body="" then%> ) V  }  b- F5 B! f# j  }
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ! {5 T! Q- w1 F7 I. ]4 C8 t
<%else%> 0 D8 T: e# M* B
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
/ u. G* K3 A# S4 [- G1 k: y. G发表成功!<a href="index.asp">查看帖子</a> # C2 a2 }. l6 [4 @1 M" c3 R
<%end if * E4 k3 K* o: W0 h0 ]
set savebbs=nothing 6 m  Z- u& z/ ~2 t
%> ' V: S9 Z, X9 h$ Z) r; Q( x! |
2 J/ a- p. O  s) \. ~5 m" N
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
: p1 }/ }9 E! v6 U* Z7 N7 hasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ! P! [0 O+ K, v6 s+ z& `
接下来几句:
" p0 B" K2 X& ]) A0 ]8 k/ v1 Pname=Replace(Request.Form("name"),"'","''") : m/ c, N7 J: \# N7 B0 S
title=Replace(Request.Form("title"),"'","''")
+ W& E( l- H8 t1 Hbody=Replace(Request.Form("body"),"'","''")
, j; a) X* ?4 U
3 P8 |) |: g3 A8 ?3 |“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
+ S4 E) U% P6 k: `. D" ~7 M& l而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, ) U$ A/ I6 m3 y4 G' \3 a" B
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
1 m, [! }0 _( v3 s) O* e' g就是把表单中名为name的文本框发来的数据储存在abc123变量中   q; z1 D3 R5 S$ Z

) ?4 u/ G3 t) }接着:if name="" or title="" or body="" then 7 k& n; |, N$ a9 q( z
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 6 x+ b, d$ ]3 x! A) b6 {
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
9 z$ H' p# I- Q3 C0 F! w该语句属于html语法,大家都看得懂的! 9 _0 ]4 [" W8 G+ Z

6 I7 M" w- k2 v3 w. \( ^) @1 _"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
5 J3 t9 k- i: r“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
% g0 m$ F' X6 Q7 @- v发表成功!<a href="index.asp">查看帖子</a>”
  r5 K0 G+ F  c/ Y- f
1 Z, o( W) e7 m"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
" z+ o/ d# \  Z% Yinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
# E: m4 M6 ]8 G- p中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") % @, e  {* x' S* \! ~  T
values是“值”的意思
3 V2 o. B" I* ^" P* e9 @) V) i就是插入向量name,title,body,向量用格式'"&name&"'表示 , S6 A- a6 r: ]
  y- e5 C; M" x) [* Q7 P
最后:end if就是结束if……then 3 ]+ H2 j6 ~" J" C$ j0 W
set savebbs=nothing可以说是关闭掉:
  S! F- |* `+ Xset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 4 C( ?* j7 U. y5 @- h/ K

+ b7 b. d. {. a" n  y; c. I7 f
, ?3 o  m9 |# S- M5、index.asp * L8 K$ K. v0 ?0 t! `$ V
源代码: / i1 l! _" z% P7 t+ [
<!--#include file="conn.asp"--> 9 m" S1 _+ g3 ?
<b><a href="say.asp">发表帖子</a></b><br><br> , b- E. Y, B5 E1 l# x6 n
<div align="center">
2 ^# B+ F! S% h# C9 Q7 G+ X<center> 3 s0 \, V2 G" L8 W7 i
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
( g8 H% u+ z9 |3 _<tr> 3 \2 U: _2 b. l5 y
<td width="17%"><b>作者</b></td>
: o4 A% n! V  T& K, \<td width="83%"><b>主题</b></td>
6 Y) S# E; n, J+ G4 G</tr> % ~8 U  {, L' d3 `
</table> , h9 Q- G' [) d- o/ c  I# ^/ y
</center> - Q0 O8 J) k( {7 \
</div><hr size="1">
; i6 ^0 G( S* h5 _$ N, d<%i=1 & Q5 O, B% ]& r) \
set showbbs=conn.execute("select*from bbs order by id desc") ( k+ F5 p( V7 J) A& [6 j4 B  u
do while not showbbs.eof 1 P' G2 s5 y7 R9 g3 J
%> : k* i$ d2 s4 ^" u( i
<div align="center">
" O% m+ v- F: I/ O+ I; l<center> 7 ?  E) U6 }1 t
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
$ w; d7 j0 f- m/ p6 g<tr> 7 n/ X8 a6 ?9 E4 Q; D/ @  c8 Y' D6 f
<td width="17%"><%=showbbs("name")%> </td>
- q6 H; C* `+ _<td width="83%"> # R8 e8 H* F5 b* D. E; f- J& B
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> " F% M* B9 R* f+ m& j5 _) @
</tr> , X, a) T, M' v9 y9 T
</table>
/ |9 J, f5 L7 n4 Z% n+ `0 W/ U</center>
- k" c: [" v. |, i</div><hr size="1">
, G8 B0 I& X6 }. ^<%i=i+1
' ?8 A+ K# C! \3 g( J6 M0 X+ Vif i>50 then exit do
) a1 Q) I6 M/ z  o5 a8 zshowbbs.movenext
& X: n7 M7 V/ s8 T9 ^Loop 2 v3 A$ [1 H8 U- S9 D( ^
showbbs.Close   T& }4 z* w/ q  ~
set showbbs=nothing
: {" F4 O' ]2 v3 C# c%>
6 G; W- p; G8 B1 e- D
0 f: ]  \4 \6 w/ S' R8 Z) ]* V6 F, Q这个文件就不一句一句的讲了 ! U: M) E3 M5 a, j& ~2 w
主要讲精华部分:
; Q: |9 \0 r/ l9 f4 ~" p* t0 @) Tset showbbs=conn.execute("select*from bbs order by id desc")
* b; Z4 ]+ \4 `: R0 U意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
7 E+ B  \2 i& U7 W+ z还有这么一句:<%=showbbs("name")%>
& g- b7 E& m. o6 N& t! `: B就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
, f. e- O3 J( `  p  M! ]4 i% ^代码中的i=1和i=i+1
/ V' \+ E8 ~" W1 J! W! b* qif i>50 then exit do * i$ J- o# _5 _5 E+ h9 }3 y
showbbs.movenext
! }# i: Y) G4 d. J" H' QLoop : ], c$ B8 r# t+ ]
showbbs.Close
7 ]! r2 T4 k6 {/ v) m6 U* Gset showbbs=nothing 0 Y% j, [- d! |$ _% R' ]
! l0 s9 `) d' l% n, h7 t
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
. ]$ n1 K1 s: H0 Tif i>50 then exit do中的50可以修改 9 Q, ^* N, c0 m# D$ N$ C
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 ) J* N; t8 c. v* Z) Y7 w3 z
还有一句很有用的: * }5 U7 x7 t5 v0 ?: v: }! g* B
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
8 H& c. Q$ F: K. V7 t4 p/ t& X里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, & m& z% o# H; i
等一下在show.asp文件中就有用了
& t! h+ ?  a3 V
/ v& M* E; }9 `$ E1 m$ n* \/ M5 f5、show.asp ' k& k; z: ?( ^* m
源代码:
6 j8 Y8 F8 o6 A- A2 X1 {2 P% ?9 Y0 V6 L' H+ F) ^9 P) T9 ^
<!--#include file="conn.asp"--> ) }/ |! J6 T# o+ y7 x% i# l4 t. |
<%id=request.querystring("id")%>
4 D+ y3 f% s, Z: r, ]# E4 z<%set show=conn.execute("select*from bbs where id="&id&"")%> - x' B, F, |% y, @: g) G
<a href="index.asp">
) K+ r7 q( p% ~" _& Q, Z( p7 z<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 5 ]3 i, r1 E8 `8 C  I# T) X" L+ ~
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
! m6 E( `' D6 g7 V, }" O2 n' G<tr> " c: Q5 }- w  \6 {* `' g: M
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 1 D% w# e6 I1 I; ?3 _  S& w( m$ C
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
7 u/ S$ Z/ O+ M4 K</tr> 7 M0 H7 q# }' j% x3 I
<tr> # f" \; A" _! q, y* V& j
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
5 N5 B6 H$ F8 y( W) @2 P% I+ I</tr>
& V( ~, r8 H  W+ I</table><%set show=nothing%> 4 T# V8 V# j  x$ ^6 b# g

/ T& T% c' p8 j3 D- A3 R5 E! Q劲语句---精华语句: 5 H$ V, f1 ]7 F) R2 r
id=request.querystring("id")
! i8 [% c7 \" f5 i8 A; g在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
# M/ e2 @* \% ]" did=request.querystring("id")就是把地址栏中的id的值读取下来, 8 R: A& A* ]! _2 Q9 C- x
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
) {0 `" G& \" ~7 E: H% x所以show.asp使用id=request.querystring("id")语句把数字读取下来
5 ?* C+ o+ A, w$ D7 }+ o. C$ H3 s于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
. @9 N! x+ R$ i+ ?, M) U. E向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
; w$ E. b- B6 Y& u  q最后<%set show=nothing%>
5 O, ?/ w2 j8 N( F! c& ^' \
: F6 U8 A1 {6 j/ B  g好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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