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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西) S( h) N% E. D' z/ H6 `6 R2 a! ?
真NB..佩服ing .....
; D- n/ W- G8 F- |, p7 u6 o) N大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。8 B) m' [2 o' J0 J3 ^; c
' Q9 e/ G" V$ `  k: b( E
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 8 Y6 ~& T3 i, O" ]

1 C% a7 s" p$ a- L: I- J一、建立文件!
7 ?) l. Q/ `9 R+ ?! C, J2 n* \最简单的论坛也要有几个必要的文件,就是:
1 ]! `* {9 ^. n2 w1 \6 H& V0 l& ]6 a. T$ y6 ^
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 1 p0 _# O. }% K; D. Z. T$ K
' Y7 \2 e0 y  V9 U! k" A4 A' h
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp * `: j3 ]0 L3 A( I2 ]. ?

+ d- \% z5 G& N7 Y- m3、发表帖子的文件----命名为:say.asp
( ?7 W) a; I* T: }7 ^; {% J& e8 F! p9 z( H- \* U: r# j
4、保存发表帖子内容的文件-----命名为:save.asp ) }" C' j: \) L' S  J7 u

3 R+ d6 N, I1 X- F, h" C. X0 z5、显示帖子标题的文件------命名为:index.asp ! i  Z( y6 e( S4 K& ^

: R5 ^( D! n1 W: m6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 7 a. {! C, U' H1 a2 h! ?2 C& e

2 Y9 ~# V0 T2 L2 M3 X3 W2 B  \2 T建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" * E; C5 `; ]" T4 L2 B2 T1 L

6 _/ x# M% v/ v8 z: i5 [2 m二、各文件的主要内容
* z% \$ p, V! S8 g5 ]" k
, y: P2 o3 s/ _' k0 z1、bbs.mdb
. e* Y, @" f0 j+ V0 F  m' P& r6 P. v' W
打开这个数据库,建立一个表,命名为bbs
2 f2 j* b2 h; p4 t- W0 m1 T$ X- v$ A8 o! J
该表中有几个字段:
! n& [  L' e  f# ^& h+ l2 B- c# L  K: I, L) ]. [
id(自动给帖子编号),他的数据类型设为“自动编号”
+ J% P4 r) o9 r9 ?
; k: W( Z7 a4 }" f4 h+ Y& pname(用来储存发表的作者),数据类型为“文本”
9 C) r6 g( v. t
4 B2 x' v7 i( q& G( m1 u: [title(用来储存帖子的主题),数据类型为“文本” 0 t, Q1 a2 o4 M, u4 B
7 k# s) [6 j* b$ B9 M
body(用来储存帖子的内容),数据类型为“备注” % @" W/ N, t+ j, U" j0 T; V

* n4 p5 k& ?" z9 J2、conn.asp
+ S* e+ l. D3 }2 Z# G9 W3 t; h源代码为: 2 j! q9 ]1 q: l! c
<%
( \- Z9 f3 E( u8 N7 n$ P' U# JServer.scriptTimeout="10"
  `9 L5 |) ?! m: ]# _  qc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" . @- ^5 n7 P& Y
set conn=Server.CreateObject("ADODB.connection")
( A: w9 s# M( Y) @7 d9 Hconn.open connstr $ f' B( @5 @+ l2 @# h6 m
%>
# N" h+ z' u* n; j9 M8 V! ^5 V) j- m
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 4 z* a+ X5 J' R1 Y9 N

& C/ b& d0 O  C- h5 o! s3、say.asp 8 S' j( r* ?( p% u
8 x( @& o- G  E. `
源代码为:
% W% i/ _- C& p6 h<form method="POST" action="save.asp"> . W: ?9 j5 S* Q$ z0 b, t0 y9 U
<p>大名:<input type="text" name="name" size="20"></p>
1 f' W: p  N' q<p>标题:<input type="text" name="title" size="91"></p>
3 t/ w4 R5 ], ], J+ A- R1 ~<p>内容:</p>
/ P/ Z$ f, E9 X2 i9 C<p><textarea rows="11" name="body" cols="97"></textarea></p> : n% m/ U- |) l' X
<p> </p> 6 H/ v( v& A. f9 d" E- [' N; N
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> # ^& ?* O: ~/ B
</form>
" n8 H' Z- z6 `) `; K大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 , }  e1 S. g6 H  E3 T
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
  t/ B  R, \. ?* N& q9 @/ Q# _/ G2 ^% q2 ?- x& v8 E
4、save.asp
" o8 v' x! F1 R# b* n4 K" Q6 e1 t% V/ x0 I$ I. A- u9 j
源代码:
, Z: I3 K/ ^+ k2 R/ \<!--#include file="conn.asp"--> * }& ~4 d" b" H
<%name=Replace(Request.Form("name"),"'","''")
- e' o7 S8 \, H- ]& X/ v" ztitle=Replace(Request.Form("title"),"'","''") ! h+ q. Q# g7 n/ e( Q
body=Replace(Request.Form("body"),"'","''") ! |# e: P) X8 N! \, ]* z
%> ( ]1 V7 ~: X8 P
<%if name="" or title="" or body="" then%>
( f& n  f7 X% j# L, V请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
" l9 P8 L- |. `<%else%>
+ D" g- q2 j  W. @7 R' ^3 D  t$ ?<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
2 s1 D) b& a! d8 K% t, t发表成功!<a href="index.asp">查看帖子</a>
) L  n" }: d" h! z* t' b<%end if
$ ~; A0 H( Q. N( c* mset savebbs=nothing ) w% u4 s8 `4 x' Q
%> 8 b4 |; T9 m; q1 f' n; H
7 i% ]! S4 N3 Z, n1 X* o# p
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! # w% d# w# `; V9 j4 |; k& ?
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
( m! d: S) i) Q  X, R' C3 ]( a接下来几句:
6 i: o0 b% I2 L% E: r+ a+ C  A8 a% Kname=Replace(Request.Form("name"),"'","''") $ s& k4 B, v4 @! H# u
title=Replace(Request.Form("title"),"'","''") 5 k, u. F4 m2 `5 f8 j  E: H
body=Replace(Request.Form("body"),"'","''") 8 F. f3 R" }9 x
0 d( A6 f; F5 ?7 H& p& [0 f
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
; c: W  ^* k; j( K而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
, F8 ~, d5 g7 |: M( k5 {$ |如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
/ _/ w1 e% a+ I- Q% _就是把表单中名为name的文本框发来的数据储存在abc123变量中
! x8 b& A( Y3 L4 Z
0 X' C3 x# V% P' U2 ~0 D' G接着:if name="" or title="" or body="" then 4 @7 {7 u, `! }# u4 g, k) e; m
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ( \! w) D7 j4 f
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
, V+ R7 o( ~: I, U5 e2 k+ Q, E该语句属于html语法,大家都看得懂的!
" G( x. a7 h8 D9 ~/ O5 q5 Q6 g4 \# w- V4 n* G
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
7 q2 E( o' T( Q+ j8 ~2 `“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> & r# ?7 l# M; f. H
发表成功!<a href="index.asp">查看帖子</a>”
: W& p- q- q7 i9 W  [
/ M* V9 q% r- H1 U# Z"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: & _4 R/ C% y$ Q) ]) O! e
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) . H: g0 x+ C3 H; |
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
- e# C& F. L8 q5 L8 G& e8 nvalues是“值”的意思
+ S9 p# M5 a3 Q, ~: K  A3 }就是插入向量name,title,body,向量用格式'"&name&"'表示 0 K6 t3 ~8 O( |. C3 Y* O

4 F  z; W, b$ A0 _8 k- x9 u0 J" Y最后:end if就是结束if……then
& p$ _6 t( H% P5 T! B  B3 [; \0 Gset savebbs=nothing可以说是关闭掉: ; T, N6 K$ ?- y; J$ _8 |
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") - r0 [9 V6 s% G+ [1 ]
$ V. ~6 q$ G7 Y0 Q, c9 q( v5 ?

* j* y# Q6 l2 H( W5 i3 o5、index.asp ( A# }7 u% T: L! `
源代码:
, Q  ^) o; u  M<!--#include file="conn.asp"--> 4 U# D) |7 M7 U  N' I
<b><a href="say.asp">发表帖子</a></b><br><br> ( Z2 x; m1 _' y( ?, W1 n# w
<div align="center"> 1 ~) O: l# h. `9 j* Z! T- U
<center> ) b+ ~7 W9 S  o7 `- n7 F/ w3 u& I
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 1 l1 \7 P7 {1 X6 l# s- x) D
<tr>
5 ]* j2 j1 K" B<td width="17%"><b>作者</b></td>
0 G! t) l0 A' C7 @+ E1 m<td width="83%"><b>主题</b></td> 1 z- C3 {2 D; \+ }+ o% W
</tr>
7 f' m3 Y( v- D0 T</table> 4 N3 I0 N- S+ Q5 l# b- M3 f
</center>
  G3 P% z- }+ I/ n. c</div><hr size="1"> 3 H( z* f6 G9 B7 E1 A( T# U' a
<%i=1 , g& ~  o3 t1 V
set showbbs=conn.execute("select*from bbs order by id desc")
$ p; ~+ L2 }1 j3 Zdo while not showbbs.eof   Q- J' }# P- j7 {1 J
%>
2 ?4 X! R+ e% i<div align="center"> # I3 R2 t1 Z' {, ]5 g# [7 q
<center> 3 V( H0 |  D, g3 U/ D* E/ J1 G3 l
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> - }/ ?4 q. u! V4 g$ `/ {
<tr>
) Y% f5 P6 V) r<td width="17%"><%=showbbs("name")%> </td> . D! j! ^  G6 _( J5 _! C5 b
<td width="83%"> # i" Q( I$ l8 J- i. Y
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> $ F( M' u. j# P2 h: w7 X6 A! G
</tr> & m) ~, _7 ?# H, G. H5 U
</table>
  F3 Q4 _4 p# `. ~( E! |( [</center> , i  \% [8 M6 O7 f
</div><hr size="1"> . n% ^8 A4 U2 _! m* `
<%i=i+1
, f6 f1 i) b7 z  f9 Cif i>50 then exit do * k, {; |0 J2 \( c; F% q
showbbs.movenext # n& ~' K. o, H6 I
Loop
$ f4 A! Y! `6 Z( bshowbbs.Close ( q: R# |5 z3 C* Z
set showbbs=nothing 0 g7 E7 S5 f# c6 Y7 s* p
%>
. k# a; f" ~, b4 x, c% ~& q) k' M( o9 R# `% o
这个文件就不一句一句的讲了 ! G7 U- \4 s4 V
主要讲精华部分:
, ?. P) n/ Z! D0 |! H. rset showbbs=conn.execute("select*from bbs order by id desc") 3 G0 e1 p7 i. ]) G$ u. {
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
3 ]2 L5 I8 u4 h还有这么一句:<%=showbbs("name")%>
7 H: F4 R. V4 o+ @! N: w  v" q就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 9 A& z8 U9 G6 ]6 T% @4 H, l
代码中的i=1和i=i+1
8 B$ t/ [% j( ]# q1 Yif i>50 then exit do - r6 x# A) V+ O. G
showbbs.movenext + Y' F" @5 `6 \# D/ c" I: L; [  @" T
Loop
* F1 v( v3 p" cshowbbs.Close
& G$ I( L$ H$ @4 ?) a/ h6 qset showbbs=nothing 8 Y. ?, n* w( P: X  }
7 e0 G3 w& Z. I- m) `
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
) d2 p2 b- U- k* x/ y6 Hif i>50 then exit do中的50可以修改
8 Q2 g/ K2 d1 N$ S但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 : v. ~+ z6 u) B: E$ k7 ~. q- `
还有一句很有用的: ! |' K3 I7 l. O% `! a+ Q
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
: E/ m7 S0 ?+ @3 A9 Q0 o4 C. L( q: ~里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
: b; {% `5 G. A1 g0 V6 ~8 C$ l等一下在show.asp文件中就有用了
3 P6 x1 l' g9 V# q- I* ~2 B" j" V, O. _  O1 q
5、show.asp
' [$ O2 U4 A* B5 h7 y源代码: . c, ~4 t) s+ ]# ^; [6 |$ ^

0 G+ K3 B4 F' K- d7 C0 X+ w$ E<!--#include file="conn.asp"--> . {- D' k6 {+ H5 B' ~+ ?
<%id=request.querystring("id")%>
' S" c0 t) M* |$ K/ W; O6 x<%set show=conn.execute("select*from bbs where id="&id&"")%> 1 X3 u% \  v! z. {# B
<a href="index.asp">
% P# ~# P& l2 a& A: R<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 7 t! E. l& l4 Q1 b
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
2 ~$ t5 B$ U+ ~% Z, P" e& n$ a<tr> " \! K5 i8 i$ Z% l# l
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
& ]( H6 ^; V; w<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
4 A0 Z( f) e' v* P</tr>
( e: t; M7 [8 I! w  ~& X% q<tr> 1 n- r2 Q/ L7 Q6 I* o5 X
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 5 H" d$ X' h! ^% F6 o- m
</tr> / n) K& V, y# n4 ]
</table><%set show=nothing%> 9 g% C7 w& ]- K3 [% I) M" i- r

- q( q( N) D0 C, n6 l% T劲语句---精华语句:
; L2 ^. D+ \3 M# ^  K/ w# |id=request.querystring("id") ! A" Y: Y/ D$ U
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
- A- t; {  w% z: I7 J( [3 uid=request.querystring("id")就是把地址栏中的id的值读取下来,
3 C. Z9 I- z: k. [9 ^9 Q% q因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, + C3 R) Q0 W# `
所以show.asp使用id=request.querystring("id")语句把数字读取下来
( W- R' H# C- U; k8 }8 U* t$ ]5 Z于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") & y9 G; F. q, j5 o* P( S
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
, f( b$ ~; y6 x# L. q: l最后<%set show=nothing%> & d! a2 `$ }% X! B( T

: k) V& K  l1 {, n2 S" D" Y好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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