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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西3 _$ b* O% v; v: E- S' Z4 l
真NB..佩服ing .....( F; L* E: o1 V: G8 M- x
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
9 F8 z6 @3 \6 K0 C4 k3 b0 j
* `  f0 i3 ]+ _同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
0 T; X2 r. d  S2 ^& O3 I% v" |% z) s7 ~
一、建立文件! . h( H6 I6 M8 B& B
最简单的论坛也要有几个必要的文件,就是:
; @( G! K; g0 U8 B
, J6 f7 o# K; o2 g- I2 _$ L1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
" Y6 v! S( J3 }5 r2 K3 p$ H
! l7 v4 M5 P- y+ B5 Z/ s. J2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
7 c; J  x5 |( |! b3 L5 }# h3 {+ |3 ]+ p% `0 x' ]+ e. y: S
3、发表帖子的文件----命名为:say.asp + X2 m( `; C+ z: ?( ^2 R

, Z9 c! K0 W5 Q$ q* Y8 c# u# c4、保存发表帖子内容的文件-----命名为:save.asp : M, ?6 x8 n* O' [* M

0 P0 N8 Z8 f( V5 d' ?, ?; G5、显示帖子标题的文件------命名为:index.asp 6 x; S2 `* I% u% I. U& X1 j
; ~9 u# \4 L# w5 \- M6 u
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp : w7 }0 n+ T0 t2 P0 i6 {: Y2 Z6 i

3 b' r8 A7 A5 b建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" - i+ p. j7 n+ I# k
- O1 Q( v0 E9 |1 o; Q) X$ E+ ]; r
二、各文件的主要内容 / w' [$ s& c7 |$ S

4 _( H0 t7 {$ Z1、bbs.mdb 8 b# q6 L  P" d' D* m5 F) E4 Y
4 G: F! ~3 _/ F6 ]8 y
打开这个数据库,建立一个表,命名为bbs
+ j% ~0 V4 d1 G0 b( c+ M1 x, T
9 P" `! S( ?5 \8 j" g- v/ g该表中有几个字段: 6 }/ ]1 J& g# I! T. R

, K/ ~/ l; s9 {- ?/ _id(自动给帖子编号),他的数据类型设为“自动编号”
7 `/ w6 |5 u2 S- l* v5 Z/ `2 T. K6 c$ k! o* \
name(用来储存发表的作者),数据类型为“文本”
" l# y0 F5 Q  J: e- X' u3 [2 [5 n* M/ g6 S) M- F5 ~" `2 S& ]$ `
title(用来储存帖子的主题),数据类型为“文本” 4 Z$ X; \" C; H2 S$ D
1 A) V- \8 [5 U8 D8 ^
body(用来储存帖子的内容),数据类型为“备注”
7 P" `/ E! q: q* t' O, u7 E# V) U, e& D6 J
2、conn.asp
. ]0 x8 T9 {( t6 ]源代码为:
3 t& E" i8 |$ M. f<% - b1 r! ?5 u5 L2 U0 L0 b
Server.scriptTimeout="10"
9 _' W$ y. s, _c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ( d( K  x0 b2 x# k1 t
set conn=Server.CreateObject("ADODB.connection")
/ p% Q9 F: ]' O: F' A' z+ ]conn.open connstr ; n$ @0 e- W1 v
%> . v% |# l( x; c$ t, l

" I6 o) N! ]( ^# }这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
/ s/ @1 c8 p# X* ^; {8 A
. H0 J5 u! `" n- k# j3、say.asp ) s9 @) k% Y- @6 f, D% D
/ B) \; x0 _2 A3 S# }
源代码为: : g$ \* O5 C' H2 R; C( h
<form method="POST" action="save.asp">
( d; E9 A: c; S) ~, @<p>大名:<input type="text" name="name" size="20"></p>
% k4 y, t8 ~% \8 `! H  r9 \- Z<p>标题:<input type="text" name="title" size="91"></p> 7 k' y4 i$ X, J, {4 T; W2 d
<p>内容:</p>
2 F5 @! v" `; c! n. F6 b$ [2 Z( b<p><textarea rows="11" name="body" cols="97"></textarea></p> & P; i) ]# ?" O
<p> </p> 6 b% \0 `. y# F6 p
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
  N; D/ U5 t3 b: [0 l</form>
+ D- f' r( S$ K7 E- e大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
" {, s6 l( I+ u不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! - ?0 M% n' Q7 c; S6 t, v

) V: Z" U' r6 e7 p( I* k, L$ [4、save.asp 3 w, a! l" @3 B

# y7 ]+ p% E& O1 a源代码:
3 L, p; i1 x% n: S<!--#include file="conn.asp"-->
+ j5 J3 V$ C( F) y, R; n<%name=Replace(Request.Form("name"),"'","''") * p3 G# ?+ x2 z; T
title=Replace(Request.Form("title"),"'","''") ; y7 C! |: X. i4 ^& S7 ]7 }
body=Replace(Request.Form("body"),"'","''") 5 p: d0 ^. j# N
%>
4 k3 H6 n! S9 V<%if name="" or title="" or body="" then%> % g" j* m( C9 }6 l' }, L) w
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! & ?  G$ h- M& ~* x; q
<%else%>
% d+ w, o+ v- f" T1 {. C<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
; H5 X# D  {# D$ \$ k发表成功!<a href="index.asp">查看帖子</a> 0 W4 f/ Y# U; K
<%end if ' T$ l8 y" ~9 G& i
set savebbs=nothing " ?/ [# G- b; `
%>
2 a! `" q& H% f  p7 V9 U2 t7 \, V" o, [( s3 j2 I6 T
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! ; ~) p& `/ ^$ W; B
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
" ?$ l$ h/ S9 r, r% _* H  E( d接下来几句: + ]! i/ M, `7 s  L
name=Replace(Request.Form("name"),"'","''")
  `9 I! }$ K! a: U" jtitle=Replace(Request.Form("title"),"'","''") 1 K6 l( |' _% \7 q0 c% B) I6 U* ~
body=Replace(Request.Form("body"),"'","''")
) K- p- ?6 _0 b* u, B2 h* D
! T- H- O$ l: E% t8 q( U“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, % G; b2 y  o7 `4 K
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
" E2 H. u: ^; y, i如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ) k% J  m# M( y& M) B
就是把表单中名为name的文本框发来的数据储存在abc123变量中
/ x+ F; x( Y1 s7 D& R/ E" K% f2 e; f9 |0 E: M4 R
接着:if name="" or title="" or body="" then
2 r! }9 N# O4 [; [$ A- e/ S判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
4 J: H# p/ k. {5 c) P, d“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” , w, Z1 A8 v: O" N  s) @; f
该语句属于html语法,大家都看得懂的!
  f, I- l2 }6 w" U! r& g6 X! u% |$ f2 g! r, l  b( J
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 9 ]% l, |; y8 \% n% Q
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
& H1 r4 f: w; t$ `( @4 G% K* l发表成功!<a href="index.asp">查看帖子</a>” & b$ f, q3 d% j! Q0 u2 }# C9 L
; K  E& N- K) H6 S( w
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
1 A. Y% S8 P4 b( jinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
. A4 _2 V3 \* u中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
0 S6 a, O; O: |- hvalues是“值”的意思 ; c& E# P9 I; @) G6 x+ U
就是插入向量name,title,body,向量用格式'"&name&"'表示
9 x. p8 F) [4 p) v: z2 D4 c$ ~* U/ B0 U( d/ [, j- z
最后:end if就是结束if……then
0 A! q$ K* _! y" m- R& {& Iset savebbs=nothing可以说是关闭掉:   D2 e2 e9 t, P
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
  T' t- v5 z* y2 v# \
! s! N6 P' q3 B- k+ ~2 M. Q' c
/ [0 Q+ n$ L5 L* u5、index.asp
; E' E" ^6 ]+ A. ]4 u# u源代码:
0 Y% J- {; z4 c5 Y0 k- M" \<!--#include file="conn.asp"--> , ~, D" a- N9 s+ ^' q! E4 a
<b><a href="say.asp">发表帖子</a></b><br><br> 3 n# e* ~+ a+ V6 ?5 z) @
<div align="center">
& v8 U+ \( N( E<center>
& T0 a" M3 e- y- e  W$ G<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
6 U% x2 u5 a  B8 P/ s<tr>
0 l# S3 K: E; J2 b6 J<td width="17%"><b>作者</b></td> $ S( j9 }; r! o9 Y# `# ^' K
<td width="83%"><b>主题</b></td> # `5 @# \% s5 R. m
</tr> 8 q! v1 {! b& L9 K* d
</table>
% m5 L( l9 m& B  J5 B+ F</center> 2 ]8 E2 t) c8 p$ F6 t
</div><hr size="1"> 0 d) h2 b2 v, S. f" \/ n- l4 Y
<%i=1
; |& i1 [8 d+ Aset showbbs=conn.execute("select*from bbs order by id desc") ! V- _. a" a8 L. M# l
do while not showbbs.eof 7 Y& [/ `; r  H7 r
%>
( }, R: r1 ?, l/ ?" q2 N<div align="center">
; x0 s' B% A* \' K* y- ^<center>
; a( s. Q2 k4 X, E) o; U<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> " Z' |3 G4 Q7 ?- U. @  h
<tr>   f( g) U& U$ F0 c
<td width="17%"><%=showbbs("name")%> </td> : f9 B9 ?$ H7 y: d5 U& o
<td width="83%"> 1 [! h9 ?' [& S+ r, j
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
: Q% f, g( y/ |0 Q5 r</tr>
. N7 y& X: ^- U, U5 V9 j</table> 9 p$ J( y  C+ T
</center>
  G. \4 w# i$ B0 \</div><hr size="1"> 6 b+ u+ O2 O' I% |
<%i=i+1
9 ^+ u1 O2 B3 G- ^& S1 u7 G. @" cif i>50 then exit do
9 D* [; |( n- w, Lshowbbs.movenext # }+ c8 B: H0 d4 f7 c
Loop 3 }7 N0 T! l+ I# B2 G3 `- ]
showbbs.Close
1 p' a' T' H* x/ aset showbbs=nothing " e4 L2 E! m! d, }- k
%>
0 ~9 k1 r9 z7 y# U5 ^7 o9 n5 E: E
这个文件就不一句一句的讲了 3 \/ m; L) m; s8 d2 |; P1 l( E- a
主要讲精华部分:
8 [7 }( x, o; i( Y+ y+ iset showbbs=conn.execute("select*from bbs order by id desc") 5 G8 W7 r7 N8 q& T
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
9 }& |$ x  U8 M8 M/ C& O4 I4 Z6 M$ M还有这么一句:<%=showbbs("name")%> * i* [# f0 N" _3 J3 K( l
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
8 ]! u+ y% [% g$ y) L代码中的i=1和i=i+1 ; z# W5 {$ u$ B2 r) q
if i>50 then exit do
* O" n; \9 V! D2 Z4 _showbbs.movenext & ~% H0 p4 z( n/ [, f, T
Loop
; _$ A# }# K5 B0 X; r9 dshowbbs.Close
2 o2 g  C/ L" l4 Wset showbbs=nothing 6 b) S* w7 S# Z) N
* q$ Y7 L' V% l# U" j( y. j
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 1 ~) T* J  G# O. Y, M
if i>50 then exit do中的50可以修改
; I8 v; O5 `7 O9 q但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 4 Q! n2 d1 [. m# I# @4 k1 M0 i
还有一句很有用的:
3 j( J# m. G  d, A<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
) z. Q; R# Q) \里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, + m& q7 ]5 S& v
等一下在show.asp文件中就有用了
, ]9 y; M6 j5 J# s* \0 G  @" g  E& S9 Y
5、show.asp
- h4 A3 g# A  _1 w5 w源代码:
7 Q3 v+ b% ?! J- e- L
* e. o9 W, [+ N- W- a<!--#include file="conn.asp"-->
3 Z/ e& _, C# L. V<%id=request.querystring("id")%> ! D; H* t2 q& C7 ]4 x
<%set show=conn.execute("select*from bbs where id="&id&"")%>
5 W4 {0 c! P; ?1 J. x' T1 N<a href="index.asp"> ; u, t% P% ^1 G5 R5 e8 O8 a% E
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> . T% V1 p0 Y9 b+ L+ r9 @  J
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
5 V# |! j" T1 _7 T1 o# e7 Q# a<tr>
( z0 b% H2 k% e: O$ a+ S<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 1 l  ~. P- j, v! o9 Z
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
- K8 `3 [2 x) P  D9 \</tr>
) J: q8 u' a$ W/ U) P0 q0 f2 n( ]3 ]  E<tr> ( \5 b: q. x# H9 p
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
# P6 l7 P5 i+ Z" w9 w4 K. M! A</tr>
' \: O0 }8 O% s3 W& ?- @% |</table><%set show=nothing%>
2 d4 }) U  V* T5 L
% b5 H% E% z+ ]6 \5 t) E: x0 v+ u劲语句---精华语句: . m4 i$ O, J4 `2 `( T$ t
id=request.querystring("id")
4 B) c! n0 G( P- P& l6 A6 j在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 4 p; {, f( Z, N& j. h& {( _
id=request.querystring("id")就是把地址栏中的id的值读取下来, # N; Y+ B3 y+ y1 ~4 a( V
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
5 ?* r4 x0 x; l# N6 N- c  ?所以show.asp使用id=request.querystring("id")语句把数字读取下来 ; D& [, e2 a9 u
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") % N# k% c$ Y/ `4 d/ R
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
' n2 ~+ r  _4 X( s5 J最后<%set show=nothing%> * q  Z; k2 a3 a' F9 k* A
2 N8 Z# n7 K$ i3 x+ x+ ~% U
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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