返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西% E6 z: ?: D2 s9 d  S1 O0 x9 t4 t5 q
真NB..佩服ing .....
5 z4 \) g3 Y$ g' i9 L3 b8 p大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
0 x' r, }7 ]( H1 X% D' g, \( t: F) T$ o
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。   c+ K5 f7 b! |9 l
7 N$ u* @2 ]9 U1 i( e
一、建立文件!
4 h1 I6 O( A" E0 W3 V# ^) s$ a+ {最简单的论坛也要有几个必要的文件,就是: 1 q% b# e( E  l4 S- _! O: O) [
: z+ h* O2 N% U! E
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
0 I. p# S5 O& C+ K0 l, D" k1 K9 q9 K) D  P# C
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
1 O# `0 W4 B1 d
0 u$ d  C5 y8 O& a1 ]! X2 ^8 |3、发表帖子的文件----命名为:say.asp
. B4 g0 u8 Z6 L0 B. d+ ^
' ?5 w) P, T0 R, Q1 ?- @  {9 Z2 ~0 T5 V4、保存发表帖子内容的文件-----命名为:save.asp " w% y* s2 {- r  N1 ?5 w
2 F% y# m2 q7 J6 B+ d9 J8 Q
5、显示帖子标题的文件------命名为:index.asp + K; g2 r. ?+ a, t8 S/ D
. _1 l! m8 a* B8 o( }
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
+ E7 Q$ b. p) H
: q. C1 U/ o: A0 Z8 N0 |0 E建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" # G8 p/ L+ |( |1 ?* A- F
3 e3 Y4 P+ B- N, M5 x! j' k
二、各文件的主要内容 ( ^1 }& w% g: Q  r: z2 k) {
  s6 _* ~- O  A! N0 M  |; K( N
1、bbs.mdb
7 [2 [# W% O6 B& D' y- s% S  f3 C9 l/ q% ^8 u
打开这个数据库,建立一个表,命名为bbs
+ j+ z- ^) b4 Z9 {: n
3 `- @' S: E* Q! O该表中有几个字段: / C  e4 W* i9 J. w# ^: r
& b8 @. D$ Q; L2 a+ k$ Y8 J0 _
id(自动给帖子编号),他的数据类型设为“自动编号”
1 P, J5 M8 c) E) I% d8 S) O* q3 Q  O2 x1 E8 n: U% l* n
name(用来储存发表的作者),数据类型为“文本” # j- W1 M7 V" E% w  h  I
. f; X8 m+ I1 H6 f
title(用来储存帖子的主题),数据类型为“文本”
( G5 \8 N5 T# G. X+ f, z0 R( T
& Y9 ?6 o/ o" s( J$ ?body(用来储存帖子的内容),数据类型为“备注”
& m8 `1 U9 q  d$ L; h/ P$ \8 q1 a
2、conn.asp
# K% A6 q, N  z+ p. H源代码为:
1 _9 q0 E/ ?2 s- }% X6 K<%
0 ?$ w/ f0 R8 \! J5 mServer.scriptTimeout="10" $ a' h9 g- A7 W& @6 N  M1 L  f9 s7 O
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
& Y( ]3 |* o$ Yset conn=Server.CreateObject("ADODB.connection") . Q8 f. _/ j* F: \# u8 l
conn.open connstr 2 w7 H" x4 D4 W  ^2 F, G2 n
%>
* _& O$ |1 b5 p3 z' H9 g# t
+ K; [5 x4 h$ U$ }1 x+ _, P这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
2 O1 t6 o' x$ {# s$ r) I
9 I7 ]+ @. ~  W2 W, m3、say.asp # L# \0 Y4 s' q

: N$ J+ S! n; _! F% C+ P源代码为: 5 e# _7 o& _% B" [: N& @) O
<form method="POST" action="save.asp">
8 C/ E! n  j1 F* D( Z* N<p>大名:<input type="text" name="name" size="20"></p>
. V" k, r! }* B3 Y% p/ x: W<p>标题:<input type="text" name="title" size="91"></p> 5 j) \2 F, G* C. u, H- T3 t
<p>内容:</p> ) l! ^( O+ _4 ], m4 X2 |
<p><textarea rows="11" name="body" cols="97"></textarea></p>
3 Y& t$ l- h4 v/ L  V, U" s' y; B+ U<p> </p>
% I: q) I* o6 V: t) x<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 8 g0 T# @% t% |2 [* ]! t5 @
</form>
" p/ D( {4 x; n6 t大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
4 ^2 G0 v8 R$ n# ?+ ^不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! . K7 T( ~& H/ Y* F- N$ l( Z( r' s% D
& j! j$ B8 J; I* A# j; [
4、save.asp
9 I4 f! a: D) h9 K8 P& |. y/ c2 P2 h3 [" z  y3 D
源代码:
) O9 ?$ `( I6 B( W0 C<!--#include file="conn.asp"--> 8 p2 L! O6 k0 X- h9 M
<%name=Replace(Request.Form("name"),"'","''") # K; w9 n" ]8 ^% j5 i
title=Replace(Request.Form("title"),"'","''")
5 }3 X. `% }7 _0 N+ F; Pbody=Replace(Request.Form("body"),"'","''") $ e5 {8 C( _3 f9 @$ X4 r
%>
0 E# B. Y, \8 P; Z, e$ O<%if name="" or title="" or body="" then%>
$ u' F* h/ E) I* }9 m9 n6 i请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
- \3 B+ |2 c; O0 ?+ E7 ]1 u<%else%> + b7 Z9 m6 x+ U$ P/ g
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>   r# B3 s' p% O% r
发表成功!<a href="index.asp">查看帖子</a> : B  P! y$ R0 W8 h- u2 B3 s* ]
<%end if
, B+ ?/ V3 S0 |8 Fset savebbs=nothing , c( A: I- x9 R' K- [- d
%> . T& P6 X1 H* N3 p9 o4 C6 M
. V5 I8 i! W+ f: _% j
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
! h: F; {! Q, n/ x5 ]" \asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
1 }. A/ t. Z. ]$ C$ T' W2 P* H接下来几句: 4 g  @8 D, n- M. b- @0 P, a
name=Replace(Request.Form("name"),"'","''")
6 ?0 n# P& x# e) _3 @5 ^+ Mtitle=Replace(Request.Form("title"),"'","''")
# U  q3 n9 T7 F2 Z; Q: `# {7 wbody=Replace(Request.Form("body"),"'","''") 4 f+ M" ]- `' s2 T
, Y% X4 ~6 r; _& Z* s" t
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
. N" g8 C7 r5 m0 ?! \2 f/ b. z而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
5 `; P) u2 u* h: d8 ^" x如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ' c+ U8 ~- a# w/ j6 z
就是把表单中名为name的文本框发来的数据储存在abc123变量中
/ `" i' _$ p) f3 U" ?
$ k' Z) t2 x& a/ T接着:if name="" or title="" or body="" then   N3 D. m+ F( i+ A8 O" }4 t- {! e
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 3 N6 |$ ~1 q# v; k8 x
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” % ^7 d# Z. y' F3 i7 h/ F- B+ b& x* ?
该语句属于html语法,大家都看得懂的! 7 \+ q$ w, V4 w% o5 j; d
" Q7 Y% B& {( ?
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
# N) T5 v1 g  ^/ t8 Y- u“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 7 d! P) l, @3 B& |- |) u6 T2 i) }
发表成功!<a href="index.asp">查看帖子</a>” % S9 w4 Y" k! j

* [# w5 z- \; _( s+ I- W; p' f"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 3 l3 c% |! o8 J* F! Y3 p
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 9 P7 k/ T6 i& c" h
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 9 q: d4 M5 z* ~2 g7 T/ s
values是“值”的意思
. V) V& L4 N/ ~- _+ M2 r; m就是插入向量name,title,body,向量用格式'"&name&"'表示
! v# J" D) L# {7 j; e
% [9 i! |' \" {最后:end if就是结束if……then / p& v$ n1 |9 S, J5 E1 W5 n5 w
set savebbs=nothing可以说是关闭掉:
' _& V( g; q/ {% }; q$ `set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 9 e; u4 a8 d) w4 D# Y" T

1 ?5 t; V: K8 L9 c( _. V* N9 Y/ R* I
4 @7 z* r0 N8 s' D! u/ ?5、index.asp
8 J8 c+ l! w  ]9 ]源代码: ( }& f$ Z- J& |7 [4 W+ n
<!--#include file="conn.asp"-->
2 p1 L: a8 X. X: C2 \  Y, e<b><a href="say.asp">发表帖子</a></b><br><br> + f$ q( {' F) v9 p  G  Y7 |% J  v
<div align="center"> 6 y! P+ j0 i% O1 {3 l0 {
<center> : r" v8 X# N4 m( ^- V/ ~4 ?
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ; ~7 q4 O- \4 x) Z; n# K4 G
<tr>
1 n: c- B! G+ ?  E( P8 z<td width="17%"><b>作者</b></td> 0 m- T- h: F, J9 b8 m
<td width="83%"><b>主题</b></td>
4 I7 ^7 z7 @& k. G/ E9 S2 v/ H$ Z</tr>
  l( `" A; V8 q! h2 B; {</table>
1 G( }9 k! o- K</center>
3 J0 r- O% a9 t4 W</div><hr size="1"> 7 ]" v0 C+ a" ^2 T# l
<%i=1
  S/ b& w# n" T) i+ P/ zset showbbs=conn.execute("select*from bbs order by id desc") 4 R& @# `1 {: }/ k4 k
do while not showbbs.eof # O1 e/ h( }2 D
%> 8 ^' ]# M+ }# S
<div align="center">
: E/ f6 W3 Y8 L- h, ~, f6 S<center> 0 _/ \7 _, v. A. {6 \
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
9 e: P- X$ f, [3 d1 L<tr> - F7 s! X& H* o3 l0 B/ u
<td width="17%"><%=showbbs("name")%> </td>
9 U" K% A7 N& Y' @) }<td width="83%"> % [7 i( v0 J. f+ o3 Z
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> % T$ ?; R) M7 J. B
</tr> ) X, X  {5 ?; h" v! G! _4 r+ I9 @
</table>
6 X: C  V8 e  x$ C% D. I</center> 5 y% u$ D' A9 F9 Z- Y0 b
</div><hr size="1"> . @& ]; L) h: g
<%i=i+1
$ k  W- E4 O5 n; ^if i>50 then exit do ! n9 e# P" A3 j0 B' v# M  i; r
showbbs.movenext , h6 p+ L6 ?5 ]$ Q8 }, ]; X
Loop / @' }; T. x! N9 j* s) h( i
showbbs.Close
- v1 e! o! T4 k6 ]: e: }5 o$ Rset showbbs=nothing $ S( c5 H& D, G
%> , Y4 F' B% r1 M) [3 b- P* @' g
+ B' l7 G; ?# g: Z4 k$ e4 q
这个文件就不一句一句的讲了
5 T' V2 o& I- ^% ^1 \  o主要讲精华部分:
2 L: c+ m, U, r- a, aset showbbs=conn.execute("select*from bbs order by id desc") * f* \; ~9 Q8 }: _% l7 Y
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, " A+ c7 f$ `" D9 a, v
还有这么一句:<%=showbbs("name")%> 2 A" D1 |9 I2 v0 e
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
4 e0 b! }7 p' ^$ ?! E# I代码中的i=1和i=i+1
9 O9 s9 I1 E+ F; kif i>50 then exit do 0 o7 ~( I9 V8 O4 o
showbbs.movenext " ]' @5 M; C2 u) t. ]% H
Loop
* C1 V! h# k; w1 zshowbbs.Close ) d' w, D' [- }  Q! v; A5 a  K- V
set showbbs=nothing
( S9 }+ t( ?0 q/ Z& U8 g: V9 t
7 X0 k4 X' s( k: c4 b这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
# O2 a) A* j: N0 j) [if i>50 then exit do中的50可以修改 7 ?/ O- G+ A: G8 k2 Y
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
; ^3 P2 ?# M3 t7 k6 Y4 q还有一句很有用的: 2 \! r6 q' H) @8 v! n
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> + a! H6 @( y$ X- U; m, L4 d
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, / u1 u3 m5 j( t
等一下在show.asp文件中就有用了 , Q4 @. J0 n; U4 w, {0 _4 L1 L
$ S* ~1 j0 l8 Z2 ~
5、show.asp
; r& N+ R% o! }' \5 b# h+ D+ N4 m源代码:
; C' T6 B2 Y, g8 h- u# }
7 f6 [9 ]* ?3 f<!--#include file="conn.asp"-->
4 L. b0 |3 s$ i; E( m4 ~, S* I<%id=request.querystring("id")%>
' I/ P- g9 a/ N! p2 @& E<%set show=conn.execute("select*from bbs where id="&id&"")%>
9 P1 n3 H' _& ]0 X<a href="index.asp">
$ N/ z6 a! O+ V! e7 B4 R! L<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . \7 P; a8 Q* `6 p" }
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 1 s+ ]0 P5 `# P7 p! q
<tr>
, e/ ]: v, y9 }) [. Q! X9 `* r' o<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
- _/ _; w# k2 l! w. F+ [, F! Z$ C<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
' p( z9 h4 |! D5 m: {- I</tr> 5 u6 L% ?7 n( k
<tr> & G, p; g. C/ M; z% O) ~  @
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 0 {2 O6 o0 M( Q' }) R
</tr>
+ w+ B  U1 U$ P- B' z: \</table><%set show=nothing%>
% L6 J2 Y" t9 M$ u) [9 P
+ `$ [2 X7 i9 j% K: l& I劲语句---精华语句: # R" f" a2 V) `5 m. P' A
id=request.querystring("id") - E, P" @/ ~! f/ N3 U7 `
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, * ~5 f/ _) e. k2 e' |
id=request.querystring("id")就是把地址栏中的id的值读取下来,
# X: G" \$ l- o0 H- N' p因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
( \" z; n. a5 x: a; m. ?所以show.asp使用id=request.querystring("id")语句把数字读取下来 . h: g$ M6 a5 O$ [* p0 `% `1 }! S
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")   x; y! N4 _% m, B
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"   p/ N- c9 c5 Z" p% `
最后<%set show=nothing%>
, `8 b. Y. O- D2 ]: t5 \! A! X$ g5 }# a" w2 B  Z6 p
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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