返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西- v# t; r" p9 w* Y# L6 S! d
真NB..佩服ing .....
% ~, k) ~5 q& M+ y/ Y大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。  _" W8 N$ f. x% P4 m
9 \3 v* W; x$ b# Z' }" }
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 6 `. l0 V( ^8 |: q% M8 ?4 T- `2 Z& S
1 k5 x  |$ p6 Q- t+ a
一、建立文件!
. v* r, `) n' k5 V- l最简单的论坛也要有几个必要的文件,就是:
; ]6 Z2 b$ x7 v# s9 i0 u( N# w/ i: _* M% Z+ Q4 S
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb , A7 M1 l7 l! d2 G4 y3 ]# O$ P
6 q( N- Z; `6 y( k1 y0 L* A! B
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp $ x/ i9 Z+ u- m, i

2 X9 K% ^* n. g7 F' V' P- S3、发表帖子的文件----命名为:say.asp : P0 z$ \2 {, k5 O% w3 r  t% w

8 o/ h2 s+ D7 d3 u0 N7 W9 X5 R# |& D4、保存发表帖子内容的文件-----命名为:save.asp . M- _( i, S& B8 C" b, l$ A

( w% u8 F  V3 X) g, b5、显示帖子标题的文件------命名为:index.asp
# f( Z8 }* }- c4 Y$ J6 k/ w& O# f$ [  l. k& q
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ( z( j" z+ }8 _7 [( G6 }
% D7 j! M# _% L* `% m, ?6 A5 Q
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 5 `2 Y+ w0 Q- i* n

+ M/ [7 K" x" D二、各文件的主要内容 ' ]2 _7 ~1 Y5 J  s
$ \1 K& C, Z+ {7 Y+ ~, j! n6 r) U
1、bbs.mdb
% D) }' z$ V8 _$ a
6 x1 `! U- a1 M& ]7 O# O* X& [  A* O/ C打开这个数据库,建立一个表,命名为bbs
3 f2 W5 S, U8 X* @) s
6 O% F+ a& R( ?6 f7 ?该表中有几个字段: - p  a; T3 s. \) L$ n7 r: p

0 U2 \& @% x$ c/ O. V& Lid(自动给帖子编号),他的数据类型设为“自动编号”
) T& ]" t, v4 j1 V0 x3 ?7 d" Y( d6 r" G" g7 z5 x, K; n6 v1 }6 U
name(用来储存发表的作者),数据类型为“文本”
1 ~, m; z' g% L; A  A. h( r' x2 \0 D
title(用来储存帖子的主题),数据类型为“文本”
2 y5 G9 N0 y* K  L& z& y% B. o( k5 V" G5 h( Z7 ]- G( ^
body(用来储存帖子的内容),数据类型为“备注” ' q- y4 w; j- t, j9 t
( c' y) f7 o. q3 e
2、conn.asp
9 p& _$ ^, y& v4 Q/ p3 ]2 Q源代码为:   ~6 ^  Y7 T5 s
<%
' Z; @+ n: B/ K# K3 ~9 bServer.scriptTimeout="10"
! P# V) o$ s2 {  p7 q! F+ j' ~c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" , t0 V# E4 V; l8 ~
set conn=Server.CreateObject("ADODB.connection")
. _2 M" S" _' K# ^$ N; _conn.open connstr
# j/ ]& C% Z1 ^  D0 M6 p%> ) \" r1 b7 H6 u. {, g5 H

& v  ?2 K6 e8 i+ T$ r9 [这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 7 @8 K" T& D' {

2 Z" |: ^2 x5 g+ z& h3 z3、say.asp 5 v( a4 [2 d: A; p! W

+ }$ ^! m' C9 }1 i5 N1 V& @' F* k源代码为:
& U6 r* z! i+ a5 R3 Z- j# ?<form method="POST" action="save.asp"> / X; M$ ]% d7 I+ A' b  r
<p>大名:<input type="text" name="name" size="20"></p>
/ B9 J" _) M) X- r% ^! i<p>标题:<input type="text" name="title" size="91"></p>
; z3 R7 N' K  @1 q5 g<p>内容:</p> , B9 Q6 W3 q  G/ p3 ~$ T
<p><textarea rows="11" name="body" cols="97"></textarea></p> 5 b  h! Y; H7 `5 `" m$ e
<p> </p>
+ `7 P) m8 Z, t8 e! O4 \<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 4 R" G0 h5 H) N3 o3 q( S
</form> ( I. }+ C) O0 [2 ]9 U
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
" G7 y& G& |9 E$ Z/ ?9 M不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 1 |; A  X+ U5 ~

% a& H/ j9 C* w9 {4、save.asp . x2 G! H7 P% ^

8 R8 v" N0 u4 [8 k# L源代码:
; d; c% _7 ^2 B<!--#include file="conn.asp"-->
$ d, y& G4 I0 N& g<%name=Replace(Request.Form("name"),"'","''")
, l8 a& v+ Q5 D  I# l7 N6 k$ ~title=Replace(Request.Form("title"),"'","''") : S7 h0 }/ \- y& e& ]! p! B
body=Replace(Request.Form("body"),"'","''") ! c# c4 N# Z+ n; x+ {  e
%> * `; u3 b8 q7 }' d. T6 I
<%if name="" or title="" or body="" then%>
) }6 @  \1 e' d* q$ p, `1 t9 ^请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
* K6 ~' i! P" F9 F4 ~; s<%else%> + }9 a: B$ G9 s
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>   Q. _: `# l& v- @2 P$ J
发表成功!<a href="index.asp">查看帖子</a> 7 f/ L* ~3 T1 K( L7 ?2 s. J
<%end if ; r' ]0 J0 n& L( K
set savebbs=nothing
/ S& C$ w  Y  M" ~%> & s2 Y" x3 C5 }; v3 ^
" z- N8 `- g) o( L* X
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 0 Q, e# \" G4 M% e$ n
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, , q% w) Q/ C' e! f) i4 X: g) a
接下来几句: + U0 Y6 q6 Y' A$ c: O
name=Replace(Request.Form("name"),"'","''") 8 X0 a) X% ]/ Z' E0 ?
title=Replace(Request.Form("title"),"'","''")   e/ O5 g' a0 o5 ^
body=Replace(Request.Form("body"),"'","''")
$ l/ X. u2 c* I2 X+ o7 u3 k
; s! G/ H. p; N) f, @- S+ q“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, + u6 \, U  C& C
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, # H. E0 x8 c# _" j
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”   [/ f+ m9 u' s
就是把表单中名为name的文本框发来的数据储存在abc123变量中
) I& a8 o: b; c9 `6 G5 P
' H& T/ t: |; {& q" M接着:if name="" or title="" or body="" then 9 o0 t% f4 {: J+ C4 o5 H1 \
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 0 H; u; V: [" G. g
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
' N; g1 X* W% Q该语句属于html语法,大家都看得懂的! % D' [% p4 _5 F" @6 ~

9 R  \) I& l2 K"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:   L* H6 C! v+ j( t+ H! I9 A
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
/ d: H$ F$ A& n( x发表成功!<a href="index.asp">查看帖子</a>”
' p/ E  p: K) b* m' r( h# ]1 V5 T8 C8 K4 H' U/ @
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: ! U8 r2 {/ U5 X9 ]5 t0 L
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
, k( o/ Y4 |% w* _% d7 r. A4 t中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") : K4 A( p. f$ E3 M5 R
values是“值”的意思
# k5 c( G' C' T# Y9 r就是插入向量name,title,body,向量用格式'"&name&"'表示
9 ^$ ^9 g! B: B  u/ Y/ y6 r/ X# S
& c4 L( F+ ]& O最后:end if就是结束if……then
0 e' b: n; Z, r9 {( n* hset savebbs=nothing可以说是关闭掉: # k8 i0 M, z# h: R
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
2 `3 G: h9 `! ~% s
; O4 i* f) k# S# l
7 v+ m) X; K7 z3 l8 W) A5 d5、index.asp
3 j; P' b! N6 G# j3 v6 k源代码: ) @) y2 W  j4 E! m
<!--#include file="conn.asp"-->
/ Q9 C/ \" u2 e; \9 C6 J<b><a href="say.asp">发表帖子</a></b><br><br> . S5 L8 l4 O4 Q9 F7 u: W/ B
<div align="center">
- \, `0 H/ o* V5 q# L; O<center> 0 T% J  P5 K' n; |6 s
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ) J0 @; m9 {7 ^+ T* V( P; s1 l
<tr>
9 y' i  D, M9 x; o% g<td width="17%"><b>作者</b></td>
& z: p  I& W' \<td width="83%"><b>主题</b></td>
/ N9 l8 R2 o/ k% b' Z4 m. S. ~( `</tr>
. l" `3 }4 f# V& ?* H& Z</table> 9 H1 V: r/ L" u* U9 T1 }
</center>
3 Q( E  }9 d/ `* K0 o! F: ]4 s</div><hr size="1"> % U6 s" m; C; k* o2 J; c
<%i=1
1 [/ _0 j) w' `8 Kset showbbs=conn.execute("select*from bbs order by id desc") , Q% c+ }& r9 E8 G
do while not showbbs.eof
7 j6 x0 N* u3 {8 A2 b%> ) m1 P/ ~8 s0 c
<div align="center"> 0 s# D$ ~6 G) Y8 V& _8 `. o
<center> 5 d4 k- V7 l6 @9 f* F
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
2 D4 q6 A6 g4 Z. k$ [<tr> / Z. c) h0 N6 Y: H( I+ s9 |3 U
<td width="17%"><%=showbbs("name")%> </td>
+ U. U, K4 N. S. u1 b, `<td width="83%"> 5 i; f" R- ]+ n- b1 x
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>   C: f/ Q5 \! {& K  X: n
</tr>
: @- N9 k2 E5 u% s8 |2 \0 I</table>
2 l" S# h' J: ]/ C- b, O4 q</center> 0 M, }3 O. C$ c/ b0 V' N
</div><hr size="1"> 2 m6 A; g+ I. d
<%i=i+1
0 T5 n( I' V# iif i>50 then exit do
# x& H/ `& `, {( P5 P6 X  Nshowbbs.movenext - j6 P0 \, f7 o- v( L: T$ p3 b
Loop
; B/ ~- C8 `) B# G, r+ ushowbbs.Close   X: P# q3 V+ i7 Q7 o
set showbbs=nothing % U& Y: X) ~3 B1 {( x& ^3 @
%>
9 x& J3 [" H$ f' E
" p( x; ^, e5 ]0 N2 E这个文件就不一句一句的讲了 8 r" b0 v: f3 B7 I/ d/ c
主要讲精华部分: : ~" `0 S% E/ {5 Z
set showbbs=conn.execute("select*from bbs order by id desc") 8 @- I5 o9 T0 X: W# `/ W  N
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
5 }% ^6 v8 M* O0 A3 V还有这么一句:<%=showbbs("name")%> ) t! m$ g, H, e! r( x
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
% k9 p3 T' A  Z9 s: z代码中的i=1和i=i+1
* k' m1 `% W5 p# [3 |! F: ^if i>50 then exit do
& j, K( o: h; G1 j" Ishowbbs.movenext
* L8 ^, ^) n- R/ PLoop
) M: h( B/ k  h- [showbbs.Close $ \7 l% M& o5 e' u7 i
set showbbs=nothing + g: [& ^$ w! E# F
9 h. C4 Q" B% {+ O+ h& X0 ?6 g2 X
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
$ F3 ]' l1 Q$ B* L7 cif i>50 then exit do中的50可以修改 & t8 x& S! L* Y9 N# k& a; A
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 0 C4 K* Y6 s+ I: V' |2 q/ ]
还有一句很有用的: ! B0 X$ I1 a0 u' @
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ! U: f* W, S& }" [3 j/ I
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
- d3 Z9 i7 F7 y0 v  R  C. U等一下在show.asp文件中就有用了
% X# }5 l& ?( _/ Y
# W( L2 e& K! F5、show.asp 2 Q+ w! B  q8 _, j, m/ X
源代码: 4 k& [. T# Y  T7 y0 {4 o
$ {2 B! f; O% M$ D, Z" }
<!--#include file="conn.asp"--> % A, k! A- K# d# ]- W
<%id=request.querystring("id")%> - h9 m. a; V+ T5 `
<%set show=conn.execute("select*from bbs where id="&id&"")%>
  F7 F6 W3 Z- [; b% [3 r- f<a href="index.asp">
$ b6 X' Z+ o5 t6 G6 Z: B) j: m<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
7 A$ U1 j9 v5 e! T  \0 Q<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ) H/ }& E# D& w6 D' G
<tr>
) o3 h& k1 X) g) Q! ~& C1 T$ j<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
* u1 U9 R' e* @8 r<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
+ |% B8 x" l0 U3 L</tr> 5 p% r* n, g6 U% w5 a# D* B
<tr> 9 R; J  g- Y' q8 i$ ?
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 1 J, a, }% \+ S# R3 |) y
</tr> # F9 K  i( K( P' V: e$ H
</table><%set show=nothing%> 0 t7 I8 K# M/ V, O/ g$ M
- k( k1 L. D) }3 q4 H
劲语句---精华语句: / P3 l" w/ J, |6 ^* @/ k9 A
id=request.querystring("id") 0 b& V' l/ Z# R& J& h) @* Z
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, * A) ~2 x. t  X) ^! f$ e
id=request.querystring("id")就是把地址栏中的id的值读取下来, 6 s: S+ x7 m& q
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
9 G% v! Y" ^9 q* ^0 t所以show.asp使用id=request.querystring("id")语句把数字读取下来
% K; V6 A& S  P, O于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
0 q2 }) m* E# h) k/ s- x: E向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" + E# I  h' e' `3 `' a7 ~: J
最后<%set show=nothing%> % D( J" p0 V/ a0 e5 L* k$ H
$ e/ p& C/ ]7 n6 m5 h7 |. o
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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