返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西( z7 t+ f& i( T
真NB..佩服ing .....5 ^! b+ V  Q; w
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。' h; _. R4 @* H+ C
. ~) N9 A% A9 j( b* T9 k
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
9 P4 h7 h5 l/ ]0 p# w
/ h  d. `3 F4 V/ T! Z2 A: y一、建立文件! % Q0 I8 I/ E5 X' ~4 {
最简单的论坛也要有几个必要的文件,就是: 6 ^( T1 L( `; L$ M

5 n' W; T$ M4 b4 \( m1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb / R/ _+ |+ U$ M4 f- \  J
; [' ]: }9 v3 \# w: s$ @4 T
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp ! f3 A- U2 M9 h- j$ v$ i1 {0 E$ Y
7 V# L9 h. x, n* m' ^6 y
3、发表帖子的文件----命名为:say.asp 2 ^, C8 l! v) y6 d* K3 U
8 ~. d! Y- I5 L; Y0 W! ], B  i
4、保存发表帖子内容的文件-----命名为:save.asp - V! p" Z5 Z! R: W
+ S" C5 u1 U9 h) b, _0 o
5、显示帖子标题的文件------命名为:index.asp
0 q4 n! x  Z1 T* w: @
# M. B2 [2 m1 [) K6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
2 K% K. h+ ?" l3 b4 |  a1 |9 u9 A8 v% P" V( s8 W% c
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
  _8 J; Z; d5 g
  }4 O1 C/ r* Y6 D5 D# h二、各文件的主要内容   D' }4 T" }4 P. y/ M/ ~) Y
2 r6 `7 y* ?  g& a; N( |
1、bbs.mdb
( a* b! I( Z1 W$ U, h7 M# K" [: v/ c
7 t  x1 T, R- L( N1 W6 ~/ v( P打开这个数据库,建立一个表,命名为bbs   @; J' o4 O2 F! @7 L4 o3 H3 E

! x4 w9 ?) u% h该表中有几个字段:
! O3 s4 F: d5 V7 u% G) C7 G' u, J7 J
id(自动给帖子编号),他的数据类型设为“自动编号”
/ `% p+ w! V9 T4 @$ O7 I- \$ @- e. k* ^! y
name(用来储存发表的作者),数据类型为“文本”
# h" ]' U! f4 I, Z5 _
& t# d1 C; {! K: Atitle(用来储存帖子的主题),数据类型为“文本”
3 o' x+ r' o* {7 V
5 ?* V% U! ~& P4 N% k: d# V/ Gbody(用来储存帖子的内容),数据类型为“备注” ' g1 J) V3 L$ h4 Z1 z
1 {; ^, l; n: a  J& E
2、conn.asp ' Y- `) a  j& X: J
源代码为:
& q4 N7 j4 q. m+ X5 L<% % N, Y: E" _0 M$ W9 h" i. F/ W
Server.scriptTimeout="10"
3 w. a) X2 M0 bc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 4 \( y7 Q+ Y; `! E+ Y- e* Q, e8 T
set conn=Server.CreateObject("ADODB.connection")
! O, T, Q' D' ~# v) Bconn.open connstr
* n' F3 C  s1 \9 S, k; m, K. I- O1 ]%> ) u: ]( o- v+ c8 k  |9 `
/ L! b& k9 @+ A, Z# ]$ `
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
0 D0 T+ j2 Q3 x% P- d; S7 k
; L. ^! ^& U9 R  J+ L0 L3、say.asp
) p/ A) b% t! G; E: D
, j4 Q  I; Y- ]1 w/ a! L+ C* t+ ~/ X源代码为:
0 e! n1 g8 ?4 i2 G" w4 L4 `: m<form method="POST" action="save.asp"> 0 r. |3 I) ^! c" X- L  R  u; V
<p>大名:<input type="text" name="name" size="20"></p> " r& v( x" u* G9 D. }5 ]
<p>标题:<input type="text" name="title" size="91"></p>
4 S: W3 A+ D) K4 N) ]+ X* a9 a<p>内容:</p> ; v. C  t( Y: c$ A
<p><textarea rows="11" name="body" cols="97"></textarea></p>
/ U, d7 |& Y( {  v9 {+ Z/ f* u<p> </p>
( M& g, m2 `: B# }$ u4 K! E<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
$ E  I* q% Y# k# X' j2 z</form>
9 ?, R! R$ f% l! t5 U1 j% F3 O大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
/ M" l! c; q! G+ E, y1 S不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! + y9 A& T+ Q0 \" T: X' a& J- C+ U: Z
7 D  |# T) E/ u  a
4、save.asp 7 O! R5 s/ }( C

' L: c) [9 T' h1 u源代码:
2 ^. T- `" l, x7 G6 ~- o- j<!--#include file="conn.asp"-->
5 f8 u0 I* |  V! L3 l<%name=Replace(Request.Form("name"),"'","''") ( ^# i5 z0 ]* |, ?2 ]0 v% o& B  E
title=Replace(Request.Form("title"),"'","''")
1 F$ v" q8 b7 ~% M# f: T. `& j9 Sbody=Replace(Request.Form("body"),"'","''") 8 L  k: X% F% ^" N
%>
; u! _1 k1 N1 f/ X8 f; {' P' e% x" H<%if name="" or title="" or body="" then%> ' G( u! G/ o9 ]
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! % ]5 E4 k7 c  G. [- l
<%else%>   v: ^7 y# Z( O" a
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
9 z& |# [& _" q! x2 T% q发表成功!<a href="index.asp">查看帖子</a> / c2 h, A1 H9 V+ s2 `+ ?( r1 N
<%end if
3 Q( V4 c7 ^- p: ?; ^8 ?; lset savebbs=nothing 0 s+ D5 h; m. x7 E" }
%> ) P0 x1 j% \$ E# ]. s

) c: g3 t; R+ C$ W第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
$ V5 R* V2 J' n; ]/ L6 z9 Aasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, " ^# _' j$ s8 H; Z1 P, U
接下来几句: % o0 _& O4 V$ |. T
name=Replace(Request.Form("name"),"'","''")
5 ?; W- X4 x* F" ]4 j. {7 Vtitle=Replace(Request.Form("title"),"'","''")
8 ^" I" K9 a. ~( p! E$ l5 ubody=Replace(Request.Form("body"),"'","''") # i6 h' {) I& R2 X: P3 R* e" a

0 ]6 c/ p; _1 D4 g9 r% x  J“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 8 t( O, j: `& K4 s) d& e7 t2 O
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, ! `% \8 p+ g- i9 ^
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
# y( V. {4 G5 t: _' R就是把表单中名为name的文本框发来的数据储存在abc123变量中
: e" S& Z$ {1 F9 A/ L
* K& K  S9 P" d$ x1 e6 U接着:if name="" or title="" or body="" then
. _. ?8 m, F2 {/ K判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: . t+ v. B0 Z) T% T$ [/ I
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 7 G, y  Z4 t% d: o+ o* a
该语句属于html语法,大家都看得懂的! 5 ~& u, [! E) C8 v8 v4 N

* p- ?6 \& p4 k3 f/ E5 U"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ) i( G$ j* F. Q9 F, \2 z" V/ ]
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
: V/ ^4 N, _* N0 d; n发表成功!<a href="index.asp">查看帖子</a>”   h  B2 m# m! v9 J
8 C# T* `* ]) p# H
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 9 h! Z; H( V2 f% x
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
& U* B- O0 B2 n/ r* b中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") . g9 O8 L6 o) s& `  H
values是“值”的意思
- f! c9 o1 g# t就是插入向量name,title,body,向量用格式'"&name&"'表示
# D: p9 v& X& J, W, I# T$ ]1 Z: x+ k! R, |
最后:end if就是结束if……then 7 T$ @1 C9 ?1 L4 ^
set savebbs=nothing可以说是关闭掉:
* Y( q8 f% N8 s+ Dset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ! ^9 R* H8 H0 w' v, D
; V  G! T; T+ g" t

2 b5 ?, Z% f7 e. k5、index.asp 6 \2 ]- r" V$ n" f* Q
源代码:
% A7 Q8 b/ p, y* F1 k  ]<!--#include file="conn.asp"-->
( ?2 f. J' u5 D4 S) c$ Y7 r<b><a href="say.asp">发表帖子</a></b><br><br>
" e1 J( m! \$ W9 ~<div align="center">
* i! j4 `4 G$ a5 f1 I' v% y<center> ' ^7 O! i) f: q! Y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 7 a. g6 g3 n2 W7 M4 m$ J# [+ n* N
<tr>
. T' ]  |5 _  q. l6 q, ~( @<td width="17%"><b>作者</b></td>
+ }  {* m# V9 o$ h. Z* f5 W<td width="83%"><b>主题</b></td>
5 ^% w. f& R* r& K' X</tr> 2 X) m$ L! D% O! Q: p( g1 H
</table>
% ~# y& \( r( c/ H( q6 m0 p6 \$ L</center>   w+ U4 K# X2 f; c. h% O; R7 O
</div><hr size="1">
3 {/ R, f' d0 @<%i=1
8 n5 [8 U' X& Zset showbbs=conn.execute("select*from bbs order by id desc")
/ H; J, c% y* U' Gdo while not showbbs.eof
- i8 C3 e: m) x9 b( C1 G%> 2 ^) ]: x# g' w3 p( y4 X' w
<div align="center"> 7 D; u/ D, i% ~! D6 l7 Q
<center>
  ^( S& J( B. H9 ]) D<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 5 H  f' v' x5 m+ v1 T
<tr>
' s0 T5 R9 J# t3 H; m<td width="17%"><%=showbbs("name")%> </td>
' c7 S9 R& e: K<td width="83%"> + o: q9 H. W: y: `  r* _1 W$ i, S
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
' W* X. H+ t. U# s( o) _* V</tr>   O5 s4 r  C  H+ F, Q
</table> ' }1 {1 S  }8 j0 e7 g
</center>
, t$ V, V, _! o</div><hr size="1"> 2 m" @7 z; [# t
<%i=i+1
  t: U& F( h7 T; k4 m# pif i>50 then exit do
* ~7 c! u9 ~! }3 y; t* [3 B1 Y  _! }showbbs.movenext
  J& H. E, P% v( }* e" bLoop
- F; m# a8 {! n$ V' Pshowbbs.Close
; X, U. [0 X) M& Q2 gset showbbs=nothing $ _+ a: Q7 ]2 T& [. J
%> 4 V9 [# @$ Y/ s' i

# m) a( R: ?6 L5 o& a这个文件就不一句一句的讲了
- D4 l, D$ T, @主要讲精华部分: 9 z& I5 Q, Z9 [* z
set showbbs=conn.execute("select*from bbs order by id desc")
" H2 ]4 _8 \/ V意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 6 E$ M- _4 N- U* z; P
还有这么一句:<%=showbbs("name")%> ! m2 {. C9 ?/ a6 P+ l! T. i
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
& d$ }! Z8 \7 ~* W3 C1 t3 e代码中的i=1和i=i+1
0 F0 }6 ~) q" {( B$ w0 lif i>50 then exit do   r1 R3 A+ Z- ^. |
showbbs.movenext 4 j- p6 b9 H7 r2 u! i
Loop . ?/ }% `8 R% S# U& t$ A0 a
showbbs.Close
9 b2 ~) r, ?/ ^set showbbs=nothing " w9 J2 ]* t: v

% c) a8 C* ?. X# q# N这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
* p; m- v- H0 a* T  ^# b4 V) o/ jif i>50 then exit do中的50可以修改
! P9 O* E4 m- E2 Q+ W  X# B1 l但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
3 |5 _1 V0 K" ]6 g7 q& D- E还有一句很有用的: ! i* _  a7 N- l+ S7 s4 O1 r
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
; t& H5 g- {0 V4 ]: |里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
+ I4 Y$ n3 b* U; K等一下在show.asp文件中就有用了 ! w( r# D7 ?' U

  E$ W. Y  Y& J5、show.asp
% o, e- n6 E1 d" \/ x) S4 D0 s5 A% y源代码:
1 f: o5 v. n$ Z8 f5 L, t, w* F& J& H
' K" L) A# U' L  e<!--#include file="conn.asp"--> 6 A: b1 Q. a4 @; V6 @7 Q/ y2 F  E
<%id=request.querystring("id")%> ' t7 P. `) N  j4 D* r
<%set show=conn.execute("select*from bbs where id="&id&"")%> 4 x1 C& h3 X3 p+ v; h! ]' y
<a href="index.asp"> & K& z/ I  v2 Y6 r4 y  e; j, y2 j
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
; b- t2 S# s+ ]* S$ p* C, {. J<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 7 }1 p! |% q: X; i
<tr>
' c" w7 e7 a  k$ I4 x<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
, p1 }: N! r: {/ D<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 6 u$ {) l% b- [4 Z2 Y/ c; E) r* S
</tr> $ S# G- e6 e' y) b
<tr>
. o# Q2 Y. v$ m2 M<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> + x2 [! F' D  Y3 H/ o
</tr>
% J6 I+ M  @) L  |* m</table><%set show=nothing%> 9 C4 D9 l3 d6 M9 A6 T, E; d

2 g- X5 X) t6 ~: _( _' M劲语句---精华语句:
7 c- K* k; J0 ?5 W. B6 F: a7 hid=request.querystring("id")
& n/ v; V2 w* U5 s& I在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
* k& h8 {& D0 @2 y( H; G/ x- L, Jid=request.querystring("id")就是把地址栏中的id的值读取下来, % h& u$ ~9 |0 u4 i# R+ P6 t0 d! H% n
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
  m; Y! M: m+ P3 h% w3 x) u8 F所以show.asp使用id=request.querystring("id")语句把数字读取下来 : x- y" C5 \' z3 ?8 ^
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
1 Z# n' q1 @2 s向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
! J8 E) E9 s, y5 g+ y4 F2 T最后<%set show=nothing%>
; _7 o! W, _5 m( r4 |/ E  w& u" L: m; [8 B5 [3 a/ m& }
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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