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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
9 F) H2 b% T4 X$ V6 E真NB..佩服ing .....) j( o; R. U6 {5 ^: m
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。# Z5 `% W. |3 V. s  A" r' q
& l" n6 Q% `. }% p/ I' ]$ S3 q
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。   H9 u7 G4 Y: y8 t

3 d5 w; ~9 y+ {- Z* h9 s9 w一、建立文件! - j* Y% m6 F7 B3 z4 K
最简单的论坛也要有几个必要的文件,就是:
! r) I. F! y( j3 n) w" N) f6 [* @4 G! t% L0 p4 ~4 |" ]
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 3 P1 S8 O4 P, q1 A: a# U9 v

; G6 n& _+ q$ J- z; B2 n* ~5 M) d2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp . P  j6 A$ h' B; l
3 N$ U! D. Z$ a) s- }9 k( Q& m
3、发表帖子的文件----命名为:say.asp
( Z' q4 c& L5 V+ D& g8 u, N: C! a( ~6 A8 I+ R" W( o0 e& ]
4、保存发表帖子内容的文件-----命名为:save.asp * j1 }) E& F; I* D
1 Z* B" S. b/ U7 l$ i3 u
5、显示帖子标题的文件------命名为:index.asp
# `: h0 `. s/ e; o/ u% C! c* M$ R, B
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 4 r- l$ n6 l, D1 X6 `

( r, `1 v) X: }建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
+ `8 O4 ?5 h4 T. Y$ S
  I* Z0 h) D) O  v& u0 O# [: u% ]9 L二、各文件的主要内容
) S" a8 `) i. T$ {! B7 a: Q5 A# R2 \" ?& f
1、bbs.mdb
" _0 F6 E1 V7 t# e1 B
3 U2 H/ @; f& P% }7 F打开这个数据库,建立一个表,命名为bbs $ J2 a8 z+ ~  q' U+ e# S1 F' ?' K

0 c: s' }. P4 {' K- b7 R该表中有几个字段:
6 B$ Q/ j: F: N
+ g: w0 T1 S1 L% Yid(自动给帖子编号),他的数据类型设为“自动编号”
& x- F. W4 W+ N2 T( ^; i& i  {* H% A, _- L% V; x* v
name(用来储存发表的作者),数据类型为“文本”
" ]  u( H4 @5 J8 G( n( e1 f! W9 S" X% T2 W0 w1 A# ?2 a5 E8 A$ }
title(用来储存帖子的主题),数据类型为“文本” 9 K2 w0 m0 `2 @# V- c: c

8 ~2 T; A( Q4 }2 ?0 Obody(用来储存帖子的内容),数据类型为“备注” , i; i4 x! S! V% E

; _: C4 O8 ]' M% B8 |3 }6 N2、conn.asp
4 e( @1 q. S  [0 ?源代码为: 5 v! d0 f9 @4 o
<%
; g) b$ q( Y; V9 A& IServer.scriptTimeout="10"
& k. A/ ~1 D" W' j6 cc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ; p& X, k* D5 \0 l* q, Q( S' {% K
set conn=Server.CreateObject("ADODB.connection") 7 P( g0 _$ L! S; I! p
conn.open connstr 2 J: k8 o% R( G; k6 a# x5 v
%> 8 e% x4 W" [' J3 L, m
4 ^( h6 }7 X6 D1 Z( `) L
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
! n3 T5 ?6 l6 u$ j' o
: `) l5 _6 E# i0 X3、say.asp
: V) v4 a& }9 ]- T0 f5 G! {4 C5 u) y4 H2 q
源代码为:
( \9 a) H) Y( d2 W) \$ P<form method="POST" action="save.asp">
, N" U. V9 Q, Z5 W8 V+ u; a$ }<p>大名:<input type="text" name="name" size="20"></p> " o1 y2 v" u  c7 M( z
<p>标题:<input type="text" name="title" size="91"></p>
. z$ k- P) G. |# C" {<p>内容:</p>
% k: N& ~7 @; Z1 L$ ^<p><textarea rows="11" name="body" cols="97"></textarea></p> ( l/ I# f' B" P( q+ c
<p> </p>
" N1 d* L  h+ W<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
* k& `* u' I& c3 f  O7 ^5 W</form>
$ n, j. W+ O5 ?; L- c& i  `2 K大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
: V6 A. {8 h9 k+ L不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! * ^: S: V, v5 r1 ]7 }* n

: \4 u+ z9 ?5 p: N4、save.asp
- s* o- ]0 ^0 M& f
5 g4 M8 R7 L8 D- O) P, q源代码:
& h# h9 q. g) x" B6 q3 E<!--#include file="conn.asp"-->
; a$ E( b+ ?1 U+ F5 B<%name=Replace(Request.Form("name"),"'","''") # i$ O* d! h7 \7 L  r+ ~) Y
title=Replace(Request.Form("title"),"'","''")
% R0 _7 d5 |; G2 R, V% K  ubody=Replace(Request.Form("body"),"'","''")
2 @- ?# ?4 _! V$ g0 X3 s%> % ~$ e8 w/ C8 l' p, F$ F/ w
<%if name="" or title="" or body="" then%>   q! m; A7 l! Z3 k4 G2 u' K" R
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 2 [0 M4 G5 T! z  w% E4 s2 n
<%else%>
' r1 D- B9 t% y) o6 m. v- D& M) G% O<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
0 i2 m% f) G" @7 {" Y* n% W, I发表成功!<a href="index.asp">查看帖子</a>
/ i6 P7 r3 n1 ?( b' z* i- m5 C" c<%end if
" m0 r! J0 M- v( ~2 Vset savebbs=nothing
/ A/ f" d# r7 U! c- Y$ G%> 5 P0 v7 b. Q0 W/ M
1 T! W8 P2 L0 Q; R1 z6 _
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! % N% i3 p1 G0 j  W4 E# C( t5 O2 H
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ' G# ]6 F& ]7 E9 g& k( H" d
接下来几句: - s. a/ b2 ^* T# I* |: M, T
name=Replace(Request.Form("name"),"'","''")
% R/ o: s& z5 g4 A! l  J( ^title=Replace(Request.Form("title"),"'","''") / i9 y. B7 l: Z8 k
body=Replace(Request.Form("body"),"'","''") 2 G  c! G' b, ^6 y$ k: L8 {

5 C6 v" x: A" |6 Z) S; }# t“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 7 V- G+ Z# T& P
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
+ Z. }: q! R1 l6 _5 h$ `如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” & W1 U5 g. w$ E. p8 j
就是把表单中名为name的文本框发来的数据储存在abc123变量中
9 ?" d6 A. j' }, v! B
. d1 M$ X0 \# i# m( A接着:if name="" or title="" or body="" then : a" m+ t* B: c& X9 d
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: $ j: A# a0 B( ]& x5 k) Y7 ^
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
; X$ {2 c$ Z. N6 d该语句属于html语法,大家都看得懂的!
5 S; N) h5 r" J" u
( E  B" l! V( g# a* E4 Z' `% ^"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
7 _- n, A, H) ^  F! }“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> / e& A; x  o) Q0 J. A$ u  x" x" V: v
发表成功!<a href="index.asp">查看帖子</a>”
' {4 c6 e  @* w/ l5 G+ g8 M! {3 g' V
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: , S* E! l8 [* }! n: i6 h) L
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) / u) \- b7 [' _* Z0 ~
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") : U/ v, B! }9 E( @
values是“值”的意思
5 a, x9 L" g0 f! z! ~就是插入向量name,title,body,向量用格式'"&name&"'表示 5 t/ C4 j# A. a& N3 D
3 t, i5 F) Z9 d3 p  g+ _4 D5 ^/ D- S; a
最后:end if就是结束if……then ' n* G, M$ S0 P7 z! E( O0 n
set savebbs=nothing可以说是关闭掉:
) C. t3 ?1 }* ~! [! `3 B; w0 g) Wset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 4 d; n; R# m8 k, d$ Y

- \3 h0 I# j' F3 Y% ~: q0 j0 k! w/ [) u
5、index.asp ( x# i4 A8 r! Z
源代码:
8 @. x; S: m" X1 n; O/ c<!--#include file="conn.asp"-->
6 Q+ @' I6 X4 G/ K; ]" a2 ?<b><a href="say.asp">发表帖子</a></b><br><br>
0 ^( w. e- @8 f  P3 g<div align="center"> + y' ^/ v5 B5 i
<center> + U1 Q& r; w: O
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> & r* b6 t# z8 O' g6 v) r8 U
<tr>
- g" l  E! m: n9 W<td width="17%"><b>作者</b></td> 4 j$ `4 Q5 O0 I3 H" z. ?
<td width="83%"><b>主题</b></td> 4 q2 i4 N: h- o
</tr> 2 O6 Z% ^: w1 l1 o8 C
</table>   J2 k% H' c+ K# R+ J
</center>
" H$ X( r9 d& M  N1 ~3 o* d</div><hr size="1"> 5 u& _/ a6 P! r6 f
<%i=1 : m0 E! E0 Z0 a# \9 r9 ~* J
set showbbs=conn.execute("select*from bbs order by id desc")
  l# M. N  E6 S  Z) y/ Gdo while not showbbs.eof
. g) t, u6 P( W%> & s# i: e2 o# Q$ E& h
<div align="center"> 1 ?5 Q) ]4 C% F7 l/ a. f: c
<center>
% s+ }; a: ^- C; Y7 F<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 1 E0 `/ `) `; ~% n/ C" s
<tr>
- \' |/ v5 h7 M: c% D; @<td width="17%"><%=showbbs("name")%> </td> ) S" m7 ?6 Z9 v$ a( i
<td width="83%">
" w1 s% {' d* r# H5 O0 F0 p) r<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> : t* ~0 P- j) [; w! W
</tr> , `3 C6 P8 j4 B4 n. D
</table>
- h5 \. L# J7 m, ]+ x8 N: U</center>
1 M; `, b2 I. P2 {; V0 z</div><hr size="1">
. E. f! Y1 o/ N& H9 s; _# h, f<%i=i+1 0 c. q5 o; q; c5 U4 y- R( e
if i>50 then exit do
$ r: g0 E% x8 ushowbbs.movenext 7 Y( L( U6 b* \. Z( \; V
Loop
+ o! W9 z6 O* u$ s7 F5 @7 L+ I: E6 Zshowbbs.Close
( ?8 p4 Y5 U  O& pset showbbs=nothing
; X& b( h  o7 k3 ?! p6 X, v%> 0 x1 P4 q! b9 h) m

+ C$ r; q, ^  e0 U6 Y* }  {- l这个文件就不一句一句的讲了 0 b5 K( c3 O1 k
主要讲精华部分: ! V' r; o# L7 L3 O' {1 C
set showbbs=conn.execute("select*from bbs order by id desc") % a' v9 d1 g& x
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
/ t8 f8 G1 P1 k$ E; Y8 J3 O9 `还有这么一句:<%=showbbs("name")%>
& B2 L  h6 Y0 ~6 s! P9 U+ ^% F% b就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
; P+ t6 G" n0 s$ b8 o, a代码中的i=1和i=i+1
3 }; y' g' ?% g- _5 W0 Iif i>50 then exit do 8 _( P1 b, [3 T9 M. d) N
showbbs.movenext 4 A. f7 r3 Z; a
Loop * @/ z( D+ U" s( |
showbbs.Close
: K6 O; P, ?+ M. K3 ^. qset showbbs=nothing & g2 E+ R0 ]- l! b4 ~0 y

9 I5 B  T4 ?3 y/ h+ w6 O这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! $ H0 r5 U) p+ {
if i>50 then exit do中的50可以修改
$ D7 S6 f3 Z5 H  h7 r但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 7 |/ I8 a( R% h
还有一句很有用的:
9 J: d4 S+ L- v7 h6 o+ J4 b<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
, [0 g; p$ g! |, Z5 i* h  t6 g里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 7 B9 d$ k9 q) `8 m% Q# p7 h
等一下在show.asp文件中就有用了
$ d3 H" Z2 g& M% D' r! u" u$ E
; C2 H1 D" Z' c' u8 [! E/ C. F5、show.asp * {/ b* T# |% W6 D2 Y" j% y1 m
源代码: # t5 d! @/ P3 z9 g, j; ]
/ J6 s3 u; L9 \2 C7 w" k9 l
<!--#include file="conn.asp"--> . Y& p" Y* ^* Q/ e9 I! r- j
<%id=request.querystring("id")%> ! r, y4 V7 d, j, z; P
<%set show=conn.execute("select*from bbs where id="&id&"")%> ' \0 S" [9 s; @, ]
<a href="index.asp"> , c' t& K. T3 A4 C/ p
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
4 l! V+ _  k# Z: `& P8 K" p<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> $ j7 d0 E. P! k5 D- f- _$ h. s! p4 S
<tr> - `+ K$ K- s6 F( T( m/ w( R
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
# r, Q7 o  e! f( ?, m<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
8 z& V! P; K# j) x7 H</tr> / f. ^( A4 [+ k
<tr>
, _* f( J( L! r* t<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> ( j6 D0 A# l! [& s. F
</tr>
3 d# V- A& ~4 O' _7 t; x  r' W9 x5 a</table><%set show=nothing%> ! _0 s6 |" a2 u( O" R: i

, F; k: h* \; A1 O# B2 ~劲语句---精华语句:
: U$ m( \8 {1 A& R; Hid=request.querystring("id") / n6 W0 o0 ]! R4 j
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
9 j- g; n$ t: Xid=request.querystring("id")就是把地址栏中的id的值读取下来,
. {2 ]% s) B* O因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
* B' A  Y) O( F  v% q所以show.asp使用id=request.querystring("id")语句把数字读取下来
! T2 l1 S) G; q7 f* N/ v9 J% D于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
4 V! o: V; R2 m+ V. J3 Z2 a( y- P1 J  y向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
( {) w3 n' E3 r, I$ m6 [最后<%set show=nothing%> $ P. c( F3 q5 p5 V) n
" N( K; I- U( z1 c2 k- B9 u4 g
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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