返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
1 G0 }1 k1 S9 I真NB..佩服ing .....
6 W; C6 r; `: ?5 U" l大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
" O: D; A0 O" }2 c$ f9 [9 g( G
6 ]9 s8 C" `; b- e/ ^同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
! V+ s! E2 U9 @, ~8 Q6 y  j8 Q: f* M
一、建立文件! 0 E4 }: s. }( s8 J9 k
最简单的论坛也要有几个必要的文件,就是: 9 v& K) J$ f- A: K

& ~7 x+ E( j. g# {8 f1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 5 {& |  [2 t% g" j
' J, U% l! n% U8 g- C- V9 w' _
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
9 j+ J0 Y9 Y; F9 q1 L' l- M% R! L1 o
0 M" L6 d2 M7 O9 U3、发表帖子的文件----命名为:say.asp ' k8 k) }5 Q+ A' C. n
0 j2 M8 L" T- T5 k
4、保存发表帖子内容的文件-----命名为:save.asp + x. }- B1 U" O! @8 {, F; C5 \

* g- V8 ^1 x% {) B& x( J$ l5、显示帖子标题的文件------命名为:index.asp
8 J' ], K0 Q7 p* Q  J
$ C+ m, i, m. Y$ p' b! Q6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp - L8 m6 T1 R: n7 g7 E  s1 B3 [: G
7 O7 d: |1 e' \- e- G: ^) |0 |$ Z4 V
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
# g, ^+ u+ b' I5 j8 U& H4 B5 `: B
二、各文件的主要内容 : v! b9 q7 |( _) ]

7 }9 P. n; u  J* T  Z7 h0 i0 |1、bbs.mdb 1 Q+ }9 c3 T9 O2 L. s0 i* ~

- w! l0 h3 F3 W) `* _打开这个数据库,建立一个表,命名为bbs
- A6 O# b( ]* h& p% @1 M: T; J! e4 n. F8 B# S/ d5 t. y9 n2 j) x( d
该表中有几个字段:
3 Q, u( F8 B' H; z1 j
; |  M& Q9 f1 `) T. x, @) j5 t0 Hid(自动给帖子编号),他的数据类型设为“自动编号”
! |5 u+ O7 t5 c2 a% M5 M. f- Q( k8 W) e  l
name(用来储存发表的作者),数据类型为“文本”
2 `) [2 G0 W* @
6 m$ s6 \: ^( N$ C: ytitle(用来储存帖子的主题),数据类型为“文本”
. I( s! H2 |3 o$ w3 ?5 k# j7 M- M5 [- X! G
body(用来储存帖子的内容),数据类型为“备注” 0 T4 x- ]! a3 C3 B' G4 v% q# r4 g) |

2 R; d$ `9 \) Z& S3 A5 k9 _' {2、conn.asp
6 k  U$ w+ L: D. A6 s% U6 N8 x源代码为:
% J7 U* p! K& ]* O1 J<%
4 c% t' J5 l- W9 KServer.scriptTimeout="10"
% Q. A1 N4 L/ O' q' l" wc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" & b+ Y/ z$ v6 G7 y- C
set conn=Server.CreateObject("ADODB.connection")
9 R1 o  w, ]6 F, u' @conn.open connstr
* U$ J2 }" G  \0 X6 _( A- u%> " B, t! j( N5 f) v5 |3 v

9 u+ \* Y. a% S, o" N这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! - d) b& r5 l) ~: G- a& g% p
; R' H! k- ?( `! Y8 u! S, u
3、say.asp - _0 v$ O: ^% e$ |
; M: E9 ~  e+ n: @5 Y% h; ]6 S2 r
源代码为:
: ~$ V% F0 g# d* n' R" p<form method="POST" action="save.asp">
. n. F3 i  @% M  Y: S<p>大名:<input type="text" name="name" size="20"></p>
' C3 U2 V: B+ O4 @! n, H) U<p>标题:<input type="text" name="title" size="91"></p> ) p2 h, M6 c+ @5 W( Q/ v1 C
<p>内容:</p> 0 F8 N" E3 f" }, A" e  Q2 Z/ m
<p><textarea rows="11" name="body" cols="97"></textarea></p> ) b. V8 L* ~4 Q; c* V
<p> </p>
( e1 v# c: h# O. c. O<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
1 V$ b2 _5 O3 t</form> $ e0 ]% w  |: g6 L, B
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
) c: ?2 Y: |$ n# i不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ( O7 ]3 S4 T$ b; [0 k

1 J  Y0 g) m7 ~. S; z  h4、save.asp 6 g" y9 h; ?& R& J* m9 f5 f
/ E8 A" }1 r# s# R1 y
源代码:
1 n% T& N1 a& U! G5 c' u+ ]. B<!--#include file="conn.asp"-->
& S/ {( `( z, U2 W- Q; v<%name=Replace(Request.Form("name"),"'","''")
: M1 y$ w: D$ f8 f- T3 ?; c* w& Wtitle=Replace(Request.Form("title"),"'","''") - q7 \# \0 E( m% K
body=Replace(Request.Form("body"),"'","''")
7 x+ O& }4 p# `/ ^' P5 O: k' [%>
: h" a# `' x5 g. t- s( O<%if name="" or title="" or body="" then%> % W9 C6 ~+ B  s- T9 K# ]2 d; W1 {" `
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ; L2 j. I2 I  {- E, e5 I  J" A! \
<%else%>
& J- x8 {: I6 b4 J<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ) D6 v  f# v, K1 ^
发表成功!<a href="index.asp">查看帖子</a>
  c+ f7 Y4 p0 X% i- W<%end if ' P3 Z# D* c; e
set savebbs=nothing
5 O5 {* d  w& P: q, E6 S8 H! J# }. L%> ! L7 E. S. B! _0 A0 f4 G1 |

- I0 G  k6 L$ s/ }第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! " l$ i6 K2 B9 j4 K3 @, ^
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
( F6 d/ a$ C4 T4 @7 _, O  \接下来几句:
: |; V; z) W1 ^; y8 T* _4 Q. bname=Replace(Request.Form("name"),"'","''") . C8 F. c! b2 k. R; {
title=Replace(Request.Form("title"),"'","''")
5 y/ h& v8 R2 o+ ]7 a3 n+ o9 hbody=Replace(Request.Form("body"),"'","''")
+ |: _% L2 p. b
0 Q% W' e$ z' u' S“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
" U; C2 ~* W% c$ z/ m* K$ @8 J而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, $ L2 o5 {! y! e. g+ q6 x: b
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” " H* Q2 k3 T% ], m! L7 g5 J
就是把表单中名为name的文本框发来的数据储存在abc123变量中
2 T; ^' P1 e7 t, e: {
# ]1 u/ I6 n; P- e1 M' Z. j5 A+ V$ f接着:if name="" or title="" or body="" then
& Z: V6 a0 A0 i  _, e% \判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
' v# ]: Q( D7 `0 h“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 4 ~0 u( O- |" o: e/ k' y
该语句属于html语法,大家都看得懂的!
1 ?; t  D  y  {  H; o# x" f/ v: y* u
" r& J. S7 b, p3 `"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: & I2 B$ U9 S# |* o9 q5 q" |, e
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
/ p9 \* D" w9 U) M7 p( ?发表成功!<a href="index.asp">查看帖子</a>”
( x7 E7 D; a1 u( o4 ?' s9 k1 \& _
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 3 T4 g+ F  V4 c7 |2 k; q, p
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ) v0 P( f: B: P& W
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ; j% A! F) s& y) }9 g
values是“值”的意思 - K' h" C5 G( G! z7 I
就是插入向量name,title,body,向量用格式'"&name&"'表示
8 O% k' y. h% V/ T6 m: i4 X! r8 X4 X" l# i. y% ?. J& {
最后:end if就是结束if……then
: x! V' `& ~5 g* ]/ r5 [set savebbs=nothing可以说是关闭掉: ) V3 t$ M$ w6 J6 \0 b* ?  E# s
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 1 u+ w' Y/ |4 e) u
9 d- v0 |' A$ ?$ a7 y) e. z6 G

; W8 d# x9 Z4 _3 o  w8 }5、index.asp ' P: E: Q* S7 G
源代码: * J# P) {0 A1 E, S3 e' R
<!--#include file="conn.asp"-->
7 a1 a6 _, u$ F! O* X. I/ ^5 _<b><a href="say.asp">发表帖子</a></b><br><br> % H& F9 m5 |( P: g  ?" i
<div align="center"> ( y3 J6 N* Q+ \. ^4 k+ r* Z
<center> 7 j8 C! x7 ^- e1 r" Z
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ' v' R; A& T4 Z
<tr>
: P. i; W, X+ L# P( I<td width="17%"><b>作者</b></td> ' Q4 P( [3 h8 F
<td width="83%"><b>主题</b></td>
; C# L3 d! l4 o8 E  q" {0 n( [2 [</tr> : b: y& C9 k1 O3 v. e( D
</table> 1 K0 Y$ R3 r3 _) h( }0 E
</center>
0 I3 t& @) g$ A. @</div><hr size="1"> % z# @0 T! i/ m2 h2 }$ m1 G5 b
<%i=1
3 z5 g' }  J( f0 g3 ?set showbbs=conn.execute("select*from bbs order by id desc") , e5 }& [0 ?- m
do while not showbbs.eof
: ?8 Q2 G/ Z  d7 K) H%>
* L( f- ?1 N. h& s& [( T, s- W% e<div align="center">
* E2 H# a/ p6 d2 @; j5 `' k3 W) V<center> 0 r" ^8 I3 o; y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 1 E! J1 |0 k% x5 m4 }1 D
<tr> 0 l' q) j- U& Y; h- G, L
<td width="17%"><%=showbbs("name")%> </td> 3 W: R+ J9 [( r' U/ ?$ t
<td width="83%"> 7 e  _6 N2 I$ b$ V2 u
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 2 \3 |. S# h9 U+ T5 Q' w) o7 E  u
</tr> 6 l  `  [. X/ I' e7 ]/ k
</table>
$ Z1 M& ~& Q) j7 s, k8 p</center>
! b3 n- G& a: X0 n. F$ f: V</div><hr size="1"> ' F. R7 A3 F) L0 \5 Y, M
<%i=i+1
) C! f4 C) p* G) ^- {; Q+ Qif i>50 then exit do % ]8 X8 |% ]" \5 w. ~
showbbs.movenext " T, i5 e: d" p' Y) m5 ?
Loop & |2 @; q- \* f- z: v7 N# ]( x
showbbs.Close 0 p! V5 z( r  c: O
set showbbs=nothing ; a- L8 A5 H, q
%>
6 j; A: i& s& K2 b) i" _
6 D. h; V/ F, ~9 W, G" I. N3 k这个文件就不一句一句的讲了 % s3 j9 F1 G% Y2 O1 a) A  u
主要讲精华部分:
5 J; M9 o1 M& O, X6 y0 W- a  |set showbbs=conn.execute("select*from bbs order by id desc") ; a' J/ W* b9 d9 k8 j
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, + s8 K! Z! K6 b/ q8 t& ^0 g8 `
还有这么一句:<%=showbbs("name")%>
6 \0 g  v( O: B, J就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs   P$ J" T# ]- o' V
代码中的i=1和i=i+1
4 Q4 Q  G8 l, r/ ~: L4 B% H. z" P! Mif i>50 then exit do
& ]. |, \5 j7 [+ U7 ?7 j4 M; tshowbbs.movenext
4 F0 x! L3 b& x/ OLoop . k5 z$ T9 T: L& O; p! Q! z# j- K
showbbs.Close
; b# J1 Z1 M: Z5 qset showbbs=nothing # y* c" k% A$ q, v+ |7 \

& t0 t' H" v. L8 t  J1 s7 k4 O+ V这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
2 b7 q8 F7 M) g( x5 V: R/ wif i>50 then exit do中的50可以修改
  J/ e9 _+ W, V: P. A但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 ( q3 Q  X. Z  Q$ f/ n" Q- X$ ]4 e
还有一句很有用的: ' X  E" y  J8 A
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ) U  g( o" t" W/ L# e1 k5 m
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
0 H9 }# [$ }3 T9 P0 @  A! g等一下在show.asp文件中就有用了
2 J! S2 D, d' R, F. ^& e% _' k3 Y8 c: V
5、show.asp
; n  ?. s) V  J* ~, _2 A. F源代码:
! g' {1 A$ E+ Q( R& p: v
# f, T, ]: j0 X; i! ]1 j3 C<!--#include file="conn.asp"--> & T! Z/ e! a1 f
<%id=request.querystring("id")%>
# O' X3 K) Z. w$ i* L2 D<%set show=conn.execute("select*from bbs where id="&id&"")%>
# \3 g4 `- ~* j3 R$ D: g- f8 @8 u# o- f6 w<a href="index.asp">
/ c- B0 P( H1 i<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
/ j* V$ e. D2 s! W<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
, p1 ]% {( f7 a0 O7 |# ?- g1 o<tr> & z. e: w' X. J: Q9 E
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
& T7 m8 e4 w6 {* Z' `( ?$ E<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 7 g7 m6 y, V. D" U
</tr>
0 F, i, j+ g* b  ^0 ^: m1 x" c<tr> 6 w" g8 [& q9 p& Q
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
  y" J' z* G9 m# ^# T* @) t( q/ Q  Z</tr>
& q7 a4 H/ ]/ f  o4 ]/ q3 N</table><%set show=nothing%> 5 I; X$ F. K/ l+ t! v' u

8 W6 f% n+ }% s' N% g" f劲语句---精华语句: , n1 |2 B- m/ W& `) q( n& b
id=request.querystring("id") 2 M9 w3 a: }) O# m1 h
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 6 y- S4 V" J* o9 {" \8 a) w( F% B/ T1 j
id=request.querystring("id")就是把地址栏中的id的值读取下来,
8 |6 E- P5 q2 N8 Y因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
) d, g3 y5 a# Q) k所以show.asp使用id=request.querystring("id")语句把数字读取下来 + f/ s0 B7 O+ a8 P
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
5 V5 t  X9 K5 a0 K* ~向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" " s5 L$ O) }" b, {5 d+ q( n% v7 }
最后<%set show=nothing%>
) l6 {8 y+ n5 B+ o6 N: t$ C2 k& t* _( m  k# o
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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