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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
6 [6 s9 ^! z) ?1 Q真NB..佩服ing .....
# ^; H( L# w, a. i; p0 c大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。9 b8 L6 P6 q- c, O+ }. p$ N$ \

: y7 W3 p5 s) H; ]同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
( Y: w9 x* W- Q8 |  l2 b
+ V  d) S3 s2 y# v一、建立文件!
( Q* K. m- f7 _" V9 B/ Q最简单的论坛也要有几个必要的文件,就是: - U# [' m: }0 a! [4 s; U

% V2 C9 v) n% L* _2 \3 X) c# F1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ; h7 \4 R! k: |, H7 w, C

4 m- O0 p# X( s3 {1 u/ n* Y- J2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp & d6 k- \- i: J( F5 e% P( v

2 {# j0 u: y3 L& B2 G2 `+ r# @3、发表帖子的文件----命名为:say.asp 6 P" E+ F$ }& R
* L  }) }, s. F- J( U
4、保存发表帖子内容的文件-----命名为:save.asp
/ P: e7 j: j2 x" T* l* ~8 u) v, U7 l' @7 ~- _) W# `
5、显示帖子标题的文件------命名为:index.asp : j5 G4 k$ ^. `4 t' M
; {9 U9 i1 ^& h: }+ S. |
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
. |7 v- H6 [# q- S) u. J  {/ ?' G, _1 M
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" & z! g+ c! P: x5 u" v. {$ _

& X" F" J$ E3 s/ z二、各文件的主要内容 , h+ v0 ?% Z7 x0 r
* D/ Y% _4 V$ x3 Z" _. v* T7 p
1、bbs.mdb 4 P4 o2 B$ C* l. Q- `

$ K! ~7 _9 L: ^1 z6 y! e& Q打开这个数据库,建立一个表,命名为bbs - u- p* x- v% X; L+ B6 E0 i
, F0 a2 ?& ]  s) B
该表中有几个字段:
. f; n9 f9 W$ Z% w/ r! L, R8 G/ i7 g5 }, [: w/ ?8 N
id(自动给帖子编号),他的数据类型设为“自动编号”
9 c' B' t: s$ \2 J. ]" d" t! s2 K+ I; s9 k4 F8 M9 _& ]* h
name(用来储存发表的作者),数据类型为“文本” 5 j+ B& r7 |" U; U
/ @& o' A3 e  w
title(用来储存帖子的主题),数据类型为“文本” 7 z) S+ [  Z: R* G2 y$ {
% x0 ~5 C. ]& g1 @8 Y- f! ^
body(用来储存帖子的内容),数据类型为“备注”
$ m2 ]2 |) j7 T3 A* V  X
2 w7 U0 S' y# [0 ]) j  Z2、conn.asp
) ^- ^8 m; u- `7 a8 Z源代码为: 4 N% T. _2 v8 L0 s3 J4 N5 t; }
<% ) [3 ]' @9 N, g( s& ]9 v7 f, @3 \
Server.scriptTimeout="10" $ j' F0 K- H! I. D/ B& a% w5 Z
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
4 e6 s8 ]) B7 }; Z* t% t! e. H4 Hset conn=Server.CreateObject("ADODB.connection") . o6 i' q% [& a) R, M5 H* g! S
conn.open connstr
6 ?* ^# ]8 K. j$ y%>
) n) k! ?$ ~0 Y8 v# Q4 O% e9 G9 R$ @
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! . t  P6 c# D- R, e# b$ ]: `1 F
/ r1 V. H8 c0 A0 ~* Y0 I
3、say.asp
9 b9 |' F  g: j' A+ g  K4 z# V& ^2 `2 V1 E2 F# @& j
源代码为:
3 ^: n0 j/ j% V, e' j' }8 p<form method="POST" action="save.asp">
1 u8 a( V2 c2 V<p>大名:<input type="text" name="name" size="20"></p>
" g1 C, j& n0 a) W<p>标题:<input type="text" name="title" size="91"></p> : n" Y6 w% v8 {  V7 a* K$ d6 M4 Y4 t
<p>内容:</p>
3 ^# m* m8 O$ m; A( g<p><textarea rows="11" name="body" cols="97"></textarea></p>
( U  }' @; M6 u, x7 u<p> </p> 7 o5 o" l2 O' t
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
! O0 R/ Q/ s% }% l/ `; `</form> + M! t. |: \2 I4 f! h
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
7 S  F& m( Z: c  P, ^不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 7 ]7 t3 A  A7 ^1 r

3 r  n& a3 O9 _7 d4、save.asp
6 p5 z& I/ G/ K- r8 V0 Z
  i7 K) L0 X. {8 T3 d% s/ X源代码:
( G3 P' I( X! h: ~' C<!--#include file="conn.asp"-->
1 x' p. t& h" f+ ~<%name=Replace(Request.Form("name"),"'","''") / \: R7 d5 o6 v) a
title=Replace(Request.Form("title"),"'","''")
" i; G& }- `# q% Tbody=Replace(Request.Form("body"),"'","''") " `4 z; d+ o5 o  c
%> 1 y, M9 P! D; D# Y2 c- r6 H, R
<%if name="" or title="" or body="" then%>
7 U' E9 J8 O! N% L( w7 G# w请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ) o) l- v1 |, v: T. J8 V
<%else%>   v5 d( n* Z* P9 D
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
! j# K: V6 o, d" x发表成功!<a href="index.asp">查看帖子</a>
/ N1 G( @" a! y  d# X<%end if
" e: I$ T$ u8 ~7 G: ?  ^* d$ B) tset savebbs=nothing
7 i1 y( C& a, C%> 5 h4 J( C4 `9 [3 t
9 P# ~# v5 Z( g& \
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! " {, `) t1 d2 ~4 \4 s4 D% ?
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
$ `2 r% L9 r1 e$ P% M接下来几句: + a5 Y0 x7 l% d: t# N
name=Replace(Request.Form("name"),"'","''") 2 V8 n$ U/ ^6 X* \9 G0 p. m
title=Replace(Request.Form("title"),"'","''") ! D+ n" T  V* h0 U4 y" B2 C
body=Replace(Request.Form("body"),"'","''") 7 ^" j9 t( }+ \( ~7 h

' c  h# S/ |! ]4 C. M“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
. y' U) R: x- ^6 S" I而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
, b, W" i) [0 e0 ]$ i8 q如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” " H4 T3 G- B& k4 K! l
就是把表单中名为name的文本框发来的数据储存在abc123变量中
" D4 A/ E8 x/ L# V7 o# y# ^1 |+ n5 t! _3 X4 E7 j+ T, C( `
接着:if name="" or title="" or body="" then
5 ?0 I/ b6 f( K% n- x% C( e2 m判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
1 ]) R* M( o7 e6 g: A: U8 q  t“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
( c  [$ ^" G& }9 V5 d" Z' \该语句属于html语法,大家都看得懂的!
+ p6 R8 C( V/ O; x* S* f, e4 P& V0 u& a
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
* f: V  x5 U, p" L“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
2 W% v+ ~0 ?' v; K- e& X! ]( c发表成功!<a href="index.asp">查看帖子</a>”   R. @- A; P6 |

, L! K& T' }3 _' w/ x5 }7 n$ Z- y! a- d"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 7 y! h" A& ?/ v( c
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
9 Q8 B; X& [9 d中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")   p  c3 C, R* Q. ?+ P5 i( C
values是“值”的意思
% y" G1 N! F3 z& ?就是插入向量name,title,body,向量用格式'"&name&"'表示 3 C+ v9 B8 y1 c$ e& z

" @) e7 }3 f, l7 T( g最后:end if就是结束if……then
3 h# j2 ~2 j3 b; [( |/ \* w/ d) lset savebbs=nothing可以说是关闭掉: ! I: H7 t+ {& A' }
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
6 Z* n( X1 r; x* @  K1 b! M. g+ G
0 P. I5 h, ?" q9 K6 q* A; W+ w( L: m
5、index.asp ( P" q" I1 G4 X# O; A" ^
源代码: ) [' ^& ~) A5 d4 r( j- U2 [
<!--#include file="conn.asp"-->
- O1 s! ]9 o! P, N" H<b><a href="say.asp">发表帖子</a></b><br><br>
3 n7 [5 G! H1 p1 \4 n1 g3 n<div align="center">
9 d5 u' b  o, o* t' X. N1 B<center> $ ]# A5 z" r% @% m, b5 I! G6 `
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
7 @4 s) \. |/ a% p0 }- A) _<tr> ) w( g0 G" V; [" d
<td width="17%"><b>作者</b></td>
6 G$ m! U1 j% y2 }<td width="83%"><b>主题</b></td>
  z; h0 F5 x% Y& D- g, ?+ S8 b</tr>
/ E; L/ K: @- Y6 b4 f4 C8 ^. b</table> # b3 _+ N0 a; [% Q5 y
</center> ' p0 k; }8 W% _7 b+ W% a6 [
</div><hr size="1"> ' F8 [: h5 u! F; \& Z
<%i=1
8 ~: t! M. m5 i; Uset showbbs=conn.execute("select*from bbs order by id desc") 6 `% D3 u' l) B. y0 o
do while not showbbs.eof ' z* m4 V7 A- h) ?
%> ; U0 V# c2 f/ {, a4 ~3 F2 x$ ]
<div align="center"> + \5 `5 E! ?0 D/ S. g+ C
<center>
- [: s7 k) J* M: i<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> ( X" I4 ?% K1 i( N
<tr>   J/ o" N' I" i% H3 A* D( y' r+ K! d
<td width="17%"><%=showbbs("name")%> </td> ( g6 `8 w+ }5 G- i, J
<td width="83%">
9 `% X; t  Q% b4 c7 Q4 _* E<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
" j" c) A/ {% Z! J- A</tr>
8 h& @- n' o! i: m- {% N</table> 0 N" T& Q  a9 h8 U& @4 z; _
</center>
6 w7 q8 x2 n* f" P& M, N</div><hr size="1"> % g; J& i& d5 t
<%i=i+1 & e8 {- T4 d% D& s/ }4 T
if i>50 then exit do
% l) P4 a3 W$ l, b$ X3 g5 Eshowbbs.movenext # r3 L6 V7 Z; Z/ `
Loop
" k% h; C1 F8 Bshowbbs.Close 6 k; r; u; E- |  y  H% _
set showbbs=nothing " U1 \; G* ?! v& k' j* F
%> 6 v( D9 r  Y: N# m
4 ]) n9 Z* i0 s! M
这个文件就不一句一句的讲了 ; e5 u& G% \$ }+ s
主要讲精华部分: 1 m, ~" a0 }1 ?  s+ C. _: k
set showbbs=conn.execute("select*from bbs order by id desc") 8 Q! y8 W, ~9 z0 J. m
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, . m: m' w; V5 X& ^
还有这么一句:<%=showbbs("name")%> 4 f) f& U  |9 M9 U9 j* ^# E
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs # ~/ ]' K6 z( J- P6 b
代码中的i=1和i=i+1
2 S: O; i3 d6 W% u' K1 c( b0 Oif i>50 then exit do
' p8 X$ \* I4 ~; c1 ~, gshowbbs.movenext . ^. v/ d" A* v/ I
Loop # n0 l  C9 }: J
showbbs.Close
8 }, E, T( J: L1 F$ W. Aset showbbs=nothing " v" R; i& x- M! D1 v( Z; e
& a0 i2 N8 ~  ^: s+ V# N4 ~
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
; y, ]: N" D# v& pif i>50 then exit do中的50可以修改 6 [7 h, E% E- ?* G8 s/ n( L& F
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
: o# L$ u0 }. C8 w还有一句很有用的: ; I4 P4 O! K6 A0 ]( u  C0 t
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
* R& f6 h& Q! i5 `6 C- H里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 9 B8 n: |+ J# N; E
等一下在show.asp文件中就有用了
) _$ ]8 C0 T* z4 `4 h. Q3 r  M8 C
5、show.asp
: m% s1 |2 f0 D5 [* s源代码: ( m1 \0 h7 C+ I5 Y' ~( s: _6 i  s6 g

" Q- @& o' D! h+ y5 G5 F<!--#include file="conn.asp"--> ) F' ^+ h& a+ B* v2 l3 R
<%id=request.querystring("id")%>
$ B3 l% q+ o: m, L1 [<%set show=conn.execute("select*from bbs where id="&id&"")%> 5 a5 k. ~; U4 g  h) @5 {
<a href="index.asp">
% o' ?4 D! ^! A# R1 w, N<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 2 S( @6 n5 l1 L3 f
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
& q4 r. [3 H. k- s7 p<tr> 1 F9 ?2 d- Y/ z& Z) {, f
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 0 W8 V1 Z% C2 F. k
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> $ [! t. b6 H# ^( u* _. p
</tr> : |# h, z) }3 Y
<tr> % v) ]: @$ `% K$ V- s* W5 Z0 @
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 6 j* K' D* f9 V8 f3 k
</tr>
' b8 K: R) P1 U' i) z$ H</table><%set show=nothing%> 4 N$ [- i8 D( R- @# B0 Z% {' X3 i2 T
; j) n+ Q& z; A
劲语句---精华语句:
; [9 g; c# W0 lid=request.querystring("id")
  f* q' n& p' b在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
- w2 m  ]+ F& m- yid=request.querystring("id")就是把地址栏中的id的值读取下来,
! d1 [, N' g- O" j因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
$ y: h4 e. C7 ?0 ]! R所以show.asp使用id=request.querystring("id")语句把数字读取下来
8 |' V- h. w  [1 X; ]" O& L于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ) V0 o+ C) M; T3 V6 }
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
% n  a2 e# m( v; w+ V- h3 G( b4 e最后<%set show=nothing%> " i# p0 H! D9 K" q
$ |+ R+ {! ~3 _' b- |
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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