返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
, G+ v% f+ k; Z0 c2 I0 }9 T真NB..佩服ing ...../ m8 H. t4 B5 k% t1 R' w2 g1 u) J
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。' [4 _0 V) V$ d& L& N

# p1 K6 }, @0 }5 K, h" H3 Z同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 1 e7 d( F4 w% g) Q- c

* R$ W. {- l5 _0 s8 v一、建立文件!
9 v% F1 L7 \* x- P/ r6 `2 z最简单的论坛也要有几个必要的文件,就是: % D/ L, S0 o: u2 g

; ~2 B/ d- Y+ v/ m& k! ^$ a1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb : s0 e/ {- y& V3 R2 s# v; @4 T

6 X7 R) x3 v( V& S+ K  J2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
' g8 d" `+ B( T; f$ ~& X! |& C
7 k/ }  d, O6 _" t! _# i3、发表帖子的文件----命名为:say.asp
7 l8 o/ w8 }. J
8 s% C. M. V( Q+ f4、保存发表帖子内容的文件-----命名为:save.asp ) z& x+ |: L& K* T5 e$ S
' m/ O& z7 l! s/ Y) h% h
5、显示帖子标题的文件------命名为:index.asp 2 c# }8 s+ [3 l4 k& K2 S1 F  X
6 ~+ Z9 M, p2 `7 J% h
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp - L4 q. k* y" R/ s: j

! }7 f& a& p1 Y7 w/ P/ s5 U$ e建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 1 i4 z5 j5 n! X& D) A4 [9 w
+ z: Y/ L9 q) e6 ]
二、各文件的主要内容 , C& b0 R7 z: ^  c
- c* [  |4 M( r' n2 T
1、bbs.mdb
! |- D7 v+ B! P  T- h
  x' e) I: ?. F3 U1 c打开这个数据库,建立一个表,命名为bbs
) E+ H; H* F- i9 B# N# }
, d2 @+ I$ M0 D- K! Q1 B该表中有几个字段:
/ A  L: S3 {# S1 d' V
# l/ u" Q. e! Lid(自动给帖子编号),他的数据类型设为“自动编号” 1 m( a% Z2 u0 B' v- @3 o1 y
1 H/ Y' H. R! e% q! ?$ h$ e$ _" Y
name(用来储存发表的作者),数据类型为“文本”   x0 N. ?- H% N1 A  S5 Y( s( V

( `! w- |1 H6 b* _0 Vtitle(用来储存帖子的主题),数据类型为“文本” ' v  E% ~3 Q# m& I' j( w+ D
4 F0 p" X' H# u% y+ f; D
body(用来储存帖子的内容),数据类型为“备注” 1 n" P7 T1 o  T9 R: Z7 |# `

: h/ n% O. i% p" P1 m6 s3 X2、conn.asp
" o% n. K$ m6 t源代码为: , R9 x$ e$ W0 z0 q6 V& h0 W2 P
<% 1 j$ c8 e5 H) o0 C* ~$ C6 ~
Server.scriptTimeout="10"
: j* ^* }- v: \c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
9 R0 G+ Y& ~  e4 wset conn=Server.CreateObject("ADODB.connection") * Q8 H3 e! n& M
conn.open connstr
) ]( d4 a7 r: b%> # d$ y) H; B5 Q  [$ R/ G  d
  I1 Y6 f7 g/ z& f' {1 x
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! # _& }4 A/ J5 i  n: [4 _8 h
* x3 e" d0 n5 w% i* f
3、say.asp 5 X# s2 n. z9 u* I+ a
0 P" |$ P# I/ M2 P  S; h
源代码为:
  T% o1 F- C" u7 E7 ^' t( ^<form method="POST" action="save.asp">   p+ H# _, U+ R6 N1 m" S, v
<p>大名:<input type="text" name="name" size="20"></p> 4 y, j* u# L0 z" w
<p>标题:<input type="text" name="title" size="91"></p>
% `, V- M  b6 k1 f, M" p( x<p>内容:</p> $ ^- S+ A: N6 L. m9 {0 s" v
<p><textarea rows="11" name="body" cols="97"></textarea></p> 6 _+ ~" O- p# z
<p> </p>
( R2 W, \, W( `( e. [<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
2 @8 M! m' \4 _2 V0 j</form>
. c3 F, A' O% g& p! i$ O# i  x& D大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 ' p( h6 c/ D+ ~# L1 Q0 _, p& g
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
& d; p6 o4 G6 ^+ e; Q& ?, ^3 w' @5 s. B
4、save.asp
1 E2 j( E$ W# X1 _2 t' X! k+ y/ G/ q3 r' ?# F
源代码: . t1 q7 Q5 G. W0 E
<!--#include file="conn.asp"--> & J2 }* I  ~' Q3 u4 m9 s
<%name=Replace(Request.Form("name"),"'","''") ' _4 J: s; D! o+ I
title=Replace(Request.Form("title"),"'","''")
: Y2 p! V7 c- u1 f/ ebody=Replace(Request.Form("body"),"'","''") 3 Z) c; @  r+ q* I8 t' c+ Q' z8 L
%>
/ ?6 N/ A" i8 X0 j<%if name="" or title="" or body="" then%> 0 f! V$ [, Z/ U7 X  r: `6 i1 q& I
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
! R. O) ~# r) O<%else%>
  r" D+ n, Z1 L5 ~<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 4 z" t; O! x% X( }
发表成功!<a href="index.asp">查看帖子</a>
* j( h: m; I& V- w9 q<%end if 6 m* j1 E/ ^; _. |
set savebbs=nothing ! d# a8 ?9 B3 C0 q8 f. P# F
%> : x8 I% L6 b4 A& K; }3 B6 O
! y6 S; S% J5 ?( t7 L
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
1 p& b6 O% }- d* q" D& i  @asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
- O: W' g3 _9 ?3 Z" C. d接下来几句:
) u3 B4 e/ s2 \, sname=Replace(Request.Form("name"),"'","''") & B1 D8 P6 f) f# v' t! D: T
title=Replace(Request.Form("title"),"'","''")
* _" \- w0 j* O; \( {& g1 rbody=Replace(Request.Form("body"),"'","''") ; H+ i! p' }/ o- C

/ f) U* @& L0 k3 S“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 4 M( I$ d+ X8 S& P6 @" |) Y
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
: r7 L' S. Y- s% I如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 8 @. g& I6 a$ t8 B% @* b6 ^
就是把表单中名为name的文本框发来的数据储存在abc123变量中
: E8 ^# R+ w( e% d3 P
! Q5 k4 M  a' i接着:if name="" or title="" or body="" then
3 }: g9 C* u( L0 j" ^2 ]判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ' u* [' d; }) G$ @8 t
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 0 x, G" P$ ?* `: z
该语句属于html语法,大家都看得懂的! 8 v3 G( x7 U: Z, a! `# f7 J5 _" I
6 v+ J$ l; k# D8 x0 \
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
5 \* d+ K  U) c% H- [0 q“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
7 z- l% W. {: v8 v' `( c1 p9 P发表成功!<a href="index.asp">查看帖子</a>”
- t+ c" e" o+ W4 n1 w2 Z7 I& P( Z6 Q. U' [  u: D$ Q
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
# d) T7 `; X! V; O+ ~6 n0 Z  qinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) + M- ]# j* t) @7 K, n
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
! ?( b5 v6 o5 ~, M( w" b6 cvalues是“值”的意思
  ?: M2 B+ A# O  G: b1 H6 f就是插入向量name,title,body,向量用格式'"&name&"'表示
! W6 i& r- G# q. n' k) @+ U! j- m
  I3 ^) H# @- R. v# B最后:end if就是结束if……then 6 x4 M% F) _  n8 r. V
set savebbs=nothing可以说是关闭掉:
7 {- ?( [( Q. s( \set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 9 ~; p3 q- Q  Z' N/ d
5 F4 \; B0 i4 ^3 K  G( H) R
7 M( g3 b7 _8 L& y9 }
5、index.asp
4 s* J0 U% m* i/ w4 m2 o. R+ e& K源代码:
& V9 I) H% W* p* J<!--#include file="conn.asp"-->
7 R! [8 f  v/ H0 i5 b<b><a href="say.asp">发表帖子</a></b><br><br> 7 W1 J: n- ]# j  S1 _5 |8 a) [! x
<div align="center"> 3 ~: N. d6 C, |* q% u- u
<center> ; i5 W% F% n! ?$ l1 Q& X5 V" @
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> # W! J1 ]- v6 B0 b' I  l0 u
<tr> 7 F1 m, q+ w6 R. t- |8 A
<td width="17%"><b>作者</b></td> 8 ]# S% T0 J& G6 n& T4 ?& l
<td width="83%"><b>主题</b></td>
' q8 b1 p/ @, V8 S6 C6 D</tr>
: y$ H" Y' n, U+ ?: m9 E</table>
  Y0 m; Q" q! s+ o* w2 S4 t</center>
; k7 }4 |: G% s% o5 z" {</div><hr size="1"> ; e! Q) d- S2 J
<%i=1
2 ]7 Z3 _1 V! ^set showbbs=conn.execute("select*from bbs order by id desc")
# t9 r* |( _8 ]7 H, D3 y" m/ Ydo while not showbbs.eof
$ G# H% O. b9 U( s' V%> 8 X  f) Q/ Q# `9 F
<div align="center">
, z9 E: c9 @2 {3 n# T% X<center>
3 o; E( r2 O4 ~' Y4 P! H<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
5 u% X1 Q( B; d; i3 T4 f<tr> " Q0 A: Z+ _3 X% ]
<td width="17%"><%=showbbs("name")%> </td> $ C: ]) h2 n; c2 b" q1 i% B
<td width="83%"> ! |5 h! g/ ]0 b8 `6 O9 {
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
+ c5 N. y' a( F, w# E$ X7 A% k</tr> , T2 s6 d4 ~. m( y- h' E
</table> - }4 J7 s  |7 [; I' |
</center>
! g" P  ?5 ~0 O! j; _</div><hr size="1"> - [+ S; G9 h) z/ l) l7 `, J
<%i=i+1
2 I% I( g# O, j* mif i>50 then exit do 9 `/ F& W/ k0 W( p/ ^
showbbs.movenext & e9 w* A' Z, T) l, X( f
Loop
) E6 k7 S* k6 A3 d- d/ ishowbbs.Close
; m) K0 ~" d+ w, D* {0 t* t% P3 J" D) nset showbbs=nothing ! m9 P4 I5 Y1 G( z* H  X- C: F
%>
# c3 C  ^% q% h( k5 ]9 ?4 R8 Q! t# V% R
这个文件就不一句一句的讲了
* f. v, h5 }- r6 F; a& R5 S* b主要讲精华部分: ; }& H& w; e' N9 v, l$ U
set showbbs=conn.execute("select*from bbs order by id desc") : C7 h2 v6 F' V( l- E6 O
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
5 e" d: L( N! d, `9 q6 f% h) ~$ K还有这么一句:<%=showbbs("name")%> $ G3 a1 b2 h% ?% X
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 9 o/ ~7 R2 w, @; |7 I
代码中的i=1和i=i+1
9 z# E4 Y  _, aif i>50 then exit do 1 o' k+ f) @9 q
showbbs.movenext
5 E1 d' Z; M0 Z! kLoop
, m1 @7 Y3 w* ?showbbs.Close   f  ]' c# _$ d
set showbbs=nothing 2 ~3 S9 ?; [* z7 \. I0 a5 A% ^

& z4 w3 a8 ]: Z7 m/ y0 C2 \/ u" [7 R这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! ; G  e* O% p: E9 L# ~% O5 {* M5 V! |
if i>50 then exit do中的50可以修改 & `9 m) q) P" }. a6 [
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 & n; L6 v! P( |6 U5 V# O
还有一句很有用的:
/ P* z6 ^8 ^3 @<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> * ?4 ?6 n* `5 w0 A4 A
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 4 m" l+ m3 O3 v
等一下在show.asp文件中就有用了
# `: g5 q/ @# D! ~. N0 D! x; C( s. }8 T9 t, j- b
5、show.asp
: V3 C0 |- \1 \( I3 Q源代码:
: p6 a! ~; K: D9 |5 v( e. u7 X0 W% G7 f$ n& o  B1 E  R% S2 s
<!--#include file="conn.asp"--> 2 t  B' j9 Q: Q
<%id=request.querystring("id")%> ' c! C2 I5 X3 G+ ]
<%set show=conn.execute("select*from bbs where id="&id&"")%> 4 h. f0 s& J6 N" ^" c
<a href="index.asp"> ( \- E2 K, h$ m! Q' Z" v
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
! H& f0 }: H( u5 X<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
7 |7 |4 z" D. G2 X1 }<tr> 0 u. x$ q+ U6 x& S
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> - r- _* }( \' B  o
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
$ T( m5 B$ j2 |2 X8 W</tr>
: R+ S. X2 v: y* f  a. p<tr> ; }9 ~) D+ r( \1 ^
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> + Q  O! B: n" e+ @+ c. q; W
</tr>
' Q; |1 S. c0 b- Q9 m1 @  M</table><%set show=nothing%> , m! E, N0 X4 k8 }% A
, a2 S/ g, ?) S
劲语句---精华语句: 9 b' z, _  b2 \+ f
id=request.querystring("id") ; j4 C$ W  [7 x$ M1 m: }! U" }
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
$ x2 \' T6 d6 v% ]9 R! Kid=request.querystring("id")就是把地址栏中的id的值读取下来, ; [# K+ O- N: y, J
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ' Q- ?# n5 M5 l# w; e
所以show.asp使用id=request.querystring("id")语句把数字读取下来
! d1 W8 `* H% A: M' x于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 6 s6 X  [& U! W. p0 \, W& `9 ]" I
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 9 \' h" a3 s6 M; I$ q/ o  S7 O
最后<%set show=nothing%> / V9 d7 W$ |* ]  G

4 b" ]# ~) p# Y( |3 \好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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