返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
9 |" p, j% |# L  f/ {真NB..佩服ing .....
3 v  l7 }7 \! T4 f7 I. Y大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。" S! {2 G$ O, t, P( l# F) p
. Y- A1 b* @: B6 G2 z
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
: Y& q- D0 Y4 x) |' Q) d0 B7 h6 }/ K/ Y8 O/ {
一、建立文件!
% ?/ z) }$ i! F- Q, l! W# ]+ P最简单的论坛也要有几个必要的文件,就是: : J# ^8 x: p: K) U9 [& K

6 y  |. y4 H  V; y8 n8 t1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb & C+ d2 n5 o5 I; A) `: s% j
" Q# J! b0 `9 _7 t- l
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
7 H/ s1 M! J2 M4 h8 D& h9 A& e# D" v& m& @& l+ f8 b
3、发表帖子的文件----命名为:say.asp * s) x# g0 |* B- h5 w; d

0 t/ j( E  ?- q" `; @' ~4、保存发表帖子内容的文件-----命名为:save.asp 2 S+ j, L  H* ~9 l

1 [' m" Z0 ^& T4 T  T5、显示帖子标题的文件------命名为:index.asp
( j6 \4 @6 I  L
+ k; m) t' a# k6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
& R) I% S9 t, X: p3 o0 V2 Q) Y
) Z4 l* ?0 G4 y% h0 K8 }/ r建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 0 B" O6 M& |6 K' \
; q4 P6 U7 e- t: F& I2 H- D
二、各文件的主要内容
& ]. t% z2 [6 }4 c: k# j
9 P5 K' `8 \* y3 g  c; c. G$ e1、bbs.mdb
/ A7 l( J$ I2 @/ o
" S! s# N- P! C  m" r3 ]打开这个数据库,建立一个表,命名为bbs 0 W; o0 d% R! X1 ?! c7 g

! C$ H$ f  w) D3 \3 w/ d8 |该表中有几个字段: . ?$ L: \  C! K$ b

! M( i8 K% q* t- [8 ]% Oid(自动给帖子编号),他的数据类型设为“自动编号” * k+ g9 y* Y9 F- e  {/ c# B* B

0 p; K! k0 q6 X$ O- X8 Zname(用来储存发表的作者),数据类型为“文本” " R% Q9 N* l% ]# b2 J
! Q3 C% C1 T/ ~
title(用来储存帖子的主题),数据类型为“文本”
5 G- K! i+ A# c" @7 h' u4 B+ [
. U5 Q, G& F; ^$ x4 Y: Pbody(用来储存帖子的内容),数据类型为“备注” & m! ^& |5 Z0 j3 y& s. D8 f9 B0 e

* \- |; j3 ?- y% V2、conn.asp
2 `/ K3 J5 y& G& I2 ^源代码为: : d7 l7 t1 H$ c; |% ]  ]
<% 4 ^- X/ a& h5 ~2 O" B7 P
Server.scriptTimeout="10"
8 Q; a; Q% O* B9 X" a! Nc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" " J; b' H0 K, a, Q
set conn=Server.CreateObject("ADODB.connection")
- F( m" Y( U/ p0 ?3 j6 I/ k. }0 a) |conn.open connstr   K& Z' N! K3 F
%> & Y' {7 c" |) f2 ?

$ X$ {$ w# H0 P, ~9 F这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
+ d. k3 a: X! U6 J9 w" @$ `: I3 i
  ]/ i4 P$ G8 `7 T3、say.asp
0 P  z; j0 q2 l5 m4 y! A7 k9 T" u
( D( L, B4 V# N( a源代码为: - [& y( K4 F9 L, y: ~7 l
<form method="POST" action="save.asp">
, U4 X6 x+ S' S* C# o" I<p>大名:<input type="text" name="name" size="20"></p> 4 T$ k% |  I! N: u) v
<p>标题:<input type="text" name="title" size="91"></p>
/ P2 v# ]$ p% M& r<p>内容:</p> 7 {/ i* K) A# y6 p0 f
<p><textarea rows="11" name="body" cols="97"></textarea></p> " w* o4 R& Z: k7 o+ }) H0 c- s. o. d( i
<p> </p>   s$ e+ f% A: H0 Z: |8 s
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ) k7 ?4 [' m8 H+ d+ \, k+ x& Y/ w
</form>
3 I# i/ c) k3 K# \$ Z4 |; E! b) p9 S大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
( b/ ?( W' ]5 h( i不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
: o4 ]0 g6 K; v# N" l! j5 L, {4 g* B7 p+ D8 A- ], Y3 k9 B- K7 z
4、save.asp ( J* s$ r. _7 Y+ ?
1 s" ^  P8 g1 @# l1 B% ~  A
源代码: + n4 C5 g2 S* G
<!--#include file="conn.asp"--> & d- R0 O4 j6 S  Y# }
<%name=Replace(Request.Form("name"),"'","''")
3 _- m+ l& p9 X  gtitle=Replace(Request.Form("title"),"'","''")
( f0 Y. a4 r! X8 g" N4 u' L6 t! Tbody=Replace(Request.Form("body"),"'","''")
. N0 z) D) @; q0 o% h! S%>
" Z- ^  ~. a4 D" k; S<%if name="" or title="" or body="" then%>
1 o9 T8 R2 F) B4 X! o/ _请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 8 ]/ T( G$ _) M0 R% S! W( S! y2 G
<%else%> 1 N# y3 f* h, r& u
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 2 h+ q- S$ f) M2 I
发表成功!<a href="index.asp">查看帖子</a> + P/ x* e8 v. D: N& T0 E# m
<%end if 0 w+ a. ]; h+ S0 S& g
set savebbs=nothing
( F) H( m2 N! I9 A: T: c1 L%>
4 I  R' d2 [( X  W. v' B0 y
; u9 D) B, w) K第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! - P) L. P9 T* f! ]+ ~8 q$ S; B4 a
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, . I. Z, H5 ]9 S
接下来几句: ) {5 V  K4 @" p( g+ y+ o. s9 t
name=Replace(Request.Form("name"),"'","''")
- Q/ C3 ^0 E- ]7 N  R7 @  t9 B# H5 ~title=Replace(Request.Form("title"),"'","''")
  j' ]# C! d* c0 tbody=Replace(Request.Form("body"),"'","''")
) ?! ~1 \4 z$ t3 J+ S4 h8 W: u
" A5 k4 W8 M1 B! x9 r“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
. o6 \/ G  o! F9 ~/ c) p" i0 ~, e" Q% l0 ~而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, , ^+ ]) ^$ ^# {
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
& z, ], Z7 e+ P7 T2 _就是把表单中名为name的文本框发来的数据储存在abc123变量中
; \! s$ k; H/ o% B
  ~% z/ q+ r& M% |% q接着:if name="" or title="" or body="" then
5 N9 C4 i8 T* i+ V! ]  n/ c判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: , |5 I' w' r9 [4 o7 Y
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” & ]; E7 @3 O2 k- e7 t: f
该语句属于html语法,大家都看得懂的! 3 s( L4 G. G. g% r$ @
# c: j6 g2 F' s5 u2 R! d, T
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
8 O+ Q6 m' H: X# l1 I4 Q“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ) s& C' c0 Y1 E7 C
发表成功!<a href="index.asp">查看帖子</a>” % C5 E5 l9 D; e# R* a- p
& }$ A9 o: C. X2 U
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 7 X) h3 y- ^: b* ]: [
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) + T. [2 t2 }$ |6 ?5 m( L+ o
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
) K3 z% n, {2 J& bvalues是“值”的意思 ) z% Q% H* x+ D: J: B7 z# [
就是插入向量name,title,body,向量用格式'"&name&"'表示   [& `) l9 m' m
) t: w# m4 G- j) r
最后:end if就是结束if……then
! j" L3 A$ f: b6 a* P& Zset savebbs=nothing可以说是关闭掉:
$ k; ?1 M5 e3 ^& Q8 c' Rset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") , p/ m; N! _; s0 t7 K# |* o% H) g& g0 l

, S  R5 K" p1 C# o
' H$ o9 K0 F. l7 b- i! I0 h. E5、index.asp
9 }: l, _# B2 G7 V6 B8 m# K  q# H源代码: ! y! U4 J$ s! M! |3 K
<!--#include file="conn.asp"-->
+ \$ q- @4 `. a2 D9 |<b><a href="say.asp">发表帖子</a></b><br><br> 1 J. G! @, t. J9 X1 ]
<div align="center">
7 ?# B- j' _; k1 f<center> + E. D6 {2 B( y+ f; b/ P& l& J0 v
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> / _" P" J9 o0 z
<tr> & k: C% h9 A& z
<td width="17%"><b>作者</b></td>
1 z) ^+ T0 }! a# S<td width="83%"><b>主题</b></td>
4 V, r6 R# @; C' x+ {; r</tr> ; \2 A" P  J6 b( ~0 F8 K6 F
</table>
( G! q" v( x( v$ M7 ^</center>
8 G) b7 G) R: J, A% G2 s7 ^" j</div><hr size="1">
) _0 ?, Z1 n; B4 e" R, M<%i=1
' x+ R& a. {' q$ l- Nset showbbs=conn.execute("select*from bbs order by id desc")
  Y3 ?; B. s% w: F4 Fdo while not showbbs.eof
7 L% e# r" x. t8 B; o3 ^% V%>
* F6 H& Y' z% F0 q) K3 K' S<div align="center"> & p3 A7 J8 z  v# Y
<center>
+ `* n" N: T: o5 J) W/ `<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
4 `+ n; D( R3 V8 N; O& B<tr> % X" S4 ^! x/ k. D: _7 ^$ t  L0 C
<td width="17%"><%=showbbs("name")%> </td> - y# n( K. |: r: E5 P9 ^' }4 r
<td width="83%"> 4 u. V2 }4 g, y8 [3 @7 C
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
& L- b7 u" C, k* w* @: p' S# L+ {+ B1 e</tr>
5 H0 a( ^5 C$ J</table> 5 A. S1 A. E+ a, W! v
</center>
0 A; J# k4 J9 y3 f: q6 a</div><hr size="1"> % {& B% ?$ q3 ^" T5 c3 L: h) u4 P
<%i=i+1
% ?4 \% w! N. `0 d9 S9 Tif i>50 then exit do $ @  N! D/ o0 k
showbbs.movenext 4 d. `" M8 S. m0 C- {
Loop / M( A3 X8 e1 T; u  b: Z
showbbs.Close ) U/ y2 Z, n7 V+ v4 B  ^
set showbbs=nothing 8 L  i5 P0 I, q
%> + ]3 G9 s. g6 C5 Y& e
2 T3 D/ \3 R9 ^0 J& s! p4 k6 c
这个文件就不一句一句的讲了
5 r1 G* j/ Y$ s主要讲精华部分: + ]  y5 o- i4 ?; C' a( A5 o, c
set showbbs=conn.execute("select*from bbs order by id desc")
6 v. _% C$ z) M2 i9 N意思是:向数据库中的bbs数据表查询数据,并以id排顺序, / |: b2 \" H% J  X. [4 L2 T& H. c: Z" v
还有这么一句:<%=showbbs("name")%>
7 W9 m. J: i% u  ^) Z( ~- T, M; \就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 2 g9 [: i$ z( y3 m+ k' r
代码中的i=1和i=i+1 . n, i7 c2 S- @4 C* ^
if i>50 then exit do
; F3 {) D5 r7 ]' e5 eshowbbs.movenext 2 I4 J# U. y9 j; S/ p. X
Loop 4 [5 b3 `4 \/ O7 q5 a
showbbs.Close   Z0 d% C; e3 A5 ^; D2 `. ~
set showbbs=nothing , I$ K, ]5 ^: J/ \, b8 b6 @

5 T$ X3 Q! o( F9 ]& a- B8 O这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
' N! f$ w- {/ }7 l6 ^$ nif i>50 then exit do中的50可以修改
/ b) t3 T: D9 o, l1 G但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
1 V' N1 C" U; H- i# v: _0 e& m还有一句很有用的: , }6 Q& P: l; u
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
( G" {) {. L. @6 I$ |4 Z+ z里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
' u  D& y9 G) J6 g/ F+ G等一下在show.asp文件中就有用了 % F6 T% m; }9 ?) p; V3 A
+ l( Y; C4 o' ]0 D
5、show.asp
  K3 `7 O* u+ p* U; L, e源代码:   N; D- Z- ?/ D8 k+ G
! B* n  L0 s4 B% K" D6 |' o8 s
<!--#include file="conn.asp"-->
4 }" G  W1 C/ U2 }<%id=request.querystring("id")%> ; F/ n0 [6 I9 T1 g* l0 p
<%set show=conn.execute("select*from bbs where id="&id&"")%>
% o3 X& |( J0 [( U. b. \9 w<a href="index.asp">
- Z, j' u/ R+ S<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
8 b. B) m& `& E( ~9 [- I& z) o/ ~  ^<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> " A) v5 T9 Q/ R+ h/ q3 y1 u5 Q  m6 z
<tr> - l; a/ X0 x- `+ G
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
, t1 i1 ~  D2 B* F; V7 _+ s3 L9 o7 R4 T<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> # H( u! ?/ Z" o
</tr>
! G, O1 y* U3 k) l<tr>
' ?( R4 ]1 s1 s+ P. S0 I<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> % y  v* P5 J( V" x+ {
</tr>
' x, W0 F3 E- M/ E</table><%set show=nothing%> $ [6 Q4 _9 R% U: y8 @. q  s: ?$ d
3 N- n  r  H- |0 o
劲语句---精华语句:
4 d$ d, a, M9 |  kid=request.querystring("id") ) v( O9 G) f8 B5 |0 d5 B: I0 a
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
/ C, @  n; v& B& x# x6 Aid=request.querystring("id")就是把地址栏中的id的值读取下来, 8 n$ l0 G. c  O7 V* K! l- B
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
/ v( Y9 E- i; L( [" T+ }所以show.asp使用id=request.querystring("id")语句把数字读取下来 3 T+ e2 P$ o! X$ Q4 U7 Z
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
% p( x% E8 @. L2 t3 p, }: L# H向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
9 W7 W$ B* K- c! E5 ~" a最后<%set show=nothing%> / W- N4 F) W! S& q+ K& l; w' @8 a* T: A
( e6 @% F7 c9 I
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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