返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
8 k, c( D0 w4 f* N- ]- k真NB..佩服ing .....- @' Q& ?+ U7 F2 E: m7 W1 o0 x
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
' B1 e/ `2 k* g3 i6 f7 z: s; h
0 `9 ?. _, ~2 }/ C" w同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 # ~% R" X) b, p
" B" u2 T+ I0 X1 }0 o3 N1 b% F
一、建立文件! : b* r4 p  ?# r+ V' q
最简单的论坛也要有几个必要的文件,就是: # \/ \6 Y& Y/ o* l7 u

6 }* {2 r- E: x. O+ W5 d" g1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
7 I5 o! _  i# |8 {0 l) A' E  Q& ]
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
: K2 E3 e, |! {! S; H( b- I0 q3 a5 A, E9 V$ M8 x
3、发表帖子的文件----命名为:say.asp + K! q3 w, x  L/ |# S; w& M, d

* ]: x% [; q" @( i% C4、保存发表帖子内容的文件-----命名为:save.asp ' t4 a4 [2 `+ F& Y' o* L
  J" M' ^  }6 D/ h( X+ T1 i
5、显示帖子标题的文件------命名为:index.asp
3 V1 \/ U. {! U8 M8 o1 [- Q, C1 C6 t: Z
7 K+ W8 Z/ @3 S, I6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp , f3 T% x% g( y' R2 C

% x% R2 @1 r9 k6 ~/ Y; R$ }建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" # U; w/ ]( U! J- e
: M0 X$ L1 `' M7 s3 S
二、各文件的主要内容 % s+ l$ K2 O" _- \% O

+ C- N2 C2 A, d5 V/ L4 r' N& k0 o, D1、bbs.mdb 1 T/ r/ q( ~) I7 @3 R. s- |6 b1 T* J

" }' e0 U4 Q5 _0 K) n$ w) p3 D打开这个数据库,建立一个表,命名为bbs
, q4 N0 Q  U( l$ J3 x# I' Q4 ?' v3 H' r# Y0 B& w
该表中有几个字段:
2 ?* A, F& ~. v6 F; G
# l/ j% q! v4 O, e/ \: V% Oid(自动给帖子编号),他的数据类型设为“自动编号” % F8 w2 b: f& g. m( l

- ~% A9 ]3 V4 k5 ]% o7 oname(用来储存发表的作者),数据类型为“文本” 7 O4 ^$ ^+ i: X; l! v, z' E

/ `- P" e6 g# C3 @, D( dtitle(用来储存帖子的主题),数据类型为“文本” & v/ L# T# _1 ^, T/ K- t
) d7 q- [9 k! S
body(用来储存帖子的内容),数据类型为“备注”
% T. W- t; B+ Z" P, O& L+ A* {) Z5 X7 [% S0 x1 h& u3 G/ j
2、conn.asp , J8 Y, B- I3 `
源代码为: " E& [% F2 P* [( J0 `, A
<%
0 g. f; W0 K. V9 Y5 o, x) C6 I. _, kServer.scriptTimeout="10"   U3 D, e2 q$ A1 a* ^% O3 Z
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 0 R. j/ J1 d- k' ~6 |' i, _* X
set conn=Server.CreateObject("ADODB.connection")
3 `) z/ z% |, b# yconn.open connstr   ~. ?, O# K/ U& ^( \
%> 3 |( \8 ?8 \5 |  S# _, Z* G
8 V" S5 v# ^6 Y2 ?6 j
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
- a0 z# I; v8 o: q
( V5 h& a( ?* r7 {/ {2 b/ F3、say.asp ; ]4 Y  a8 l# S' V

  r- T! U7 C. R6 i0 |源代码为:
" x. [/ |- Y8 @3 [<form method="POST" action="save.asp">
3 X5 U( `3 G# N  P. v' A<p>大名:<input type="text" name="name" size="20"></p> 8 K% Z9 `" w1 j/ w, _
<p>标题:<input type="text" name="title" size="91"></p> 3 ^0 _$ l0 u) A5 b( \  v
<p>内容:</p> 1 f- J9 \& k4 ]; m/ Q& L
<p><textarea rows="11" name="body" cols="97"></textarea></p>
0 O/ g( M; [" B<p> </p>
% U1 V2 H$ q1 ?: I) W7 e2 Y; ~<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 0 r8 Z# H* v9 A( N8 e
</form>
' S5 @- g0 }1 E! a/ g; G+ H大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
% F+ G, e0 d, X1 B不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! - P" a4 J+ |5 z+ F: v

1 Y7 V4 H1 ~8 m4、save.asp
* y- g2 X$ Q5 c7 V1 P# q! s- _& Q
源代码: " Z4 t( ]* s$ W! f6 J: A3 Z* d! C
<!--#include file="conn.asp"-->
8 r& D. `. o# i' X<%name=Replace(Request.Form("name"),"'","''") 9 ^" V2 o4 k+ Q+ q) y7 e
title=Replace(Request.Form("title"),"'","''")
7 e! f" x" {( K1 D) M. Rbody=Replace(Request.Form("body"),"'","''") ' _# G0 b0 Z/ p. R' |
%>
3 [% N" Q( [% o2 x<%if name="" or title="" or body="" then%>
. f, O' d9 H1 n2 w; k$ f请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
/ S7 N4 ]8 K: Z! z4 t/ b<%else%> : P+ q7 ~  u4 U( z8 }
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
% u" h6 K% }' w4 x' f发表成功!<a href="index.asp">查看帖子</a>
+ i7 j" T8 g$ Y( n1 ^<%end if 8 U1 z/ B: S: j3 X" h
set savebbs=nothing / f  N& w% I4 ?. M- r8 j8 J
%>
/ _5 N! ?$ E. h7 [) v0 m3 Q6 j( D! T# E8 u) M  C6 P( }
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! . _, \+ _; ?: H. U3 M8 a
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ; u% W3 M6 o: N& g  }
接下来几句: " K% g% y% l! Y- c* h  G
name=Replace(Request.Form("name"),"'","''")
- y) b) p# m& K! P7 n+ T5 ^title=Replace(Request.Form("title"),"'","''")
, X& X) S, U: ]/ n. Ybody=Replace(Request.Form("body"),"'","''")
1 q: b5 `7 _' H0 P6 ~& H+ o! A2 \6 E! o7 L: _4 B  t
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
  q0 \5 |2 W4 M+ c5 u2 |0 p8 t  N而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
3 }' M4 Q4 ~7 g如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ' }5 W/ v' @2 F$ \5 p& m
就是把表单中名为name的文本框发来的数据储存在abc123变量中 . s9 M" O3 t, ?6 m3 T' o0 L

$ i7 h& G# a5 q5 a) u接着:if name="" or title="" or body="" then 7 {* T6 g) y$ ?; A" S- R( h
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
+ G, T& i+ f8 K* l7 t“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 4 g( F" N: b: ?& |( O. q
该语句属于html语法,大家都看得懂的! 5 o. N) L. p# _; d" m: _! z
; D/ ^0 d( K! f6 b
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 3 |9 @7 A; Q0 O  o
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ' A$ u9 f- z6 Q6 }4 m7 @
发表成功!<a href="index.asp">查看帖子</a>” ' O2 B& S. {9 G) l
9 v' t) S/ O+ g- Z
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
3 A0 z9 i1 _2 K: pinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) + Y, {3 J! `: K
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
6 \; ?1 Z# G3 P3 C: |0 `* Ovalues是“值”的意思 0 g! }& z, \4 O3 I5 S. ~1 Q% J
就是插入向量name,title,body,向量用格式'"&name&"'表示
1 M9 X) o0 b5 {6 J" w  x
" T# J; \7 i  h$ s) O& C最后:end if就是结束if……then & Q' I, L. W" X2 [4 s
set savebbs=nothing可以说是关闭掉:
; I6 f4 G9 t' ^set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
' b2 G/ k* N! t0 W0 B2 l& {: S! z
; L8 @9 s' V$ c4 k' e
% |4 r, G0 o. T2 W4 D5、index.asp ; c" Y8 G- w) h0 O- ]- E0 j
源代码: 8 g8 B9 q6 q; `1 Q6 z
<!--#include file="conn.asp"--> 1 o% K, A6 e$ Q! h1 ?% u) V
<b><a href="say.asp">发表帖子</a></b><br><br>
, f7 j# U1 Z* ]9 g: T/ c<div align="center">
5 u& f3 X  Y8 p<center> ! f5 p( d+ _, i& I- a% u
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ( W! w+ [! q$ F2 G
<tr>
* |- F7 ~# ~  `0 m. O; K" ?$ S<td width="17%"><b>作者</b></td>
, f. h/ `. i9 N/ i( N# y5 V<td width="83%"><b>主题</b></td> 8 U. J* V% i! o7 O  X; S+ d6 W
</tr> : h% k6 h: o8 H; D
</table> 1 J+ i5 [6 w& Z* ]- \6 `( ?5 M
</center>
6 |2 w, s2 F% L1 X: ]</div><hr size="1">
4 E3 C+ q2 b( K5 m% J6 _* e% z! H<%i=1 & Y' ]+ f# I2 `
set showbbs=conn.execute("select*from bbs order by id desc") 1 ~4 j! h. k8 i3 T* Z# }
do while not showbbs.eof
5 p1 d  a; M  z2 h%> # |! S  [0 g7 j( H' y
<div align="center"> 7 Q8 K7 O, e+ |% i1 d& Q: f3 t( ?2 t
<center> 6 ~& M# i/ o$ L" l1 A1 Z
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
2 d7 _% X  O- b<tr> ! b4 Q% O0 c, L1 B4 b0 p
<td width="17%"><%=showbbs("name")%> </td>
0 u& m* K; V! E# l& o<td width="83%"> ; F$ F1 X# F' k8 T" [) e
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
4 x- U- ?6 M  q- u</tr>
1 K  `; q" u1 I4 Z</table>
8 ?6 u2 @! ^: j</center>
  S* E* ^1 f( N6 z. m. T; \</div><hr size="1">
) f0 j2 V8 ?  B3 N/ p( f1 Q8 ^+ u<%i=i+1
3 A2 n( h& a5 N1 b1 l: L7 wif i>50 then exit do
# }& p. k- E; P1 O1 Wshowbbs.movenext 6 r5 M- i% G2 z) }+ Y2 X1 @
Loop
2 v) e) F1 {( o" R! bshowbbs.Close 4 X( u, s; ]( d6 Z, G( g
set showbbs=nothing
* M* h2 b! }0 N$ `%> % n: g+ D2 t+ s, h" q. e, J
0 w  W$ T+ Q/ S8 Z* r
这个文件就不一句一句的讲了
# W0 l: O1 ?/ k" `: O0 W主要讲精华部分: 0 i* H' M9 @  j; }! l
set showbbs=conn.execute("select*from bbs order by id desc") ; d, d6 h( e3 m2 L
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, ; F- q% K  g# J+ ]
还有这么一句:<%=showbbs("name")%> - g5 @! l5 g! k; s
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs ) V! W5 o. U9 \& T) a6 t
代码中的i=1和i=i+1 9 G; E( U" p7 C9 ~9 y
if i>50 then exit do 3 x% l# }: C3 S0 ]
showbbs.movenext : U3 Q* g# y! z$ }- d& f6 L6 E
Loop
8 S1 F& T2 C# s+ B; sshowbbs.Close 3 j" ], |4 U# y+ U. q
set showbbs=nothing
% A( J* j4 H: D; U" p
1 s3 n; t9 ^0 k% }. V# d  W1 R1 m! q这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! : o- [8 }' Q8 \- D& E
if i>50 then exit do中的50可以修改
  U' M2 S" T( \但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
* F2 i' P, ~! Q0 E0 g3 t3 J3 N还有一句很有用的: ' i4 J% @  ]. u! `- i- \  V) B
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> % `; C2 T3 Q$ H' B6 y- }4 K
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 8 m9 [3 H8 t/ ]3 K2 m5 ]9 F' q
等一下在show.asp文件中就有用了
$ F. u$ X: w! l- e
+ a" y6 V) U4 s& K1 c5、show.asp
* m9 ?* A8 d7 e1 p  v; u0 F源代码:
* d' \  u8 S& E  S" i2 j+ W
6 N" @* j4 n' e% o9 ]<!--#include file="conn.asp"--> * v: \+ C! a7 j* i! l- r: J1 y; N( F. v0 @
<%id=request.querystring("id")%> * q2 |( _1 |0 X$ E
<%set show=conn.execute("select*from bbs where id="&id&"")%>
0 I" B3 |2 u0 C1 Q<a href="index.asp">
7 _% x) G# \) J: |  x) G+ Q& E<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
  k/ x5 H; \' j3 ]<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
4 @3 e3 t5 E, c+ u" A7 ]6 U<tr>
. A- d% g. D0 G9 p' p<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ! n/ f9 f0 p! z
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> & l. l# K1 ^% M2 }7 S1 t
</tr>
  b3 F8 B- v. j) _, y/ h, W<tr> ; ~* W* v0 J, Q# i0 V: t6 ?0 K( s
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
. c8 Q  C+ ?9 n$ v5 J0 S</tr> % Z( ?. S2 @' z* _6 s) [
</table><%set show=nothing%> ' f- x2 c% Y/ o5 p+ w$ P6 F* t
: k: N7 n; q' h' ?4 O
劲语句---精华语句: 5 p7 L4 ?4 p- J  T8 a
id=request.querystring("id") * Z" Q: S: J, [
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, . b5 J. s! X1 E/ \) [
id=request.querystring("id")就是把地址栏中的id的值读取下来,
/ F2 a6 M0 C; c4 `1 z6 d因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
5 L' X2 S7 r$ H所以show.asp使用id=request.querystring("id")语句把数字读取下来
( S1 F, |6 @* R6 x, c* p于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 5 ~; |  ]/ ]' ^7 k% M
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ' [& O; f9 _" z' e1 U
最后<%set show=nothing%> " ], @0 @- f8 i" X( Y+ s9 M0 ?7 R

  K, ]7 h. R+ t% [好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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