返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
! i9 Z4 S' F3 Z& l/ J真NB..佩服ing .....* s/ z* d- }* d
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
/ X. T+ n) d" u7 S( O
6 F' J) ~$ G7 Q3 ~7 H8 e) P6 ~2 U同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ; B6 F* ?+ I/ z/ s

) F+ V- j7 n! S3 J( ]4 r一、建立文件! 0 _; u" Y# I* _  c: _
最简单的论坛也要有几个必要的文件,就是: , F4 R: ~7 C7 T1 M) y$ F

' j+ \& H  m" H3 @; U1 c1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
6 O3 v$ ^1 @5 e1 i: J* E, }3 S& w3 Q/ L% ?  ]
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
0 D* g) R' N9 S+ ^) \! w4 L8 O- A7 D, w
3、发表帖子的文件----命名为:say.asp + b8 v+ i! z% l0 E4 U
+ {0 O8 }' ~2 i" s- y
4、保存发表帖子内容的文件-----命名为:save.asp
* [" @  U1 ?9 n% E8 x6 |7 u7 `* t' q, X" |  s! _0 K* [  E# \
5、显示帖子标题的文件------命名为:index.asp
* m7 X) t. i7 ]: B$ \+ x
3 z- P: {% O' |' z% V' u6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 5 j: U$ W& v* z9 w! |% G# V

# C+ y  n( Y2 R$ ]& ~) a$ q建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
$ S$ a$ G1 O. H) [8 S/ E5 ~( x+ l, x% o- F, h" x
二、各文件的主要内容 , U; u' W4 S) n9 @0 C
6 L! N) E" \3 Q
1、bbs.mdb
& ~# s) a4 X0 y. T, j7 h% o' I' i* T  }( j1 _: A
打开这个数据库,建立一个表,命名为bbs
' M) h( p/ G; M4 z4 H: t' k' R, }# z7 K) n3 D3 @3 N
该表中有几个字段:
% k6 ]  D9 T2 f  K8 ]- Y: f& S' i" f% z7 {( a" w" L& m9 z
id(自动给帖子编号),他的数据类型设为“自动编号” $ P/ P5 j2 }$ @

4 c3 x: ~; J! \name(用来储存发表的作者),数据类型为“文本” 7 c/ \0 N( l( W
8 C* U1 C, G- J6 [  A0 W# \. e
title(用来储存帖子的主题),数据类型为“文本”
! E! i: @2 i) N4 e  x/ l- q; k) O" j2 Q, K! H8 a3 X. o
body(用来储存帖子的内容),数据类型为“备注”
: ~, g" A6 P- ^* Q9 B7 O* e1 p+ B; W' [8 z0 q6 d9 `" H
2、conn.asp
0 y+ _2 I, p* e3 @源代码为:
: {$ H0 a( O& r+ B<%
, u# n& Z1 G+ ~' tServer.scriptTimeout="10"
- A- D9 v3 T7 F, P1 p5 n2 l, Sc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"   q  x. Y+ U8 ]
set conn=Server.CreateObject("ADODB.connection") . j) @0 W5 K: p
conn.open connstr 3 g3 I$ n# g6 g0 P2 g( \+ p4 h
%> ) T1 B& i) ?4 O, n3 x" B- G

$ }* M9 V2 e6 T  \& ~这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
+ P% M1 w- K0 M% y2 ~: _5 j% B9 b% b' u; C  o
3、say.asp
; v" N0 i( F/ T# y/ g# m
3 V6 Y( l* z6 d3 m3 e源代码为: $ l" T& X9 g: D2 G1 V; C/ W- ]
<form method="POST" action="save.asp"> 2 T5 K1 X; Q! f8 V9 \# X
<p>大名:<input type="text" name="name" size="20"></p> % Q* g5 |0 H$ \; b6 z) e, ]
<p>标题:<input type="text" name="title" size="91"></p> 2 W) u2 u/ O- U" z. G% r+ C( E
<p>内容:</p> - u# b, z, r- M/ d' u
<p><textarea rows="11" name="body" cols="97"></textarea></p>
+ X" ^7 ~& V/ p. Y1 r7 j<p> </p>
0 r: u( Y' p" V) t% a<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> $ u# H2 h9 z3 O/ ~  ~4 J% I+ X) W
</form>
& X+ Q2 Q4 x& S5 K- E大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 - z1 E' @. b, F' H0 }: A1 Y+ G
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! + ]  d3 R) L3 u- w

2 z  p/ {% [% Q3 ~* t0 p& u1 L4、save.asp + J( Y% Z+ _0 E) F0 [
, H# V5 D" c+ h' W/ F* a
源代码:
: ~- M1 ~# u$ [  A; @: C<!--#include file="conn.asp"-->
! b# m. @9 L! A<%name=Replace(Request.Form("name"),"'","''")
& O9 G0 h$ P6 h0 N, X+ ?2 [title=Replace(Request.Form("title"),"'","''")
1 \5 I) E0 \- E7 Sbody=Replace(Request.Form("body"),"'","''")
5 }' y( m% v4 |: b) F%> ' K0 \% j  W* H2 Z: R9 [" |- R& W
<%if name="" or title="" or body="" then%>
2 H: X; z) r' i& F请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
4 ?5 j5 r4 [7 [6 T<%else%> 3 k5 [  U& \' ~' c8 N
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
1 l2 o; T' C6 \发表成功!<a href="index.asp">查看帖子</a> . V( `; h+ d6 R5 z
<%end if
+ }' Y5 x" ]1 Z9 i, w  eset savebbs=nothing
* z9 J! G9 t9 T% S%> ' D& ]1 k8 [0 x0 L# I+ P# K

2 o8 N4 G) e# }: x( u第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
4 _3 q: _# A  [& K. Wasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
' g8 w5 ]8 ?4 p7 n+ Y接下来几句:   @) k1 e  B& Z, w% E
name=Replace(Request.Form("name"),"'","''")
  P; d+ y2 e% s% ^: etitle=Replace(Request.Form("title"),"'","''")
% M+ U' d1 ]4 Z0 L+ C1 Nbody=Replace(Request.Form("body"),"'","''")
$ D. Y6 W" U7 j6 D: t
# Z" Q! k: ~. t2 D2 h. y“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, : `1 N7 D' ^9 }2 j. w. ]: Y
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
0 F) ?( O; \  V3 W8 L如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
) P& P/ \6 g  m' ?% N就是把表单中名为name的文本框发来的数据储存在abc123变量中 7 T3 ^; J2 R0 Z
6 E2 q. ^, s/ t6 v
接着:if name="" or title="" or body="" then
5 M( L; y3 j# O1 M+ h3 H判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
. p! R5 R- Q6 e5 h6 D! x! x, `$ W, r; O“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 4 B+ z. T1 J6 T" E8 e: p
该语句属于html语法,大家都看得懂的!
5 D; [$ P4 c0 J, s9 C, {
) {2 b/ }5 a3 z$ s"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 1 C/ v0 F! z7 u7 s0 t, h4 w8 U
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 4 R5 x( h2 F" ]1 \: e
发表成功!<a href="index.asp">查看帖子</a>” 0 S! d6 V5 b( h# S4 U; x# w

- N( b" O, Y4 v& J"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 4 ]/ B# S4 f! o( p" U
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) ) p  L8 m9 n! U, g" Z
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 4 N1 K( H' H+ n- o" R/ ^! K" C
values是“值”的意思
! K7 z9 O5 i8 h+ _就是插入向量name,title,body,向量用格式'"&name&"'表示 3 b3 y* Q( J, |: i3 ~5 E& \" h
! [2 X& S, g, U; V2 w  Q
最后:end if就是结束if……then 6 v$ G) V9 Q* Z7 a4 Y& z9 L7 Z' [
set savebbs=nothing可以说是关闭掉:
" i6 |( i0 B: a( C0 K9 ^+ Tset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
) @  p1 y  _, S) u
  w( ~- {% y% U0 Z9 [7 ~
1 u9 @$ T1 v2 Z8 N9 q# a0 C8 @( i9 ]5、index.asp
; t3 ~9 Q; T3 j, J! z源代码:
) C0 q0 S) j4 {" @<!--#include file="conn.asp"-->
% {8 z+ b4 {4 v<b><a href="say.asp">发表帖子</a></b><br><br> - y, Y: Q2 n* c* N
<div align="center"> , d) l; V* u& ]/ G+ R/ F0 S
<center> ; l6 j0 N0 y3 _, M. q& o! c
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
9 f5 {' J5 G- J+ W; V8 ^) y  Y<tr> % f6 k: Q. q% s/ v$ X* T
<td width="17%"><b>作者</b></td> ! X. c- B$ e' p# z- {7 @# [+ N
<td width="83%"><b>主题</b></td>
/ D2 H* y% u  P5 Z6 I5 w# [) j" u</tr>
( |0 H7 p4 o, M. q' G3 L" r, d- a9 u</table> 8 u6 L1 F. Z4 Z- m
</center>
( a( s9 r1 t' b: N( L</div><hr size="1"> - D; H; d% l+ A: ^( e* F( a
<%i=1
; Y1 H" |% ~5 a: mset showbbs=conn.execute("select*from bbs order by id desc") $ m+ y7 g+ C! }. w
do while not showbbs.eof 5 K6 ~; ]' t9 r: j$ J# ^
%> 6 c9 l8 R' v6 b: q# S9 u
<div align="center"> : P8 O# p0 t1 B' Q0 O
<center> + o* v0 o" t9 |* j3 k$ x
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> # u0 N. b1 @6 c- [. o8 f
<tr> * y# @, z0 M5 z
<td width="17%"><%=showbbs("name")%> </td> - j5 U/ e+ _" r4 z
<td width="83%">
8 g& {# y! q$ }5 C# L<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
" [- B+ Y% A% J) g3 t# E. }</tr>
7 R, Z8 u4 @: ]! R</table> 9 I( Q$ Q* u# O: m. A# o2 X- F
</center> / n7 V/ `5 @0 ]5 b) q; U# o
</div><hr size="1"> 3 r6 r4 V$ @; o, X2 i6 R! o
<%i=i+1 0 s7 A1 j; K4 W. e5 q7 _3 V
if i>50 then exit do ( W/ E2 _7 k: J' h. e6 R3 F
showbbs.movenext 2 z6 @, ~* ]' W7 i- \  ]3 ~. ]& J! U, j
Loop
' a$ D0 M6 A: m- a* r; Xshowbbs.Close ; {8 r9 L! z' m: a: q9 O
set showbbs=nothing
" q9 E% ?: g% u2 T  A. ?' x+ r%> ( A$ @0 U  O  M6 r
& J# {$ v8 @& @1 i6 m1 ?: B
这个文件就不一句一句的讲了
; \7 g6 _% s# N8 W, M: ~7 r主要讲精华部分: % k5 ?/ Z: V( W3 m$ {5 C, h* D& J
set showbbs=conn.execute("select*from bbs order by id desc")
  l) T* S: K+ c意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
( \. N: I  E( U' }* I# b% w还有这么一句:<%=showbbs("name")%>
1 q* j/ K' U, d, P; J就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs $ A1 |. F; R& a: H+ ?
代码中的i=1和i=i+1 + w' O# x- G0 j# l5 m$ e
if i>50 then exit do . ~; r1 r. ^8 Z
showbbs.movenext
1 I' ]( i" @8 w# S8 sLoop
- k+ n& d1 Z( r# f% ?; ~6 W# Dshowbbs.Close
( l( p5 G" _9 Y; xset showbbs=nothing 8 q- z0 Q) L( t: {! C
& P! d6 {6 ?  v7 @7 [8 K3 v8 I. q
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
* x2 k0 `/ P( k* @if i>50 then exit do中的50可以修改
5 O# \2 x  f* g, S; G+ c' r2 [但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
3 @1 r) {' z; ~' W还有一句很有用的:
9 d8 x1 F, K; N6 i+ X<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
& G- ~, k7 j7 e5 B. C里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
1 f+ q( w5 |  p+ `等一下在show.asp文件中就有用了 ; r% @4 C! r; z! X# p& J3 X
, o5 ]; d/ I" T  [( |* `; t  p+ w0 z
5、show.asp
, I& H: H3 E2 p) R' v9 r; _: W源代码:
8 S& ?, c" A# O) Q8 z% [6 C
. R- k6 G( i( i" W<!--#include file="conn.asp"-->
* X- V4 P" D! ^& y<%id=request.querystring("id")%>
5 h# c( ]+ K, T8 ?, A8 ?<%set show=conn.execute("select*from bbs where id="&id&"")%>
6 }! C9 ?% k+ C# w# z; ~: @' N% W, c<a href="index.asp"> ( n, {0 `5 F- \2 ]
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
% Y& o5 r* r7 T: q7 N& P; C+ J<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
2 ]" l% G* q3 ~& X. R<tr>
/ r, }. i( I$ k<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
. S1 N0 s, L* ^, q9 }: D2 H<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ( R& F! p% v* _1 X
</tr> & t; R6 _+ Z4 ^
<tr>   n. j6 H7 m$ Y. ?8 e/ v
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
" ]& j4 e# w: d* ~% U/ T! R( s</tr> , R; L2 u; f; p6 B& B9 N* a7 ^
</table><%set show=nothing%> ( n& _3 ?' I9 i$ f/ {- k. h

/ a% ^! n( g: a- H' L/ T# K0 U劲语句---精华语句: & f5 O! |$ O+ I' _4 y
id=request.querystring("id")
2 c% D6 D& @( |7 M9 C) @在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 4 ?5 ~& k+ F6 ?) I' h; q$ ^* i
id=request.querystring("id")就是把地址栏中的id的值读取下来,
' i& }" J) ?: P9 [' J' W因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
5 R% k. \5 S$ r( y3 a所以show.asp使用id=request.querystring("id")语句把数字读取下来
8 I( a2 q. L+ p  u于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") & G  P% k( ^; L7 Y
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
: i3 N+ O" M3 H  z9 u6 h最后<%set show=nothing%> 7 X9 u8 F6 F! s6 f1 W. [- r

! L: R+ K7 e* a3 r/ X0 Q0 D5 `好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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