  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14161
- 金币
- 2371
- 威望
- 1647
- 贡献
- 1319
|
学ASP朋友的。。给大家分享个好东西
0 |1 ?" \- ]' K( N3 _; G真NB..佩服ing ...... f! D" Y% L& t5 ?1 f1 i; R
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
8 G* U" K2 |% G( y+ P; g/ t) X: w0 \: h8 Y: L% g
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 1 C5 }) c. J) y$ ^
' [" Y" L* T$ z1 L一、建立文件!
( T; S0 p7 N1 \* t$ R; y1 h最简单的论坛也要有几个必要的文件,就是: 4 ]1 n3 h. H1 |7 K
' L( v; @ e) H" G0 x
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 5 C; T6 i& }# q2 O
$ u* ~- m- d* B6 R2 X
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
$ i! F! v) f0 o0 G6 {
4 k' g G" R# s2 C& |3 F3、发表帖子的文件----命名为:say.asp
. T! q4 l: t0 ]1 @8 V' i$ S! F
}8 W% M3 u8 v% @! I5 n& ^8 g) x- m4、保存发表帖子内容的文件-----命名为:save.asp , p- t) S: _2 e4 O- D" h
( J6 f0 C2 S5 Z5 a% z* t( h/ W5、显示帖子标题的文件------命名为:index.asp
& U5 i, |& T m/ g- `1 r
9 ^8 n& _+ i8 n7 m1 L) x6 \9 O; f6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 8 ]/ v2 ^9 Q7 s( A, H7 O7 B
8 p- N! x8 C* ^7 V5 F# B: X7 L, s# L
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ; s) h& [+ Y+ ?9 {6 N9 g/ W% f
! _8 C6 | c* ?; n: j二、各文件的主要内容
7 d% ?* R2 X* C- ]* K
) F2 o+ N! u) k* s% m1、bbs.mdb 8 m4 f& Q# t8 i/ E
2 C g6 I$ U$ x3 J打开这个数据库,建立一个表,命名为bbs ! \% M) F8 k: d9 p! d
7 H& r9 {" X7 k; G! N$ a该表中有几个字段: 7 p! R9 p% C* c5 i7 K
2 n& ~; ^( A4 g% b, O
id(自动给帖子编号),他的数据类型设为“自动编号”
; B/ L7 D- v" V& a! v$ P+ ]( h, l; x1 ?
name(用来储存发表的作者),数据类型为“文本”
# E6 ?- r9 e, q; `9 U( `4 m t3 H3 N5 S. n. K6 w# ~; f" C+ B
title(用来储存帖子的主题),数据类型为“文本”
$ I8 X4 c+ T( |# g4 e3 C# a d: s: C. ]
body(用来储存帖子的内容),数据类型为“备注” . O, R7 S/ t1 y
0 ?. M- I! F; ^) U; q' i- J
2、conn.asp - N% n) R' n' M' Y1 J* }! i
源代码为: 7 H: w" q" L# x0 V' H
<% * {: n) K: Q9 {* [2 H$ \
Server.scriptTimeout="10"
7 i, |) X! L$ t0 n2 Bc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 2 A& V6 v3 S8 I" ]8 ?( i
set conn=Server.CreateObject("ADODB.connection")
1 [ L. R8 {/ k3 F! [* [conn.open connstr
' s' ~" C- k- u; Z" a%>
+ Q- [. L4 }+ _
0 J6 i! X5 N9 Q6 ~' z* q! G; `这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
# W, Y3 x" u' V+ Q9 a+ Z& z; t
& \0 W; w3 S( ~0 w% v3、say.asp
/ F) v, t* T1 ^ _
0 E! ?! e$ n" |( [- g源代码为:
' |- V/ D M4 u, k! ~- a<form method="POST" action="save.asp">
4 l3 _" u y# f5 W1 V) ^<p>大名:<input type="text" name="name" size="20"></p> 0 Z7 _9 Z$ Z1 z: g' |+ }7 s: F
<p>标题:<input type="text" name="title" size="91"></p>
. s+ A8 x9 H9 h& S: B- v" m<p>内容:</p> ! P- B. m* [ l& B7 g/ l8 g6 N
<p><textarea rows="11" name="body" cols="97"></textarea></p> % C, ^: S* F$ u9 M0 ~! ]
<p> </p> / b a8 P# w/ \6 G/ r; R
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ) w. c o+ O: O( o3 P8 ~! G
</form> 4 ]' H6 [, L/ ~* [9 c
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
j; m" x, h( `' V不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
' S% D7 O/ J) }/ ?
1 d* m: s0 r% V1 P- @$ p ~4、save.asp ' f; D3 D: d! ^8 E* _
& n% G) e+ c3 q, @
源代码:
* t3 }9 d( J: E/ v) S4 M: Q<!--#include file="conn.asp"--> " @ T9 x7 c0 B8 T+ }- F' c5 e- Y. s
<%name=Replace(Request.Form("name"),"'","''")
5 [2 t/ K$ j, z5 w# @& xtitle=Replace(Request.Form("title"),"'","''") * ?% R7 {: v6 x* s7 b- Q
body=Replace(Request.Form("body"),"'","''")
/ H) r: W' q7 Z" o) U* ~3 J%>
3 e2 C& k' p( I* N; m, H! f<%if name="" or title="" or body="" then%>
9 w1 N- J- a% l请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
2 P4 y8 a( X" L4 n9 M<%else%>
" @0 g# A! n+ W0 i! E<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
0 L4 [4 ^" y" _. Z( \3 p+ }5 i3 Z发表成功!<a href="index.asp">查看帖子</a>
! r. w |# T. @; c! a; D8 U/ ?<%end if
3 R1 v) p9 W% Q6 n1 t' k0 f4 e- uset savebbs=nothing 3 n- m4 D* k- d: v/ Y
%>
& {% y; }# Y/ H. C% t" `- X2 ^; J/ w k: P; w+ A6 r e$ I0 S& \7 ?
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 4 P7 Z0 ]- ^: l8 K" A
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
- E( E! a$ [1 }6 }# g# `" b接下来几句:
1 E' ~+ B' ?2 J6 p2 vname=Replace(Request.Form("name"),"'","''") 2 t& {2 R. S* c& ]7 a
title=Replace(Request.Form("title"),"'","''") : U2 t5 U( v1 O- A( {* K x9 M7 w# R
body=Replace(Request.Form("body"),"'","''")
- R" a& u! y. l* u
) p: r& x4 d! t9 J! t“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
/ F1 m9 G- W' X- M而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
2 @6 L! x6 b j3 X1 M如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
: i6 {, V ^3 ^就是把表单中名为name的文本框发来的数据储存在abc123变量中
; N6 H8 }1 \% C' M7 c6 H
; w1 f2 ?3 T' |/ `接着:if name="" or title="" or body="" then
& L' v% F7 ^3 h$ c% m g判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
; Z( d) Z0 h h; W$ u“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
' O2 ]1 P! k5 t" v3 \$ R) X+ e该语句属于html语法,大家都看得懂的! : I/ f& r) l# a! [( [
1 O! `+ q4 |0 ?+ i' W% ["<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
6 Q% h: q7 r2 r& ]2 a, t8 Y8 j: S5 l“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
5 Q. T( q$ A+ R% O5 ?% ^1 i. H发表成功!<a href="index.asp">查看帖子</a>” x$ Z( b( j M+ p
9 q2 m: r3 l$ c/ R2 W# n"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: . K1 _ }5 v4 U {5 C6 `3 R4 ^
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) % u; N6 E9 U1 W" y
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 7 A: p: o0 q c( t. P
values是“值”的意思 # s1 t y' a9 @. ~5 o
就是插入向量name,title,body,向量用格式'"&name&"'表示
$ V; Q0 N" ]- G; P5 j; f! e. |' L: e: [3 [3 `* D
最后:end if就是结束if……then
2 _* p$ G, F, B' y* o/ jset savebbs=nothing可以说是关闭掉:
; R t& M, Z- ^set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
; y5 u8 N$ ?4 r7 v7 Q; B
' s2 f: c# S' L: o2 G
! V" f$ i$ ^. [# }5、index.asp , z. A6 L" W, ?! B) S
源代码:
5 t j7 a' F% T: d; c, X$ @2 ^<!--#include file="conn.asp"-->
. S5 \' [: y0 s3 L- G+ S+ ?<b><a href="say.asp">发表帖子</a></b><br><br>
& ?- R' m& z- V+ d<div align="center">
! Q1 A$ w S# P* l<center>
6 ^- }# W" X% B5 x9 o/ g<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> / _9 m, n) E8 j& _$ z1 [
<tr> - c/ b' C0 G7 Q% Y4 _
<td width="17%"><b>作者</b></td> ) K# p& K8 @& q, z2 ~
<td width="83%"><b>主题</b></td> 4 b' e- h' }- E1 L* Y
</tr>
7 F' s7 p0 p' V/ a( {, r f6 T</table>
+ `; N2 { e3 \</center>
6 X0 O! ^/ R9 h3 r- o</div><hr size="1"> 5 m. }* T/ O6 Y1 Z
<%i=1 d, Q8 ]9 X$ v# h
set showbbs=conn.execute("select*from bbs order by id desc")
/ Z$ F1 i: ?1 T7 E* K- j5 |do while not showbbs.eof " }/ F/ U( }( Z% l
%>
v7 h6 j3 d" W; C<div align="center">
3 G7 ~. s+ M5 Q<center> , Z+ L/ s' S" L" p4 x5 W
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
2 h0 | k6 ?1 O+ B/ c% K<tr> 8 H/ @7 M7 w0 q9 h; g
<td width="17%"><%=showbbs("name")%> </td>
# E- G2 M& i2 y5 a8 `& b<td width="83%"> 6 n/ {1 A' S( F! O/ M
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
' f% K A$ H$ O9 t0 l</tr>
" w7 N9 q0 F7 y/ G; ]</table>
2 O$ C- _( `0 @2 S</center> 1 i7 n& F9 X6 X% D' d) f& ^* b
</div><hr size="1"> 1 E; A8 O5 c0 C3 a$ f* I
<%i=i+1 7 o7 u! C5 E( i! a5 \$ L
if i>50 then exit do
9 O$ }* P2 u; }# G5 |7 `1 N1 }showbbs.movenext
: g% H: o0 P8 [( eLoop
9 s. J, a7 \; T0 C* T6 Sshowbbs.Close % B3 L2 J" M* u2 {) r1 H
set showbbs=nothing
0 v! K7 ?+ K6 o4 e% i$ e0 d%>
% Y' T3 P4 O# }1 j
z7 _; P7 v/ h7 H这个文件就不一句一句的讲了 $ L+ }0 \* l+ ~% q/ m
主要讲精华部分: , L$ F+ V+ [% O& {) q w+ G
set showbbs=conn.execute("select*from bbs order by id desc")
. V& `) e3 i3 c意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
. X, N" ?( H" R! Q R* c还有这么一句:<%=showbbs("name")%> O! s/ ]0 Y8 y0 a
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs # K$ Z7 n+ U, v, L2 p
代码中的i=1和i=i+1
: T; n1 t) b7 q# p5 F2 _if i>50 then exit do
& p8 V; y3 v+ [7 L% Q# Tshowbbs.movenext
+ L. l* t1 c# Y6 b; L6 O: ?Loop
6 z# Z- i2 _- x( S8 i' ]showbbs.Close 9 F* ]. U! c# z4 M! X& H" u
set showbbs=nothing
% |6 x9 q: ?7 a a5 Y, X- a( a% \( J8 r$ g3 i( E. ?
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
, x5 J; M8 w& k0 z G8 \2 Uif i>50 then exit do中的50可以修改 ' z! S# c+ S' g9 ~8 W; `
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 ( x5 h9 ~2 c% y' ?% [% t4 B3 j
还有一句很有用的: 2 j& F( |% g: P
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> $ Q' L3 c( t: e
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 0 \: Y4 c W. S. n5 i
等一下在show.asp文件中就有用了 2 k" R" a& M. C) a
( ? O9 S9 Z5 o3 v, m2 r; v5、show.asp
! x7 r. n3 U% ~5 M& d源代码: . S0 ~# y5 ?4 `7 S \$ F
8 O3 {( {$ t1 W0 t/ K" b4 R<!--#include file="conn.asp"--> 6 w7 J1 C' |! o
<%id=request.querystring("id")%>
$ i* q5 J( z7 t0 j) M- x' r<%set show=conn.execute("select*from bbs where id="&id&"")%>
2 h, i) {) D/ o0 m8 R* V9 N/ j<a href="index.asp"> + T7 b+ F: d2 K# d7 }+ F
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . q, u4 o. l; R
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
& O5 y2 r( `: V, u" o9 w( o/ q<tr> 0 ]6 ?+ r. C; o. P8 b W
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
5 b6 W* s/ }, Q* y$ n2 g<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ' ?" y6 `3 r* G
</tr> 2 k* n8 w. ?/ Q; i1 ^' G% d
<tr> ! J% w: v9 F8 H: j
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
/ Q0 m. R) @6 r) |, a</tr>
* l9 ?/ q( l1 z2 A. U! @! x</table><%set show=nothing%> " I2 Y. `3 T1 m7 t2 @* v
( }9 ~$ q q$ A
劲语句---精华语句: 7 U- B) D3 _' ]. i
id=request.querystring("id")
$ W2 a! G2 p, U& q' A7 Y. p' ]- ^在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
: [8 B7 P/ G/ uid=request.querystring("id")就是把地址栏中的id的值读取下来,
% T% r9 Y+ Q5 N+ k2 X% X1 D因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
/ _, r, J" M( U; s! j0 g4 p+ E所以show.asp使用id=request.querystring("id")语句把数字读取下来 * |# d& R6 _% y; X+ Q; K
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
4 R; D$ s. d/ Y, A5 O向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
. b! _, ~( c9 s+ z0 _最后<%set show=nothing%> 5 r; F8 K0 z9 y$ n2 X; p
$ b; q# L; ]% }. \3 W7 A2 G) y- v+ @好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试 |
|