返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
, k' r5 T# x: ]真NB..佩服ing .....; `2 a: @- J) D" F- ], Y
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
' ]& Q- k0 S7 Q0 K; O# O+ l5 ^$ D7 A2 @* Y* j, m
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 0 S0 p7 W- E% Q: H
) N+ r# Z7 {) B7 I# ^, x7 b* Q; V
一、建立文件! + q0 r4 [6 Q, E. d
最简单的论坛也要有几个必要的文件,就是:
  n/ E$ [+ P! `1 ]2 d2 @# W3 ?# M( N, h6 {& t
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb : T+ E% o) ~+ j. w
- h+ u4 X- e' `; ?7 [  C
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp ! ?+ ^' }/ ]8 T3 f8 l3 l
6 d/ h, S  m$ P1 `, x; W
3、发表帖子的文件----命名为:say.asp
8 e) u# A, M) k0 g2 h1 g
7 R/ ^: ~& h6 {4、保存发表帖子内容的文件-----命名为:save.asp
& n8 A+ P; X4 R+ g5 n+ k$ A+ q1 n9 Q& G9 _- B9 v. }0 |1 q- b
5、显示帖子标题的文件------命名为:index.asp 4 u* N: a- z2 M. w3 u
3 y4 O; Y* l) q) I
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
' D. N  [7 D' w) }
* P. J7 G1 ?0 {; a建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" " ?6 T& S! Y7 v* Y0 ~2 A

+ n. ?2 S1 M6 n5 O0 B) a$ a二、各文件的主要内容 1 U9 P& ?% d7 [, y3 v4 A
) k: D3 p+ m$ B3 J, x5 g2 r
1、bbs.mdb % r, p4 a, s* j( F. X+ s8 `& ~
  \! [5 d6 b# |5 O+ P* O
打开这个数据库,建立一个表,命名为bbs 4 O) d7 E1 g2 _' G, E. L1 U

: s+ o% T* g3 z/ Q- E" |该表中有几个字段: , U/ l3 s* w* S, \( s) f# `
' x" ?+ b$ `' G1 I, F; D
id(自动给帖子编号),他的数据类型设为“自动编号” 2 g7 U, r/ L5 j1 u, M

9 b6 x. O- S8 Rname(用来储存发表的作者),数据类型为“文本”
" d- Y& c5 M1 U  a
4 }4 N& q- Y8 ^, C* @% y! Btitle(用来储存帖子的主题),数据类型为“文本”
  \* d$ Z2 A1 |( Z2 h7 ~
$ d- t% v8 Z- e! H: c8 ]* U1 Rbody(用来储存帖子的内容),数据类型为“备注” ( |# f. c) o7 R( Y5 J
  x1 f" ?1 M. \/ u- W
2、conn.asp
) v, S( E0 x, y" w5 O3 u! t3 R源代码为:
# E) \# k5 _2 |. h- V# {<%
+ S: j$ A$ C/ g& `Server.scriptTimeout="10" 0 m3 P9 T: \" J0 y: M. U1 r
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" , k0 _% M( W' U4 z5 |4 Z) z
set conn=Server.CreateObject("ADODB.connection") - S6 b4 z: L" W# u$ l6 J( F
conn.open connstr # |2 r. L# \% P0 F, {1 \9 R6 \' ]
%>
. `/ O2 h0 X, k2 P8 [  U* R0 O: m
$ o; o" ^* H0 ]- E+ k: n' d这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
4 L9 K. q6 P6 B* y4 i0 R6 ~( h2 O- r. j% p# v1 ?: ^
3、say.asp
9 x5 \2 w/ y+ @7 e& m- I* c3 ?- b
+ M* q7 G. q: T( ~" _6 v$ Q源代码为: 4 d) L$ D' x, V
<form method="POST" action="save.asp"> " n$ P0 e. w/ {9 j4 W0 t: l9 x/ A
<p>大名:<input type="text" name="name" size="20"></p> 4 F& v) [7 X0 y( n  G
<p>标题:<input type="text" name="title" size="91"></p>
6 _1 V. A) w0 S( x9 `! b<p>内容:</p> " i/ Y0 F# P$ d" [' L
<p><textarea rows="11" name="body" cols="97"></textarea></p> $ s% Z. m8 m' i' h
<p> </p> * r) u6 m/ p0 r; E5 V0 s
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 5 |- E2 Q2 p# Q7 X# h7 C) U' G
</form>
5 I* c, k6 i" _9 |: L大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
- i* {$ L6 u$ s* y) t) a8 ]  ~# F不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! / b+ n% L3 I# ]; d& f1 E0 n1 E* z  \
. L+ {! m; _: Z" l
4、save.asp
# n6 E6 W" G  u3 _
1 y. L; o" P4 F; _3 U; s& {源代码:
9 ^8 w& }# v  x4 {9 U<!--#include file="conn.asp"-->
, q  ]: q8 C( r# t3 A9 q<%name=Replace(Request.Form("name"),"'","''")
# }! E. Y7 l: ~3 k, Ttitle=Replace(Request.Form("title"),"'","''") ) w3 t! P7 C$ M
body=Replace(Request.Form("body"),"'","''") / Q& `! b: C& m9 A
%> ; ^- y+ N" o* a% i: s
<%if name="" or title="" or body="" then%> 6 E& b# U$ n. b# w1 J3 ~" w2 S
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!   Z0 {5 H2 y. E8 V6 R+ B1 h% @
<%else%>
, T/ N# a, a$ L# T<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ) v/ u( ]& y% P0 K% ~
发表成功!<a href="index.asp">查看帖子</a>
6 t. r  J+ P: l7 i<%end if
4 N) e- K+ Q  S) X( a, S6 qset savebbs=nothing
; O. t( [: o& z1 S2 ~/ e; t0 d%> # [/ b- ]. a& D# x/ l

/ U& g2 Z3 R" K( ]- O& u4 [第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! / v% A+ J, y. q/ _) U
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 0 i; ?0 H& Z: G. p: k
接下来几句: 3 r1 u/ l4 Z( y+ }: a5 s7 f8 G
name=Replace(Request.Form("name"),"'","''")
- P, V$ t* a  W. L" dtitle=Replace(Request.Form("title"),"'","''") * ?$ m$ Q+ c* c$ s+ r! c
body=Replace(Request.Form("body"),"'","''") ) b$ W. c$ G7 a" v) @
# @# v* Y8 `: S$ R1 `( u1 B
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
8 \! L2 [' H+ S! B, x7 F- {而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, ' v) x* s. Z  Z
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
; Y: Y) J1 e: w# ^% c就是把表单中名为name的文本框发来的数据储存在abc123变量中
5 x" d0 c; q  T, \: A8 Z3 J
- L' m- Z* B: m; U5 n接着:if name="" or title="" or body="" then , B" a( t8 I: ]% @8 U  l
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
: e) N% m, Q. P) T3 N" o“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
0 M* G' s$ b+ U3 y+ ^8 P该语句属于html语法,大家都看得懂的!
3 _: K2 p( h8 B' w9 `+ `
! Y6 P% ]7 G% j"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
& u1 k1 j; j  G“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> % q0 w! y4 x+ _1 W  r$ g- d) s
发表成功!<a href="index.asp">查看帖子</a>”
" P$ E# u: R! I5 \3 [% E; N
  n, I) x# _5 O- e6 A"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 7 ^' x) g5 B" h
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
/ Y, r# `0 B8 D中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ! k3 O+ G% ]* p: R- @1 _
values是“值”的意思
% s. J' {7 ]4 w# d, a$ [" Q5 W就是插入向量name,title,body,向量用格式'"&name&"'表示
5 X* L! |- l4 @+ v3 c5 H: Y* X4 W) K+ w: Y4 u- q- {& a2 A: q
最后:end if就是结束if……then 3 [% j! K; }: d) H/ u
set savebbs=nothing可以说是关闭掉: 7 ~, t/ s- K$ v1 S2 O
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
. z8 ]4 ]: Z. x% b% T2 t* O
0 P- H( w. a  r5 R. d6 y! q* N6 w+ o* W; {; d3 M  T' N: M
5、index.asp
( a) }; N0 d' p; ~  D3 j+ N: z: O# u源代码: 0 R# N, w& Q8 Z( D$ s! `% J
<!--#include file="conn.asp"--> + _* r0 n. _  a+ }
<b><a href="say.asp">发表帖子</a></b><br><br>
) S* C8 r9 G0 w' u' N<div align="center">   ]' u* ^; h* H) z+ J+ m
<center>
/ e  d) X3 E- m3 f<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 5 [5 g6 ~$ n$ L* p5 G! ]
<tr>
0 b/ T+ r- F% d1 l9 F! D$ z<td width="17%"><b>作者</b></td>
+ v$ Y9 K  k4 W% P<td width="83%"><b>主题</b></td>
1 J& v2 [- z# e</tr> 6 W# @0 I( x1 Q: R  F% I
</table> . }- n0 U( i, Y, R3 d; X: [) H* V
</center>
4 V7 [) a+ _. i8 V6 b</div><hr size="1"> 3 T9 U+ f% h. z
<%i=1 . [/ u( s+ V5 Y: H% z
set showbbs=conn.execute("select*from bbs order by id desc") . S, S. b8 {2 p/ s! W: g
do while not showbbs.eof
' t& ?3 z4 Z; h+ x%> 1 c# R$ {. S1 r3 B6 a, a5 O  s
<div align="center">
  U* x! F4 v7 c. j<center> $ g4 {3 ?+ g7 d0 k: h
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 6 D- b: T3 V5 O; ~8 ~+ K; p
<tr>
& Q$ k. l, v( G7 c<td width="17%"><%=showbbs("name")%> </td> & e$ u, y+ q) Q/ c* r5 X
<td width="83%"> 2 u) I4 A7 Z. K
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
9 f- K& k- j3 s/ w& H/ v( b</tr>
: K+ v% i/ j1 o% _# R3 M0 O</table>
# q4 @  {, ^; V6 S</center> 9 {% q8 i# T1 J8 |" V  ?; i- k9 m
</div><hr size="1"> 4 P+ W0 J3 z0 v; V$ m& H+ U) K$ B
<%i=i+1
7 \- d' V+ R; u- Wif i>50 then exit do & a) f3 J2 ~4 J# }& B: k6 U
showbbs.movenext
$ m/ J6 @6 f" b4 V# X6 ~$ ALoop ' W$ ?8 n4 u: _! L6 Q: m9 b% L) C
showbbs.Close
0 o1 B4 @/ K5 n9 T1 iset showbbs=nothing 8 J/ |$ J3 A* s3 i' Q  s' N
%>
$ H& `2 K3 @" M1 G% J* R/ D% H% W9 H& t9 j! M3 c( y
这个文件就不一句一句的讲了 . s: _' N0 G; f$ v9 M
主要讲精华部分:
- c5 Q# I! N7 _  [8 tset showbbs=conn.execute("select*from bbs order by id desc") - M6 u- [% T3 w2 X8 `
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, % v" k/ ^- c' x2 @  s7 X
还有这么一句:<%=showbbs("name")%> 9 c. T2 v4 c( Z
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
; j, W2 Z, r0 w1 A$ }& l5 B代码中的i=1和i=i+1 - J; T9 G0 T8 z5 @# L
if i>50 then exit do
' j- v' o: B/ ^9 k2 c  r* Ushowbbs.movenext
- l4 G4 c! {; U0 b( VLoop
, N5 C) Y3 h: o- T* Kshowbbs.Close
% {$ G7 t) ]  \$ ^6 z* _( bset showbbs=nothing 0 P# d0 R2 a1 n# ^/ K! x$ c

; r+ h. [: g  J. c% t  L这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
$ @4 P" [' y+ Aif i>50 then exit do中的50可以修改 / Y8 n  H- w- l8 `: n) V
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
) p! E$ B8 S4 p: f9 Q还有一句很有用的: 5 ^/ S4 p4 E$ ?: N) U9 `
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> " q! m3 q! g  m% C+ K" N
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
  X6 S; ?! S5 L) ~1 C  J7 i' K. h等一下在show.asp文件中就有用了
- w1 H% v4 n. R3 C4 g7 x5 C- i1 O8 b& o; z* R
5、show.asp + Q+ g* Q! J8 }9 ]$ W
源代码:
7 y/ y2 }" p, g1 J" D
  M$ s4 ^7 }2 n" y<!--#include file="conn.asp"-->
, N. q, r; A  |( J<%id=request.querystring("id")%>
6 m3 L) I" e& W/ Z, [/ _+ G<%set show=conn.execute("select*from bbs where id="&id&"")%> ) S2 h! g' `. E7 O7 F' D8 A0 w
<a href="index.asp">
+ L( e4 h: M" y  f; w0 i% D0 b5 P<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> + {$ z6 n$ s! Q9 d" r. N
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
( P+ G6 F: e' v7 Y<tr> ) |( P( U# N+ d2 d% n; a/ x
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
& L1 j0 e4 [" [( }! ^1 |<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> # v: y' R. S  x- R3 S
</tr> ! x+ z4 ]) X: Q
<tr> % r( B. X! _% p; J1 S: s# x" U
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
7 K* D1 h7 T! l9 Z</tr>
4 n& z! h5 N6 E, U' B( t8 S</table><%set show=nothing%>
& W+ {5 |- W( f9 x7 i/ T$ @1 O
. G5 G+ `1 m' I9 M劲语句---精华语句:
2 P7 I; c7 C# f& l0 lid=request.querystring("id")
9 u; `. [5 L+ a9 S  @$ f  s. B在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, & [) a( E% y% l$ z! u1 t" z& o- ~
id=request.querystring("id")就是把地址栏中的id的值读取下来, $ q0 r/ h$ R$ ^- x/ C* f# i0 K) O
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 3 p" P+ j" M( x2 z9 @2 Z! S
所以show.asp使用id=request.querystring("id")语句把数字读取下来 ; X# I+ ]5 R' d2 E5 j6 W/ D
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")   A' ^5 v- d! k2 c0 p' J6 K
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
* H& G0 A& o) l9 F: L: c+ I4 K9 O0 t  ~最后<%set show=nothing%> & t6 J7 B2 r2 g0 p
8 D6 H- f$ f, a& b; l5 c! Y
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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