  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14191
- 金币
- 2386
- 威望
- 1647
- 贡献
- 1334
|
学ASP朋友的。。给大家分享个好东西
* v) x0 ]& s4 c( k真NB..佩服ing .....3 g6 }! @7 s# f) ?8 K
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
/ Y) [) ]7 X( n0 w1 Q" C' t( S* i2 @% F$ m% b' Q. c7 c$ r7 a
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
0 ~3 E3 ]. x" v; V: f7 A, I9 {; E( L4 L! R. ^4 {
一、建立文件!
8 J( l8 G2 U" @+ q最简单的论坛也要有几个必要的文件,就是:
`& {9 T$ D8 h5 ?' U
Y5 I6 y) ~1 K! F; a) l1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
6 D3 t+ u6 l- R$ V) m$ Q
1 [# i, b/ l" e0 q% d" m2 j2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp & w" y" J: L- Q x, `- }
9 e0 P7 u4 C! e. s3、发表帖子的文件----命名为:say.asp
: {8 m4 B6 h& x$ e2 j+ K
: H+ {% [& k; E2 u4、保存发表帖子内容的文件-----命名为:save.asp
5 R- B/ v) f% K9 W' R$ n
) k0 w# ^0 J/ M+ v+ N; h+ ]5、显示帖子标题的文件------命名为:index.asp
! x# u( i. g% s
* g7 ?( J1 m: z) q, ]$ Q# W6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
' r. x L" {- h& w
, l" X @0 h6 t建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
0 ~0 D. g( A0 y/ K, ~: D) \# D. {! ~' A0 _- t) x' H5 O
二、各文件的主要内容 8 p9 v; p2 k& S* w$ `
) X7 ?% z2 T2 c& V9 I I. H3 r4 Z, ?
1、bbs.mdb % H% S, ^- ?3 ^5 f/ |6 [3 a6 a, D
5 x' w5 c: ]' D0 b+ L# ~" z
打开这个数据库,建立一个表,命名为bbs $ Y$ b! |) W3 S: s! H
+ i" m: _$ z& D- J, P, `8 s. r该表中有几个字段: 3 t; c5 ?0 R" t5 Q& O; O
2 D r, c7 z y" a6 j* V
id(自动给帖子编号),他的数据类型设为“自动编号” ! G7 `8 [( h6 Q' X& E" J
# `. O8 N$ F, [ p# ^$ vname(用来储存发表的作者),数据类型为“文本”
7 ^; y9 [3 G9 S2 T2 _) C5 S
0 w, \' t |% P u% r+ y$ \title(用来储存帖子的主题),数据类型为“文本” ^. G" W4 I8 j$ s! i
3 o" P: `, c8 R- w C' Z
body(用来储存帖子的内容),数据类型为“备注”
$ v7 \( h0 ~0 q: i1 P
* W) G& y' o$ z; k+ C, k, m* ?2、conn.asp
2 i0 ?. b& x& _) v7 R( S源代码为: & c% E* R* ?8 V. \8 C" q2 }
<% 6 W2 i( @9 A) `/ u4 ^3 ^
Server.scriptTimeout="10"
* G: P. g9 J' E. l9 r/ {c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
3 [9 V7 U& x/ b: Nset conn=Server.CreateObject("ADODB.connection") 9 B2 w4 l% d; j& K5 N$ ~4 \" p% b
conn.open connstr ! j* M& X- ~9 U& I2 o! O& ?
%> / D2 C! _% F3 _ D6 V# P
* o! Z5 @+ G! e
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
j& ^1 O; w+ R3 P) E* E1 q* |9 |4 H: l* r3 n! f5 z2 w c/ ?. u
3、say.asp " Y3 H4 L9 a1 N# l9 @
, l: R; i& A( x) x2 L) C/ ~
源代码为: # Q; g0 e% M# ?0 a
<form method="POST" action="save.asp">
; @ \2 F& B6 o: @( j<p>大名:<input type="text" name="name" size="20"></p>
3 {9 ?. P. g6 I% c% _; L( L0 @0 P<p>标题:<input type="text" name="title" size="91"></p> 0 r9 p# K7 M3 `
<p>内容:</p>
* ]. g& C- L7 O5 a( L<p><textarea rows="11" name="body" cols="97"></textarea></p>
% K1 G G3 N0 ^. ]: r<p> </p> 0 Z1 d! }+ \7 N5 W
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> " e* s3 {) U: Q% V
</form>
( o( G) g, h9 Y/ } d Z5 ~大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
# t- V' i; B3 b1 ?- `6 d7 |不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
$ \9 E0 K" m; a$ o7 V* b- {& c1 k
$ ?( {$ O6 ~/ V0 T4、save.asp 9 M# L! d7 ~3 d8 n
. |9 G3 N( O% l& O" A) Q) D源代码: $ N$ L2 ^0 _% l' r8 {8 P
<!--#include file="conn.asp"-->
$ G3 ]+ k3 ^0 S/ ^: n: E! U6 o; n<%name=Replace(Request.Form("name"),"'","''")
3 z9 D b; P( o. w& f5 n& gtitle=Replace(Request.Form("title"),"'","''") 5 e1 i, X& J0 p# L o9 c& o% r
body=Replace(Request.Form("body"),"'","''")
' J( h! E5 |4 D% J7 ^% S4 f8 o%> . O1 G9 v0 F# I) G0 M
<%if name="" or title="" or body="" then%> , e' Q7 U) |5 Z$ ]% u. W5 t0 o
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
2 U( { V7 x$ M( @<%else%>
/ c1 Q8 U- g- W: e. {$ E2 w3 T<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> * f, g" o) ]! s8 P
发表成功!<a href="index.asp">查看帖子</a> - O7 g" S1 r& V
<%end if
1 p1 n {8 Z" R5 J9 Dset savebbs=nothing 8 z* R7 P1 K; l
%> + Z: l% {( _9 z/ j
! h/ R! a4 f! v' ~第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! ; L: V3 \9 Q9 P% m, A4 f
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
: J: R& D }. y& k3 d2 w2 }; B接下来几句: : q" E+ S f* @0 ?: K, O, e
name=Replace(Request.Form("name"),"'","''") : z' f; ?4 Y1 P+ Z/ n: ?# i- b
title=Replace(Request.Form("title"),"'","''")
( b+ C+ P$ r- ~8 L x f5 Kbody=Replace(Request.Form("body"),"'","''") - r% n% J: h+ |# L; y/ o
3 z$ F7 R! y9 j- f
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
1 }; n! c0 W* }9 U3 w4 I- p4 T9 I" D而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
2 r! D8 k; Z2 g1 e* p: S% k如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
; A; v1 G0 t9 W1 z就是把表单中名为name的文本框发来的数据储存在abc123变量中 # ^& K! i8 k0 o$ {. \! D
% l7 h- j: y$ t
接着:if name="" or title="" or body="" then . K: k2 J/ R4 i3 `6 i2 o
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
1 K0 E; l6 n4 X) s“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” , y3 u5 E3 W, _' R, H
该语句属于html语法,大家都看得懂的! ' D0 y! ]2 q5 j; }; o
+ q0 x, h* J( ]. t* U"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: {; P, U8 n" \7 W% z# V
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
( s/ D% O4 k8 }( D; i+ ~发表成功!<a href="index.asp">查看帖子</a>”
* t$ c' a; i; E$ {9 P; _9 ^8 C! s, K' p' r" a/ B, `* C* j
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: - R% b3 b3 E; d# W4 B% C7 ~
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 9 q* b8 T& C- I- k1 [! ?3 x
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") $ p. F) U/ a3 ]5 ^& q/ Y
values是“值”的意思
0 L$ `6 t1 y3 L% A就是插入向量name,title,body,向量用格式'"&name&"'表示
. g( o m1 F* p4 k# c
# b% Z3 J% X/ X* Z8 l最后:end if就是结束if……then ( y; j& N- q6 T5 E& T5 U
set savebbs=nothing可以说是关闭掉: ) N' _ M& B0 B B% w
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 8 @/ u3 w: Q8 f) ?5 ?2 u a
Z; M$ G" @5 {7 x' M( T" |* L8 x5 j
( M! r0 c0 F7 f2 P2 L
5、index.asp 9 [" @$ _% ?) \# _, k- u
源代码: ! l1 x, T8 o- J; G, |; s5 p
<!--#include file="conn.asp"-->
- i3 G( T- Q& ^6 n. n5 `! n N<b><a href="say.asp">发表帖子</a></b><br><br> a5 N2 f _% u2 h
<div align="center">
) ~4 G6 L# R3 C& X# K<center> # o8 L/ O+ _* @$ H1 ^' L
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> & L( a; I% z8 W" E& s. {
<tr>
2 r4 H5 ?' W. J: F5 V" z<td width="17%"><b>作者</b></td> * I/ d/ J8 g2 V5 B) e
<td width="83%"><b>主题</b></td> ( U8 H2 ?9 g! F2 Q" s8 Z& R
</tr> 5 \8 T5 U) d5 r) ]# I7 H4 w
</table>
/ ?& q$ Y2 K7 f% e% X</center>
6 T0 a5 G' R! c0 U5 I6 @$ ~7 B9 F' d</div><hr size="1"> m- X4 e3 T/ J
<%i=1 ' Z: C1 Q) t0 f" j ?( V
set showbbs=conn.execute("select*from bbs order by id desc")
* d: @5 Z* d) ^2 { ydo while not showbbs.eof " B) M' y. d5 U* H) ^0 z4 _, O# ?
%> 2 {! _6 R' y/ i7 ~5 a" `
<div align="center">
$ o' m9 l2 D. ^0 c<center>
/ P8 e- X! \& ^<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> , c7 Z+ F* T4 g5 n& |8 i* ]
<tr>
! Y- _/ }/ d4 }) T<td width="17%"><%=showbbs("name")%> </td> & o1 p+ I6 {* j9 a5 x1 D$ X
<td width="83%">
9 G5 e; H8 z8 b% y& F<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 2 k K+ C% I" N9 W {
</tr> $ Q$ | K9 ~# Y# W0 P1 U8 \
</table>
9 E |7 G3 i0 v* @/ K$ |</center> ! |7 W$ t# S: e# h6 r
</div><hr size="1"> * |( c( z; h. e4 t
<%i=i+1 $ x7 q8 [4 v3 S+ l% a6 }* a- u
if i>50 then exit do
$ B& E0 @( @& A8 D2 J5 K9 tshowbbs.movenext G4 Z- J+ `/ T; i6 r5 \
Loop
% C6 O- u t: }) q: dshowbbs.Close # B% F: g- _5 V
set showbbs=nothing 0 ?. h2 E7 v( I, z
%> ) i2 d& f; |' e
0 {8 z# y# d' y& w1 P" h& d
这个文件就不一句一句的讲了
# X& O+ C+ i# ~# X. J( t主要讲精华部分:
, y( q% w$ q( r1 }8 N4 Bset showbbs=conn.execute("select*from bbs order by id desc") ( l, V+ J* u% u* @
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
& } x. i% U( C$ Y4 p7 M" ]还有这么一句:<%=showbbs("name")%>
0 u, g( m1 u, J2 X- D就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 9 @' F. Y) z" b, n1 v- Q
代码中的i=1和i=i+1
" t* e, \: z( S2 V' y% R) _if i>50 then exit do 6 U2 T J5 m% L3 C
showbbs.movenext 4 y+ m! l( I# j
Loop 0 y* j9 i1 i1 j4 \; }9 B
showbbs.Close
( Y. D" u- L! V' J( A( oset showbbs=nothing Y* h ?7 [) q5 V7 M
: ` |2 j( m6 F# K: m: I
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! ' E! M0 z% W: b) N2 w* z
if i>50 then exit do中的50可以修改
; {; y- m- ^- i7 t( S2 B但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 1 U( v/ e3 z/ s' E) `8 D0 z+ N8 e
还有一句很有用的: . O* Q! Y1 [, L) a: ]8 i2 ~
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
( u- R$ ^+ |; L2 r4 E$ V里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 4 J) K- g2 ]( g+ c) P
等一下在show.asp文件中就有用了
$ ?' u( e; E N9 p) F7 ~" W: q; H) ~; ~
5、show.asp
9 z" Y' {( f" l- J源代码: 1 T7 A$ [" J$ x8 }
, O( S( |1 q$ O4 u
<!--#include file="conn.asp"-->
# ]2 M8 j6 o" \' b: W$ v# _<%id=request.querystring("id")%>
2 P) C* q# F+ k/ f" d<%set show=conn.execute("select*from bbs where id="&id&"")%> 2 g! D: J3 A' B
<a href="index.asp">
: d8 q1 v" j) g3 E" W" E$ p& D<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . X1 d: s4 T6 H2 m# W
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
! r6 R" n# Z$ R+ Z4 ^<tr> 0 | P% N* B4 f4 \! i6 x Q* s1 P1 o
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> * M h! R# ]" s& p/ c
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 6 R" e6 W1 @" i7 U/ q
</tr>
! v8 h0 H0 |3 |3 o' h<tr>
6 e4 G4 S9 g. ]' _4 K4 J<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
& T9 u! u" @5 s</tr> ' v6 D& M _% Q/ _6 ]0 `5 `5 b5 A
</table><%set show=nothing%> + x8 ^6 y+ |0 z/ l& T4 c6 _
2 A" u6 t: h- ^& ^1 h8 P/ j: C E' @
劲语句---精华语句: 5 C6 K7 P4 v% p& N% d
id=request.querystring("id")
7 e" {( b5 A2 m. @, [6 n0 s在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
3 I- S- C) q% {+ zid=request.querystring("id")就是把地址栏中的id的值读取下来, : v! b3 d* p% x; |& c0 }, Z4 P
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, , ~ w% f- Z/ n
所以show.asp使用id=request.querystring("id")语句把数字读取下来
' E. w3 Z! z( c8 Y于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") . l" A: E9 d2 x
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
9 O4 K+ F9 W ?* K. E$ }, y A最后<%set show=nothing%>
8 p9 F* ^# q/ x9 r# u4 p+ D) R: P* q& H& q) u1 G
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试 |
|