获得本站免费赞助空间请点这里
返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
; M1 }# ?% t8 S: ?- ^真NB..佩服ing ...../ ]. ?; E7 m2 P% }, ~
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。6 a, p& i; s1 A! [
4 ]0 E* t2 F# G: w" `" ?
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 # k5 C9 S% P' s; G

" T( t6 J. j$ z) ~0 J* R) O0 z  f一、建立文件!
+ l, L5 k6 ~2 ~, v" r0 d最简单的论坛也要有几个必要的文件,就是:
8 c2 R, f( G# y& I6 o: L3 l7 O) ^/ F& c$ B
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb * T- h0 H$ ^9 E' w
" R0 P4 Y' F9 q; q9 ]
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
3 N3 e) `, E4 T! ~
: M- B, w( ^# k% @- {2 q3、发表帖子的文件----命名为:say.asp
! L% a6 V1 t; o9 `. f8 X
( O+ N2 D( }; Y4、保存发表帖子内容的文件-----命名为:save.asp 6 T; s! A5 l7 F- B. k

+ S& j' e+ i5 p+ {5、显示帖子标题的文件------命名为:index.asp & O( L7 M! L5 `- y" ^- N
8 Y2 a4 S9 q1 W+ b0 }* z
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ; W$ g" h9 N0 Q/ W' }
  d/ l" Z& o7 g1 |
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
: q1 I' ^0 Z) ?% D8 ?! O' d6 Q& o, i4 Z) U6 Q  a1 ~
二、各文件的主要内容 # P& c+ I+ a5 D- x1 m2 \/ ]
6 |1 M' c$ Z! Q& ~- S
1、bbs.mdb ' u* r) r3 g  g7 D. o7 w  [
; Z6 _  S# X- ]& j) u/ ?. A
打开这个数据库,建立一个表,命名为bbs 2 d+ ?4 S" ^/ e* J9 A7 v
* F) c+ m# P" ~5 F& w
该表中有几个字段: 0 A) x+ v/ l  U( Z: ^, L
/ h/ s& G8 N$ q) z0 `0 K
id(自动给帖子编号),他的数据类型设为“自动编号” 5 |9 E' @, ^4 X! v6 P4 }
+ X& G5 G- }3 b' \) }# z2 N7 e  _
name(用来储存发表的作者),数据类型为“文本” 6 r: J6 x3 h, r3 ?- d
) K1 c9 K$ W6 D# v) W
title(用来储存帖子的主题),数据类型为“文本” 8 b! c$ ]$ V: f( @: G; a1 l

* C5 N  [/ i! a! |6 s5 G& E* |body(用来储存帖子的内容),数据类型为“备注” . ]" n& p" p9 w% H! B2 U+ s

% G) C/ V3 K& s- H9 h- W- |' x2、conn.asp
9 t) h! z/ g$ c' l- t源代码为: : `, m5 c) m3 d
<%
* R3 `% M" E; u' Y7 xServer.scriptTimeout="10"
: m, U8 K# P% U3 {, ?) @/ ^c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
2 c; R) P: f1 j& e# w& _set conn=Server.CreateObject("ADODB.connection") # L% J4 V, K3 }6 \. h
conn.open connstr
2 N. _4 x) z# H5 o: [%> * P" I3 Z4 @( e

$ G+ B$ V" i* `# g( n) D/ k这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ' `+ d4 w: C, j7 i
* c: X9 Z9 {9 f8 }  y8 |
3、say.asp
3 D0 }% f+ j; w$ H  r# h. a1 s7 ?6 N4 \
源代码为: " I# {, j  h$ Q  D
<form method="POST" action="save.asp">
; `+ y" q  B  p, m1 t$ ~4 p, e# y<p>大名:<input type="text" name="name" size="20"></p>
: \) N- [; g: ]/ \$ z( E<p>标题:<input type="text" name="title" size="91"></p> ' L7 }" j( }$ ^( V2 F& D9 M; Y
<p>内容:</p>
% z& R! |$ \' v7 ~+ X/ W<p><textarea rows="11" name="body" cols="97"></textarea></p>
) n/ n1 I2 b. G% I0 J0 a  Z<p> </p>
. G" p; V0 t: E: d/ f4 z' T<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 5 ~+ U& s7 ^9 R& c
</form> / _3 D7 `/ j: p1 `
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 5 U( J8 i6 K( I% [# d0 \
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!   M. I1 W; D6 c" |( ?
$ I/ F+ w. b9 v
4、save.asp & f' P0 P7 ?; L4 U$ O& j8 T

. u: Q) W9 w; f# q, F8 o源代码:
- o$ b0 T- q  `/ K<!--#include file="conn.asp"--> 9 l  T6 z, |$ G3 n& B2 {1 G2 H: l* x
<%name=Replace(Request.Form("name"),"'","''")
! l) l) j7 g! j9 j; v. h. }* h/ R& Etitle=Replace(Request.Form("title"),"'","''") 1 O( W! `; x1 B/ }* X1 a7 A
body=Replace(Request.Form("body"),"'","''") 6 g8 G& l0 w1 ^% v/ \
%>
1 Y1 T0 I9 H9 O) k; L- O<%if name="" or title="" or body="" then%>
: R, J0 a/ a' B% w8 Y请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
5 i( T: ?' \9 W<%else%> 7 i) `4 s' J. O( z3 K: S: M! t
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> , w8 q/ q" K4 p" v$ J/ ^: s
发表成功!<a href="index.asp">查看帖子</a>
8 |( S0 \5 U/ ]/ D2 ^<%end if % x5 e6 ]2 c% b1 r+ g" l
set savebbs=nothing
3 r* t' Q  a1 [%> ; g3 h( a1 O. P8 u* [
, I8 a- }1 ]$ q+ u& K
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
5 q% p7 l2 Y# M8 E5 Vasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, " \3 r8 P  e: h8 N2 \2 M
接下来几句:
# ~$ v) |$ U) `4 ename=Replace(Request.Form("name"),"'","''")
6 |" E5 b9 i& e- C$ S- ktitle=Replace(Request.Form("title"),"'","''")
# Z) u3 Z* \  f) lbody=Replace(Request.Form("body"),"'","''") 4 H; `+ y1 A9 ~" p, ~* a
& m( H& ?9 ^: a' w
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
6 ~0 W  Q, ^5 c+ e% s! y) k而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
1 F" b5 @0 O# R如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ; M/ ~" j6 Y  q# e, u) j; T5 |
就是把表单中名为name的文本框发来的数据储存在abc123变量中 % T6 a' i, N2 s$ U: q/ x
8 N: k) ]$ {$ l9 }" j1 p
接着:if name="" or title="" or body="" then
; ?. o1 I5 g; Y" C& v1 I# i/ A判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: . D( w& O: q$ F; B
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
: {$ H& C- j5 R7 @  c该语句属于html语法,大家都看得懂的!
- m! N$ I- p) u1 W( p
% p: b' ^( O7 o& P" j7 K6 E! s"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
' G! j2 S5 z# D) X“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
% v, k1 V+ x% u; j" [9 |3 O5 Q发表成功!<a href="index.asp">查看帖子</a>” 7 |9 [' ?; C9 @, P3 R$ A3 i
8 k/ w% r6 k5 P/ f  A' x
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 2 c* w+ P4 W" f5 ~0 \
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
: k/ y. c$ h9 \, Y; _% Z中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") % q' V* a9 {0 [0 f' y: r4 E
values是“值”的意思 $ h7 Z, U% `) \; L5 c
就是插入向量name,title,body,向量用格式'"&name&"'表示 4 T4 }  o2 h3 L: P& R; v2 G
5 C2 W- ]$ t6 Q! H7 L
最后:end if就是结束if……then
4 t/ h6 N" F; \" X5 |  ~set savebbs=nothing可以说是关闭掉:   h3 L  c0 {% u6 ]
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
, X: b! [+ o8 ^$ l
* U& ?2 G) Q( {& }4 y* B& U! ^
/ q* V( {7 Q& r3 B" _1 F: e5、index.asp
7 a, w; g6 P9 J& O2 D5 ^源代码: 8 ^3 d' I0 R6 N/ |$ Z4 G
<!--#include file="conn.asp"-->
7 x1 N, E& L  [2 G8 G' h  f0 }* Z<b><a href="say.asp">发表帖子</a></b><br><br> 0 B: I" L# B. z! g/ T
<div align="center">
# h2 t9 P" t% ]' w5 n& r<center>
) R3 F+ ~, N! u<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
5 N6 k( x% M* z1 d<tr>
' b/ A+ s' q5 D2 c<td width="17%"><b>作者</b></td> ; Z6 q0 M$ B7 ]0 ^! }
<td width="83%"><b>主题</b></td> . |+ c' T0 t  B
</tr> ; a, S# S* |6 R2 d5 s$ _" C# q
</table>
1 M+ H8 _' R1 |3 ?- A</center>
: b% z% G3 n' j. m+ V</div><hr size="1"> , |$ A/ M5 ?; V6 F; @8 {: n" _
<%i=1
% @4 V  R6 T# iset showbbs=conn.execute("select*from bbs order by id desc")
& F0 d- P/ N+ Y3 Rdo while not showbbs.eof
. ^: N& ?. g, M. s1 E%> " e' y0 j0 l. M6 q; R' g0 L
<div align="center">
9 ^! r) B2 T; Y: O4 W  i  l<center> ! ?) j& C2 ]# x% a) T
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
' y( i' `) M: A5 @5 P- |" J8 j3 O<tr> - l; z' m! h: O" c% P! O& a
<td width="17%"><%=showbbs("name")%> </td>
% F  q( Y& T0 R& R* R8 ~+ @<td width="83%"> / c( @4 x. @, b; [
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> # |: O. ~! T) B. o& ~9 H; o
</tr>
% w; x$ d+ S4 v$ t4 ?. ]</table>
7 j$ R* z6 m& ]+ e; l3 o% }5 S</center>
3 |) D, p4 v) T</div><hr size="1"> 3 Q8 ?! y5 D9 N+ U) \/ M' a9 p
<%i=i+1 ( g* [$ N$ g6 w7 p1 u( x
if i>50 then exit do
2 X% u+ b% G8 u. q1 |4 ~$ Dshowbbs.movenext
8 L& w# ^3 `% i2 LLoop 3 L9 q; U' ?/ k* ~$ h6 N5 W
showbbs.Close
( [; i: l( \0 k2 `. lset showbbs=nothing
5 L8 G3 x. T0 _# ]% R0 o( c%>
( j" v+ E3 G9 P
/ Q2 }4 k8 _' N6 p  D这个文件就不一句一句的讲了 2 J3 g- D# V( M$ g7 ]. ]0 w. Z) j7 C
主要讲精华部分:
' g: \+ o1 c0 T8 [$ L0 D5 j) a( C  v0 yset showbbs=conn.execute("select*from bbs order by id desc")
3 c7 k4 Q$ D4 c1 ?5 p5 B; g意思是:向数据库中的bbs数据表查询数据,并以id排顺序, ! Y6 E$ s5 K8 M3 ?8 `8 k+ ^
还有这么一句:<%=showbbs("name")%>
5 P0 @4 \4 p1 s' Y就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs   E* X7 }2 b  a7 O. @0 b, E+ @
代码中的i=1和i=i+1
$ ^- b/ l. [; T! w6 {# O$ x6 g& Gif i>50 then exit do
* `, V! {$ A! vshowbbs.movenext & u5 P& X: S" O6 Q- ?2 K. k! P% c
Loop & M6 d- N; X' E
showbbs.Close
; ^  g8 k( ?; ^- i% P2 T* _; _set showbbs=nothing
# d" H  `# f" ?3 n0 `
, q' N7 D/ B# [' x# V* i这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! , f* X8 m* m+ U( o% Y
if i>50 then exit do中的50可以修改 / o  T5 m$ C, ?! ^6 @3 Q
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 4 I2 f4 u" S0 e0 |8 n
还有一句很有用的: & W1 g  G) K- C0 I0 U+ }
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 6 k( J; K9 h7 Q7 E" k
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 2 s% O5 y, ^$ A9 x. c# _9 [
等一下在show.asp文件中就有用了 8 G) f$ l6 k8 ~, ^4 J
0 m, t. f  ?3 z* a
5、show.asp 7 E8 Q6 O0 B  v5 P" |
源代码: " @, P- o& X  d  i2 j. z
( N* t2 v0 `- d% N; Z. u4 B% \
<!--#include file="conn.asp"-->
! T! n$ t* i- ~<%id=request.querystring("id")%> 0 e9 E) Y1 \3 f: W$ w$ O5 o
<%set show=conn.execute("select*from bbs where id="&id&"")%> 9 {" z. P1 f+ |* N4 c" D
<a href="index.asp">
7 i6 U2 w9 ^  E: o<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
& M6 n3 g. D- v3 \# G8 M<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> + W( J  s- X5 ^* T1 T# N4 L, h
<tr>
8 ^0 C6 m3 r; ~<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 4 |, i/ r$ S) O+ R6 w, Y! z
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ) b& K/ y6 L* X2 K" c
</tr> 7 g% w, F' C; h2 f# ]  r! p9 |
<tr>
! [5 ~8 ]/ m5 U) n<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> ) o% O( A/ `7 B
</tr>
, m% D5 |# d- x: c/ [! r. @9 g</table><%set show=nothing%>
8 M. l" b7 C9 F* G6 b3 A* i3 r- c4 @
劲语句---精华语句: / T" }7 s2 \: o3 c8 X
id=request.querystring("id")
  u+ u7 t9 _9 P8 u- v) w在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
7 _- p! Q) p2 K' \id=request.querystring("id")就是把地址栏中的id的值读取下来, 0 N) C; b- q$ V- M! N2 q7 ~; ~
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
) d" @0 L1 m! \$ ]所以show.asp使用id=request.querystring("id")语句把数字读取下来 ; `3 m  K& S. \
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
, N* n5 j* J% e) M% A) L1 R4 n向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 0 V) w/ t; |: a# q: L
最后<%set show=nothing%> 1 P( W! t, j" b0 l8 ?

# o0 V% k. O/ d$ }* u& N9 ]* w好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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