返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
0 b& C9 H6 e/ T* B% d! A真NB..佩服ing ...../ v- \5 y/ D! }2 |5 q0 U' Q
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。7 ^) r5 x+ _# d& A2 |% w

# o0 o* L+ }+ N/ d0 ?+ r" C( s同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
: |; b- E3 ?  r5 b+ K2 T) ~+ i: F2 ~. Q- N; r; R
一、建立文件!
0 R2 J9 K; U2 G) Q0 R最简单的论坛也要有几个必要的文件,就是:   S% _" S1 y( i! z5 h2 f

' @1 Q- D3 `! @1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
9 F; _/ ~0 K$ @" |
7 p- W/ m8 ]0 V2 `8 [+ N4 \# U% ^  l2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
; A- F; K' X, A% B  }
7 Q& _) p( F6 K8 ]0 o6 R$ v  O3、发表帖子的文件----命名为:say.asp
% m3 h3 v' l, p- v, [# z% P0 t% w! M; x2 I
4、保存发表帖子内容的文件-----命名为:save.asp ! v0 [$ B. ^3 {# u

" M* F( |$ a9 S5、显示帖子标题的文件------命名为:index.asp
! Z; `3 x( l1 Q$ _  g( q3 Z) ?; l, X% f9 W, x0 T! e. y
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
7 R) B# F6 ?4 ]2 c. @$ S. n# S" L% s# A; ]$ Z
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
( N) x0 n! b  c# Z( Z
2 w) W) q- ?6 L9 m% x% t) C二、各文件的主要内容
9 z% W0 N% P6 [- C& |$ Y$ `( y8 E8 Z4 [2 F; I
1、bbs.mdb
, w# V5 V1 R! ]" e
# x7 F# e! ?: v7 v  s* `) i打开这个数据库,建立一个表,命名为bbs 9 ^5 u* G. I# B

! v; {0 d' b4 j; g2 \+ R: j该表中有几个字段:
- \( v0 z* D2 p0 w4 ?! [) P9 y, F- k' O5 ?: o: B, }2 X8 @1 H
id(自动给帖子编号),他的数据类型设为“自动编号”
  H4 [5 D  Z! k+ _
: \+ z! r* i( w; fname(用来储存发表的作者),数据类型为“文本” # C9 p; N5 \. E8 o- T* K

' V) s# D( E7 |' H" h, w5 x- dtitle(用来储存帖子的主题),数据类型为“文本” 6 @, f, F% N- Y1 K2 I& I4 w

) a8 m' c* c* F. C( b; ~body(用来储存帖子的内容),数据类型为“备注”
" G1 j# O6 H1 {; Z# m8 R7 H
/ ~, f% Y: o: y7 _& F2、conn.asp
7 Q! A  E( T, \9 r源代码为: , v' y" U: N/ K) L: J4 z! v
<%
# }( L" A& C" b( |! l* iServer.scriptTimeout="10"
+ _0 ]# g+ B0 x9 o6 t; M. rc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" / R/ O  V9 |' ^) R! ~
set conn=Server.CreateObject("ADODB.connection")
! o6 F& \5 H* }/ {: h$ Zconn.open connstr
3 ^1 M2 F1 \# [0 v9 G! c8 \%> ( h- m0 }( C7 c1 J1 o; U, I

- B4 a6 e7 o) C  e8 d这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! - g: ^! ^& y' U- M, ]( j; e+ P" A3 I
" ~1 D/ [+ C/ ?$ K4 P. R* V
3、say.asp
. J' G) [# m- N; l: h5 `
0 ?$ \9 K  J  N7 n源代码为:
9 G. x. l: [9 l5 O; d<form method="POST" action="save.asp"> 1 `7 w. q4 _1 \9 K5 u
<p>大名:<input type="text" name="name" size="20"></p>
; \! v! I4 l4 x# C! r: o/ X<p>标题:<input type="text" name="title" size="91"></p>
( y; T* V. k3 q- F# q' ^( {8 a<p>内容:</p> ' B; V: I  E8 O- h- T- a4 _
<p><textarea rows="11" name="body" cols="97"></textarea></p> - d. g. @4 p% Q" _4 A; g. b" i
<p> </p>
7 I1 K) H7 r9 j5 K# b1 n, x: X% x<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 7 E' ^4 w/ x6 `6 o& j% o$ b
</form> 3 ?/ ]9 z0 V4 w" c% ~
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
2 U) z2 K  y% J; e$ Z' T不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
  [3 ~1 @8 }4 I9 B, t+ U/ s/ X
* b  n: y' I+ y: U+ V  n- ]4、save.asp 5 r: |8 l* o) g  z9 W$ u" @9 b3 z

6 }# V  ?8 p. f源代码: & _* Z! S5 Y; g; r
<!--#include file="conn.asp"--> 2 v9 y. G/ }9 Q% h; S
<%name=Replace(Request.Form("name"),"'","''") / R3 E% c# h# Z# j9 b& m. V3 E! V2 P
title=Replace(Request.Form("title"),"'","''")
/ R4 C, h" i$ ?* O' kbody=Replace(Request.Form("body"),"'","''")
2 {+ m- s/ M7 k% g# }%> ) |' |( M1 I- T5 `
<%if name="" or title="" or body="" then%> ( T5 ^# Q* _0 h' C7 J5 T, [8 o
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
  I0 @( c' B3 d* p<%else%>
9 R* y8 j6 H3 r9 p2 t<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ( e9 L( M1 |" g8 M$ L! J
发表成功!<a href="index.asp">查看帖子</a> 5 S8 F7 h, A& ^0 I) O, T
<%end if
4 f" U: W/ d  J# |& Z& Mset savebbs=nothing - }5 M# Q0 p8 ]' C! u  s
%>
- [9 z# s' @! W# e& t+ z0 M) W: p3 ~
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
* L: H# a7 ^% R* W8 p) s7 easp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
* d6 q$ _% \# a. c接下来几句: " V) X3 B0 m0 f% ~
name=Replace(Request.Form("name"),"'","''")
3 b. ?: d6 N  K; u. atitle=Replace(Request.Form("title"),"'","''")
8 q; D4 o1 g/ R6 D, gbody=Replace(Request.Form("body"),"'","''") 6 J6 q, w2 F% v2 U5 E3 y
( D7 Y8 `/ y& j7 E7 f, \$ [5 M/ Y
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, . p. V' R$ Y4 K! u
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
$ V$ _# `7 |- n$ E6 M* x; I' o如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” " Z2 b1 k2 n1 b# C  l) C& X* h
就是把表单中名为name的文本框发来的数据储存在abc123变量中
$ N! q3 ?/ M3 D: v) f! N
5 S. Y4 n9 J  y7 A+ T- j4 ^" X接着:if name="" or title="" or body="" then
  k; }6 K, a+ [6 u/ m判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 4 t+ Q+ Q8 V, ^$ A2 H0 o! d7 b
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” & ]' g* x+ Z9 U, d- s# j/ |
该语句属于html语法,大家都看得懂的! % j# B6 U7 F+ {& k/ q
5 L" I( Q) G0 A1 b
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
4 v" H; d2 G% k2 e6 Y5 Z“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ' G6 [$ R$ x8 X2 @& H- ^6 ~* z
发表成功!<a href="index.asp">查看帖子</a>” ( Q& a, F" @( t; Q; \) s

& F. B6 h6 a; u% K"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: - o. Y1 |, N& V. h
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ) n( q, J# l+ K5 K1 D
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") . T: u1 x8 t( o
values是“值”的意思 . |7 @. g  w* B8 A
就是插入向量name,title,body,向量用格式'"&name&"'表示
% P9 A/ E$ O# N& L6 q, C% D( J, |, m6 s% c3 J5 {# S* P
最后:end if就是结束if……then
$ q: Z' o5 \( Qset savebbs=nothing可以说是关闭掉:
; Z" _3 g% L- H) G$ @/ k5 }set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
7 a5 e! U7 ~3 |5 }0 j! F6 U* o3 q2 G5 n) W: U1 s1 Y
! _/ l/ u/ Z0 f
5、index.asp
! J  e$ l7 ]& ^4 K2 B5 ~% B' m源代码:
9 H7 ~; m2 M8 Y: {9 A; }<!--#include file="conn.asp"--> * `* O5 `- x0 X+ ~3 a3 m; U
<b><a href="say.asp">发表帖子</a></b><br><br> $ [* Q) P( B  P& r, [& T  @
<div align="center"> ) _. }% n  y8 S$ D8 G+ b
<center>
" d8 S$ O; v/ l<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
" t# N- ?6 A; }" U' E<tr> * I& h2 I4 ^3 k0 y$ E) B7 a
<td width="17%"><b>作者</b></td> ( j9 p, ?0 H& B, Y% G
<td width="83%"><b>主题</b></td>
* C& [+ S' {2 ]' e5 v5 y1 h6 F/ X</tr>
& y7 Z# C1 ]( ^6 D& w  m* X</table>
; |+ v; E2 a2 }4 x/ P- q/ p' G9 ^</center>
4 G* y+ f* C) Q4 `; V</div><hr size="1">
8 _* Z- \# Y* f% n<%i=1
8 H2 q, E6 q: O/ d! p5 P: wset showbbs=conn.execute("select*from bbs order by id desc")
9 `5 L9 Y8 Y- @6 O' C  g2 {2 Ido while not showbbs.eof : y  v; f6 ^5 j! z- ^7 W5 X
%> & c4 Q+ g0 r7 Z( i7 l
<div align="center">
4 e: Z! w3 f# d# `4 U<center>
+ q  I9 x. O/ T7 m# G& ~<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 9 q6 z' a2 \" E% [/ J  a0 B2 F; D
<tr>
' T* c5 V: g; t2 V5 H) v, H<td width="17%"><%=showbbs("name")%> </td> 9 d/ }6 U  i$ q. Q% {3 Z
<td width="83%">
5 F: T# T5 h* H& q5 N9 ]4 v<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
$ ~& G: R, r, u/ P, u+ t8 c</tr> 6 P% N" M/ E+ d/ C* w
</table> * u5 c8 m) M0 Z  s: t
</center> $ k' e/ k$ L+ t5 D8 j
</div><hr size="1"> 1 \7 v5 D7 {5 ?1 h9 s: g
<%i=i+1
" V  _' s; v) [4 R% kif i>50 then exit do ! k# r- g8 c# k) H& J* B
showbbs.movenext
* R: L. q) |- ~- u* X, H* O0 CLoop - g* E9 g* b; q. V6 U
showbbs.Close
6 q8 X  t, M: wset showbbs=nothing
' B: E4 p1 W3 r* d' N%>
9 \' J0 _3 X6 t  j8 Z9 f6 }# h* t) |; w, `6 v
这个文件就不一句一句的讲了
$ J, H; _( K2 W. K, V2 G5 e! U主要讲精华部分:
" W( {! p7 ?! f. d: a2 ]set showbbs=conn.execute("select*from bbs order by id desc") 8 q  o/ f4 C0 e3 K" i
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
5 D: {- N+ i) E) W8 q还有这么一句:<%=showbbs("name")%> ' p& V0 O8 g( o
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
2 e' G+ M( R( I8 H1 a- b代码中的i=1和i=i+1
; N; K1 h" x1 q$ q+ W* W! Lif i>50 then exit do 7 R$ c) d5 G2 @7 Q' c# ]0 b
showbbs.movenext # C& ]5 {+ Q+ m% B5 W
Loop
+ K/ h/ ^" \+ V  Ishowbbs.Close : c* J0 O; m9 v! ]" v8 y, G
set showbbs=nothing
( u* k2 R) J7 X+ U
5 I- A- d2 ]- I- T% Q3 Q这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
8 h# B2 `$ v0 r1 [  K* @7 Y: @0 T- \if i>50 then exit do中的50可以修改
4 E; S& k; X4 ]0 P, B# b! D# I但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
& y0 a; a) Y( M% A& s还有一句很有用的: ; z6 v. b$ v, E7 I' d2 j
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
, y3 Q; U4 f5 W: g! O里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
6 E( T0 Q& H" ]2 {, w7 A. [等一下在show.asp文件中就有用了
3 m1 q' N0 a: }) p6 O7 k2 e4 x% V+ j5 l+ j' ?
5、show.asp
" T* n7 W3 ?5 U6 d1 ~: n源代码: 7 S: `" |1 K2 q6 [' k; y
# e$ x  r2 _8 m  r- h
<!--#include file="conn.asp"--> 2 _8 I. N" A: ]# `
<%id=request.querystring("id")%>
$ A$ t- h5 g; w- g; N/ L  D( u<%set show=conn.execute("select*from bbs where id="&id&"")%> 3 F- y; }4 g0 S- I2 e. D8 K
<a href="index.asp"> # i! @! C( p5 e! V
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
0 Z+ n# ^  `- T3 M2 y<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> : ?6 v2 j7 K5 ?7 p- U; a
<tr>
* F$ I- }. H) m! B0 i& }3 {<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
. Y# K/ Z$ i9 ~% z- K  z9 ]<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 6 y0 B% c# L1 L7 y8 W
</tr>
, v+ P  q% L* h9 b1 A# T: F( E1 R) A<tr>
  P# S* f" X# U3 r<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
; m/ Q" C  A+ u' o8 P8 e</tr> $ ?5 P- `5 ]4 E" {
</table><%set show=nothing%>
, L: ]2 C6 L9 _: u% J/ e7 v" f: K2 s; B1 R  h
劲语句---精华语句: / B2 a. ]. L0 P6 h- v& G# i
id=request.querystring("id")
, v5 i, ^6 l6 n: A$ J在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
" `' G1 T) {" A) R9 B/ b1 p3 Kid=request.querystring("id")就是把地址栏中的id的值读取下来,
3 q7 g& H* m) l5 h+ K& ~" o因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
, e8 D) G) [. O+ q所以show.asp使用id=request.querystring("id")语句把数字读取下来 " r" D# t7 m8 s4 i& z  g" W0 H2 h
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
5 Z  p' A2 C0 P* e7 x向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
2 o: k5 w( F5 N& y! @. z最后<%set show=nothing%> 7 b& g% g) N! H9 `- Q6 @

9 I$ q+ h6 e' o0 u好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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