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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西5 y8 {% ?  y% o5 I- N* q( S/ A
真NB..佩服ing .....# F6 n( `& ~2 i  m) V
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
9 {7 T! I+ |- O) [- j
- n0 T+ B# @1 s9 S+ Z, W% e同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 + F( ~0 r6 c( E" Y* Q% w
& I- S/ _, `8 F. r" J
一、建立文件!
4 B  X& L2 a' s* @4 v- s; |最简单的论坛也要有几个必要的文件,就是: $ \. j, m9 R( b8 X$ \/ v; t
5 i# |7 X, w0 W
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb . i+ p& t" Y. @" s* g( Y

  _# w" I8 a  z9 S9 W: ~2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp " m7 O" {) f) v$ a

' n* a# ~' u- f: S3、发表帖子的文件----命名为:say.asp 7 s1 x: c- B4 V) s7 I- [
3 g  `& f. o0 [7 _8 {
4、保存发表帖子内容的文件-----命名为:save.asp
* M6 s1 S6 t; Y& h/ b% ?
* s' I. c+ o$ [% e2 J5、显示帖子标题的文件------命名为:index.asp ' O* _% A( H5 P8 b0 ?( Z+ @
( K5 R: K6 w: w' e
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp * \3 A4 \1 K2 y6 D3 y. }
  x- E% w2 i* F( O
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" " F- T% e. l0 Q7 c- G
8 L) }7 y( \; l7 D
二、各文件的主要内容 " Z' \' U) ~/ H) J5 k( z
1 N  a9 W+ Y. J7 j: d5 X
1、bbs.mdb
, E2 e* L: J9 T4 W8 e
1 `/ Q1 o$ S+ |打开这个数据库,建立一个表,命名为bbs
* T' Y/ e( U- M; h2 b, j/ ]- c6 T3 H$ \5 _' z
该表中有几个字段: - x4 i# {% U9 W+ |! [) n
* r0 {$ c5 T( _) E1 D- V; o
id(自动给帖子编号),他的数据类型设为“自动编号” , Y8 {( D* r: h
$ T! ?$ ^7 \8 N& H8 _
name(用来储存发表的作者),数据类型为“文本”
$ x. M" l  z6 }
+ y) I: [3 v$ c. \title(用来储存帖子的主题),数据类型为“文本” 1 T8 H6 i. `* ~8 K( R
8 _, {2 x" l8 J$ z
body(用来储存帖子的内容),数据类型为“备注”
' C+ v0 c$ ?) q. z4 p' J# I% V$ d* x
, x5 g1 I" a5 y  |: k2、conn.asp 7 V6 e- ~- |5 v8 \: t& t; Y/ v6 O& c
源代码为:
" B. z3 D; B! Y% U$ c4 W<% 4 W) k! ?; Y6 G7 w
Server.scriptTimeout="10" " [* {: k& `( ^* N: f0 ~+ |2 q2 E
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
5 S( o& K- |; U' ]% ?1 d# Pset conn=Server.CreateObject("ADODB.connection") , ~# u0 w, U3 l' \2 s& i; Z
conn.open connstr
- W! S' R! q+ D( N  t%> 2 I, L8 r* E' n2 J6 h

8 M1 b) @9 ^8 k3 a这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! & K! W2 P8 i! T/ }

' X( Q& n- ^* N# l2 r0 U7 p. o2 ]3、say.asp 5 I: Q7 M. ~4 }
/ D# S7 {) h: t: e  n$ L
源代码为:
) L$ o1 u' M. G<form method="POST" action="save.asp"> # D4 Q0 b% o" |; r4 _
<p>大名:<input type="text" name="name" size="20"></p>
0 P0 ~7 I& n8 N% Q<p>标题:<input type="text" name="title" size="91"></p> 1 d5 ]3 m; X1 k
<p>内容:</p>
5 y( q2 \$ a5 J6 Z' w! g<p><textarea rows="11" name="body" cols="97"></textarea></p>
& i1 o- y# J. B0 j" [<p> </p>
' C3 M2 C% F5 }" L3 X7 n* H<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
  K  ~$ k) X4 b  R! ?, u</form> 4 f% N, ~4 \* B) I
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
! r" l: ]7 m/ z) k# \不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ; F8 f& ]' ~6 y6 {& J
+ B$ m; I% b( @; M
4、save.asp " `1 h& q* y' m' W2 |) m

  k  t% T+ ]  J1 h/ U+ `7 W源代码: * J6 l- E& q. A, M1 ~+ r2 u
<!--#include file="conn.asp"--> 5 U* T5 ]9 [3 v) }$ q, K3 q
<%name=Replace(Request.Form("name"),"'","''") 0 i* ^8 `  T) J$ t, a2 s& V6 x
title=Replace(Request.Form("title"),"'","''")
( D/ c0 S1 j9 \+ G! ubody=Replace(Request.Form("body"),"'","''") % y/ u! f4 e) F+ U) g) H) u
%>
# o. v  H8 z0 y) ?9 N: d<%if name="" or title="" or body="" then%>
; y+ b8 f5 C3 c请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
, k8 g3 w# x& _: S# E$ ?$ s  X<%else%>
! M* w' u1 B3 x+ ^$ u<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ( a/ g: R5 e5 D% Z( n; L
发表成功!<a href="index.asp">查看帖子</a>
& u0 O4 H  E* B6 t<%end if
  K2 @, x+ V& }3 ?' E. y/ \set savebbs=nothing * {, G& E$ y# w
%>
- [; _# D+ W/ ^5 `) I/ R/ |7 {1 W. V" f7 }3 y0 B) {
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! $ |0 G, @& U( `
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
5 y( ^. v/ k2 I4 t: P1 r接下来几句:   B( Y- |- x' |. W* k0 X
name=Replace(Request.Form("name"),"'","''")
+ @6 _$ Q0 x" C. o% z$ ntitle=Replace(Request.Form("title"),"'","''") 0 Z/ a" e6 [) H! W: t; v& Q; p" l0 m
body=Replace(Request.Form("body"),"'","''")
8 r  M7 |5 y/ ^& `) E7 h
* k: t( r; R% ]7 W- A“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ( u2 J0 Z' `& y% `
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 0 |8 x( b. w6 E( u' L# F5 B$ k8 ?
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
9 C6 w' b( x9 Q' o. h就是把表单中名为name的文本框发来的数据储存在abc123变量中 2 a* `+ P% m1 P( V+ z" c5 q; Z
! ~5 y1 i' y4 }; G6 _* R
接着:if name="" or title="" or body="" then
3 o) P8 m, U7 ?! N3 F判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
6 I: T+ W, ?& B* M' q) U5 P* E# V“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
9 V. v" V% k: }- B该语句属于html语法,大家都看得懂的!
, `$ H/ m# ?3 i3 p: `
( q3 _$ {1 J# r# ]" r9 {5 p"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
/ E8 e$ B- F8 \2 T) A4 C4 S“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
! ]+ O+ m* t  y! e, I. ]8 E8 L" s发表成功!<a href="index.asp">查看帖子</a>” 7 H( u; l% N5 }+ y; j2 M( F
) E" k! C+ z+ W; M% M# p$ j
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
( v- {% r* q! L1 cinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)   [+ J7 i9 v5 [  Q9 q
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
, [+ ^6 D# p+ P% H/ o3 m& _8 Bvalues是“值”的意思 , v7 W0 K# q) J# \  |  s. u
就是插入向量name,title,body,向量用格式'"&name&"'表示 4 ]: d0 y( ]* ?! h

. _$ ^  n9 G7 f% P  r最后:end if就是结束if……then , l3 T: _& U+ I/ M1 {3 b
set savebbs=nothing可以说是关闭掉:
( [+ p4 s+ R2 H0 N# Y' S; kset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") , Z  z  Q$ O8 U# Y; A, k. P
( L2 S% O$ C' c
( i. Q% h  Y7 C1 W8 B9 E
5、index.asp # e; j. Y. B3 @& ~5 X# `
源代码: * l# D* z, F1 ~$ Z
<!--#include file="conn.asp"-->
% C: o7 D$ S9 f<b><a href="say.asp">发表帖子</a></b><br><br>
: D: g% [4 X( K6 N% B( t<div align="center">
# y( ]9 @, h# D/ F/ Q- S' V4 O<center> , S+ Q( a5 W  O9 n
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
4 y! R3 H3 g& B/ ]6 N2 A<tr>
7 g8 ~3 \* D  U<td width="17%"><b>作者</b></td>
+ w4 M7 f, x2 ~5 F! m0 o<td width="83%"><b>主题</b></td>
( K/ h) Q# y  C9 v6 T</tr>
* L& r. ~" s# F4 s! h- q</table> " }8 K. s# l8 V3 r9 B, a2 D
</center> * J8 m- A! v! v
</div><hr size="1"> - y, Y- H; Q# c( m. o' t
<%i=1
5 d/ o8 ], t) B4 h+ Jset showbbs=conn.execute("select*from bbs order by id desc") 7 S% j9 y/ G8 a$ L
do while not showbbs.eof 7 h, ]+ c/ C  `
%>
) t6 X7 m1 e% J9 c/ |$ Z<div align="center">
% `& c6 c! C" i% G  F<center>
7 u6 x$ h2 g1 K% h2 P2 ^/ R) X8 ~<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">   N0 E0 V- K9 L* X/ q4 e
<tr> ! `# _* ?9 ~4 y1 ?: k# F' M
<td width="17%"><%=showbbs("name")%> </td> 8 n9 ?* Q* a7 L/ X
<td width="83%">
7 y# i" w! x* q$ C1 e2 y<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ! x$ H2 k+ Y6 z# |! B" s0 b& d
</tr> % s- G8 C( ?4 t( _; `1 ^% q
</table> ) E% P9 \$ w& A( c
</center>
" W& C3 m* T7 Z</div><hr size="1"> 2 M: f4 Y- C' K2 ], n4 ^  f
<%i=i+1
: V, B4 ?1 r( z, L2 d( _2 eif i>50 then exit do 4 l* @  j/ w0 `
showbbs.movenext & {8 @& c0 I& H, Y4 m
Loop
& w: s% ]5 r9 ?1 m2 nshowbbs.Close 2 l! `$ S: D% v  U- f) p: H" P
set showbbs=nothing
8 x5 K7 v# p! L- T%> " R4 A# u0 G% g5 e

) l0 ]: ?, g/ _, w7 h! j+ X4 \这个文件就不一句一句的讲了 # A' V7 L4 X4 ]# D
主要讲精华部分:
0 S2 l9 _9 v( [+ X6 x6 p6 }set showbbs=conn.execute("select*from bbs order by id desc")
; a7 H% H9 L0 q  _( @& e意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
* B& ~" ?# o1 U& q3 k还有这么一句:<%=showbbs("name")%>
! e: e7 {8 k; K% D( V' f: w就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs % \4 c1 R- w8 N" _9 _% C
代码中的i=1和i=i+1 % [! F7 {# m& C, c# z2 n3 {4 y
if i>50 then exit do
9 s, I8 d2 I! Z* [, X- fshowbbs.movenext
  u6 j# G. k$ T& u8 g8 RLoop 4 r  M% P! W* j+ x# X* c* Q
showbbs.Close
1 n* I9 c0 C' k& H& U0 V6 Aset showbbs=nothing ) `, M( |5 L: _. u
' W; u5 h0 h  ?' I$ O4 o8 [1 a  \
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 8 l7 I$ v. ~4 b
if i>50 then exit do中的50可以修改 # O8 C% g0 r4 m4 d
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 + Q- W3 q) Y- b9 t& A' N
还有一句很有用的:
; R6 o5 O0 H! }8 H<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
& A9 \$ N; @. S  [. B! p3 D4 Y里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 1 T4 h) K* H1 B. z
等一下在show.asp文件中就有用了 / L. m  I+ A) B
3 `! q% b% B- F  p' @+ m
5、show.asp 3 ?; C  g) r0 ?$ c, J
源代码:
- L6 k* K# s7 B- t9 r0 C; {
9 @) J1 H) O' x6 }# a5 o<!--#include file="conn.asp"-->
, J& H2 T3 C, ]; P) C+ k' l. ^<%id=request.querystring("id")%>
; N, x" q+ A- ?4 ]& m<%set show=conn.execute("select*from bbs where id="&id&"")%> - w# V* Q# O, `( T5 ~3 f! X* a
<a href="index.asp">
, p7 w8 X4 X/ L- f4 ~$ |<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 n7 t1 {/ g5 g9 [+ b<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">   w6 x& j% v# G/ z0 i
<tr> ; L1 D, q) B4 y' f' \" \2 W
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ) T5 X! Z; B6 o2 s; H7 a9 }- t
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
) p8 s# ?  P; _</tr>
+ s! i0 |4 L6 h  I<tr> ; w7 i, E: M3 ?+ c2 A* A
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
9 {' l& \. s- U' i/ P</tr>
5 f, d# e- x! }! D" c</table><%set show=nothing%> 1 _- ^, {' ]2 X

+ m  f4 t  i: g6 v$ H劲语句---精华语句:
- e: c& H" M7 x! Y$ p. h8 hid=request.querystring("id") 8 u8 S5 p) G4 z- K5 U; I
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, " R4 I% r4 {6 r" e) A9 N8 t' r0 y
id=request.querystring("id")就是把地址栏中的id的值读取下来,
8 z9 M' S% c# p$ O9 S% q  X# d0 [0 g因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, / L+ K& b; E% l2 {$ f6 }+ \) L, x
所以show.asp使用id=request.querystring("id")语句把数字读取下来   Y/ y, X/ [3 X: y
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") * m+ }4 R1 n7 V3 o: K( C
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" # u% t( z$ \. I
最后<%set show=nothing%> ! I) F9 c9 i. g: {; E6 Y; Y
0 }1 X) m6 M* ~6 w5 ^& F
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

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