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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西. y6 V. _( s( o: `/ y/ _0 `5 N5 F7 \
真NB..佩服ing .....
( b1 l# Q. H6 U2 F1 J! z大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。3 ?7 M( G( Y# f' r1 M2 b7 z
7 l3 r6 e9 D, ^6 a/ h
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 $ Z% x% Z% ~) H! g- o4 Y. f1 A

2 y9 a1 X; K2 d1 [一、建立文件! 9 m) J, m; A8 g3 \% Q
最简单的论坛也要有几个必要的文件,就是: 4 o. v2 a( a# d$ ]! M- C
' x: [. W/ H! t6 x! r4 Z
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb . }! i+ W3 @( k  P' r
, u+ [* _  e+ h& s3 K
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 3 O4 Z; U# p  B6 j# ^0 o" k

1 M6 W! ]+ V5 A; e3、发表帖子的文件----命名为:say.asp
: _% Q% R  Z! x# q7 j# I2 Q: c  H2 C. q2 c$ K% \% B
4、保存发表帖子内容的文件-----命名为:save.asp " Q9 A" V6 p+ Y7 H* m

* Z  ]! b# B/ M7 e+ E+ {5、显示帖子标题的文件------命名为:index.asp
/ Q1 y. M0 E! ~( r- H% g" q
' Z9 p' ^# K' i0 |, X5 A& Y" {6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
( e. \+ @4 [. e; x  |% d( f* m8 ^  x) f3 ?5 q* g
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
1 |9 _5 G; Y# ?( A( F& s: A/ P0 k4 t9 ^0 D  P2 ?; w$ }% }2 L
二、各文件的主要内容
/ A3 H: f- B2 m  \6 s
0 l0 R0 |$ ~" G6 p+ ]1、bbs.mdb 5 c0 g4 r" b; v* [  k) p
2 X& k* Q5 y/ ~- [$ N; U
打开这个数据库,建立一个表,命名为bbs * A/ \3 q9 {5 B# k* {

$ R  i% J2 J! C, k) m- U" t该表中有几个字段:
5 ^2 u$ d# y5 U) S2 l, C3 o2 E. ^" \5 [
id(自动给帖子编号),他的数据类型设为“自动编号”
, e0 D. o: a% q  S7 y% L4 V6 K) n* w! X
8 h- ]2 r3 C3 C7 y: r+ }/ l5 hname(用来储存发表的作者),数据类型为“文本” % i7 R, ^# D: ^# @0 C5 ]1 ~- a  J

! t% s9 E3 H8 B! ~0 a" rtitle(用来储存帖子的主题),数据类型为“文本” $ ]0 u+ Y. k; z* A2 |8 j' t
# v! t# d& o% `' X6 l, ?+ ]; w+ i
body(用来储存帖子的内容),数据类型为“备注”
  Q! p9 ?/ A9 M8 l) e! b
7 b  k. \& d+ W' O7 `2、conn.asp ( [2 ^4 i& `% d4 p
源代码为:
  I. `3 G; ~) H" ^: E: d<% * f& K  @" H" m5 F+ A/ N2 A; s9 K
Server.scriptTimeout="10"
9 I! M' C6 a6 s( ]c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
1 V( m: B: D) `9 R) Q8 a4 c, D; qset conn=Server.CreateObject("ADODB.connection") . ]0 |, }2 ~4 U7 G
conn.open connstr
0 M! z, j# U+ h( O5 Z6 p%> 0 e4 D4 ~; P7 {' t

  Q, Q" l, k, Z9 a这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
: T/ \' h' D+ J0 R  A) j+ v  T3 S0 P( |$ t% {' p* f& [8 b; ?
3、say.asp 6 a. k# p9 n  B3 g! T
  V0 ?7 d1 z( y5 R3 i$ J
源代码为: 5 Y8 c7 m9 F9 U% O
<form method="POST" action="save.asp"> ' ^/ m7 [" U' C- {+ D+ K+ |2 ^
<p>大名:<input type="text" name="name" size="20"></p> + N, }. {. L+ V2 ]
<p>标题:<input type="text" name="title" size="91"></p> 7 c* M* {- [0 @0 D8 t. S- x4 {) d
<p>内容:</p>
6 Z. ^" _9 g# U- F& B% b0 M- o$ X<p><textarea rows="11" name="body" cols="97"></textarea></p> 5 L* z$ a  g3 R' v
<p> </p>
) l5 i% f0 x* \& ]" N7 G" Z<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
( S: U+ a7 E* g) Q</form>
3 L) A+ p+ i# y: a  c5 A大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
7 Z6 ~$ S$ r$ `" e+ l不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! 2 b) y) I4 @6 H. a
3 s$ ^( r* X- P, k( A
4、save.asp 7 f( Z, d/ r2 s0 {
7 F* \; p2 l: K4 F
源代码: ( l0 @9 E% W1 o6 I2 t
<!--#include file="conn.asp"-->
0 }& ], _- W! Y. m6 `<%name=Replace(Request.Form("name"),"'","''")
  k) L0 G5 P! ~, {$ |6 a2 Etitle=Replace(Request.Form("title"),"'","''")
+ Z7 p4 c) a- qbody=Replace(Request.Form("body"),"'","''") 8 H4 ~8 h0 w; ]: V& a
%>
% ]( d: k. ?6 N. \9 O1 d<%if name="" or title="" or body="" then%>
, v5 R: G! `, I0 Y, J2 y5 L7 ^请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
- ^% f# K* l9 s3 u% C6 i<%else%>
% q' K2 @7 ?; |4 u! _<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
: D  W# [0 ^# t' w- h3 T" @发表成功!<a href="index.asp">查看帖子</a> " P' U2 l, r5 z2 F. D
<%end if ) A- E; [; p0 D+ S# p& S1 h
set savebbs=nothing
+ Z+ z' C: [3 U( b%>
% k8 P% W4 `2 [# z; ]! R, P+ d
9 J2 m: y! I9 r第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! % j5 A. f, D$ |2 t! l0 w1 v
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ) m8 X( D& e1 Q. H, x% b% x/ d
接下来几句:
; C1 l% v7 r3 }/ F+ Iname=Replace(Request.Form("name"),"'","''")
4 \6 v# E, f+ u% Q* Q$ Htitle=Replace(Request.Form("title"),"'","''") ; ]1 |/ G1 y+ I2 {3 Z* c
body=Replace(Request.Form("body"),"'","''")
4 c" E9 j2 G: |. }% M& q7 h6 [+ ~0 v, x' I0 e
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, & P+ i- p, ~# N
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 8 @4 _$ N8 a7 V7 a/ W7 [$ f" e3 n
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
  m# c! ~/ H9 N就是把表单中名为name的文本框发来的数据储存在abc123变量中
, [- h8 `, ?& u) z; {% \) `  ^
9 p% t+ }5 i  Y7 ]7 F* j接着:if name="" or title="" or body="" then 0 T0 v' a+ d0 _4 T# j5 V% ?
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
# m' V, Q* c8 _6 O& q“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” - o' P( I" n) E  A+ o/ @, C5 c
该语句属于html语法,大家都看得懂的!
; V7 n* M. U( z* C* ?$ n6 c3 W3 B% V5 J1 e
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
; m5 D2 t/ {7 y: S" G“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ! Z8 i; b! H2 @& Y7 }4 C
发表成功!<a href="index.asp">查看帖子</a>” $ U, M8 ^$ `4 b/ t  s

: q# D# Z0 ?' `. }"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
: I9 W' W% G. Q. linsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) : |/ t0 {+ ^1 a  ~* I  y" E
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") , J( g: h; q: i! h
values是“值”的意思
: q: A, O* j( u% ?6 G就是插入向量name,title,body,向量用格式'"&name&"'表示
9 ]$ \) l; K* X, ^  T
3 F+ m. l6 S) d" o最后:end if就是结束if……then
( {& V' z8 s* }set savebbs=nothing可以说是关闭掉: - T% H& g- M8 h
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") + Y: Y; U# P  l! S9 X
  H3 k* I3 Z9 l. ~

7 N6 _) i" x* a9 n( R( h5、index.asp # M- Y4 E. _9 Z7 {9 O3 Z
源代码: ( y7 `& X( \" L% f
<!--#include file="conn.asp"-->
5 {' \; z# {: @<b><a href="say.asp">发表帖子</a></b><br><br>
. p1 \- n* q* h  t# t5 z<div align="center"> 1 `, P: O: a: V, Z, _  ?
<center>
+ O) f7 j, a/ I<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
& }: ~: c9 [- j2 X# g. S6 `<tr> ) t; B! c2 ?% w- `/ d: q" }, @' i
<td width="17%"><b>作者</b></td>
  ^9 d$ C$ x' H# o* d# A  y* U" J<td width="83%"><b>主题</b></td> ; v% o( f+ u: t% Y0 \
</tr> 2 L- k1 ~/ d$ V
</table> % |) C  }/ k/ l
</center>
* p6 O/ J/ e; P</div><hr size="1">
# c: ], _" v2 |" G9 ^9 U<%i=1
4 O  [: T. O- M& y) @set showbbs=conn.execute("select*from bbs order by id desc") / `) Z7 n5 ^1 {1 p
do while not showbbs.eof
4 B# C8 V# s* }) `) y%> ' h- x8 z  n' W- q, C$ o
<div align="center"> ; K& q- T; L9 s1 c/ `$ e6 q9 t$ j. `
<center> : ?# j2 N0 s4 |2 W
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> " \( @3 w, Z( T1 m: L; [( C8 H, _
<tr>
; {- P5 p3 a% B* y' o3 K<td width="17%"><%=showbbs("name")%> </td>   B! a9 r# i& e( @7 {
<td width="83%"> # ~1 P2 Y5 t$ ^- C5 d
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
. H6 q8 j* Y$ [/ k" k; o& _) Q</tr>
1 z+ l& W# }* @6 M</table> + l) T1 F% \) U) L$ x6 M' s
</center>   `6 C, \. x6 N7 Q& V
</div><hr size="1"> ' q: t7 C8 C( e  ?4 e6 [& @5 N
<%i=i+1
0 F" n2 ~* Y( H' J9 W$ j3 Vif i>50 then exit do
! L! G4 q+ C- V9 j( m& L0 Rshowbbs.movenext
' M  A, i- d" NLoop , c) \- r$ y% b2 N+ z3 W
showbbs.Close - \3 f- Q: n5 ]) t, J& L- Z4 r* M
set showbbs=nothing 9 C4 y, J) ~+ H7 S0 _# E0 `
%> ; K! R4 W, N( @
/ w5 S! P2 u9 H8 {4 H' I. C
这个文件就不一句一句的讲了
) C5 h: F& u/ d1 q4 }, P* H主要讲精华部分: : ~" u: ^. ?$ ?* k2 Q* W  J5 G: a3 [
set showbbs=conn.execute("select*from bbs order by id desc")
7 N# ~3 j$ O+ Y/ L2 ]9 u0 W; [8 j  e1 O$ m意思是:向数据库中的bbs数据表查询数据,并以id排顺序, : v1 i, s* C) m0 u3 ^1 d- E+ s
还有这么一句:<%=showbbs("name")%>   V! D! r8 J- i. j3 J
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
7 e# {) p; _2 m" c代码中的i=1和i=i+1
2 d* K  M" ?9 P0 R" @' ~  Xif i>50 then exit do 7 C! p+ |- P: J  @0 w6 e. c
showbbs.movenext
. `- [8 S& n, k- Z( Z. v  o3 b0 ^Loop
3 D8 d" |$ z# O' L+ R5 V9 qshowbbs.Close
+ g+ f  C7 S- Q) r, fset showbbs=nothing * G& b, L# L: x+ \, U: R& v6 |% O
/ M  E6 e0 g% o
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! . ?, W) ~* o4 X: I% R" d- m, Q
if i>50 then exit do中的50可以修改
/ C  ]0 y1 s* ?3 L; J但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
! @1 f  M* V7 R( ?2 a" A还有一句很有用的:
8 y' W: B2 t1 S' M+ M; L<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
/ d8 i; k3 I! Z2 q5 M5 Z8 p! T  x里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
) ^7 v: s5 P* p/ M8 }等一下在show.asp文件中就有用了
( W! n% u9 }; }/ c" {* C
! z" L2 B3 D5 y5、show.asp / Q3 o; M/ b% r+ V
源代码: & Q# F2 U8 X' |4 b
7 T7 v0 k9 z& G) H9 h5 I' ]
<!--#include file="conn.asp"-->
3 C+ x6 O! g- C* ]6 \, h; v<%id=request.querystring("id")%> 7 S( J( O* v) |4 B! m) ?7 }
<%set show=conn.execute("select*from bbs where id="&id&"")%> . o4 B0 v$ x% s2 C) e. i
<a href="index.asp">
% c! m4 E7 @+ [0 q<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
* {) Z. ^9 c0 E. O0 V  D<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
& ?/ K$ H9 i$ r  A8 T' M3 q1 T<tr> ! U% I/ f5 N- D) ^/ \, [9 u5 m
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 7 O0 m  s1 h: [) z) T: \+ E
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> $ p; k! ^7 l0 w$ P9 t
</tr> $ C- y# ~$ x: M/ J8 R+ y
<tr> : ?- }2 y. }8 v3 h! w
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 9 R/ _2 k) R9 Q8 c  [7 @
</tr> ; I4 r( L- P' r+ X; F& {
</table><%set show=nothing%> 0 p/ l% A* a9 a& V! w
1 `, i; c6 h# p
劲语句---精华语句: 7 k+ l+ p; ~, H( U: M8 d% n
id=request.querystring("id")
* Q9 N8 H; O; `, y; S: T- f在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, * `4 \) f' u) d' \1 a% h* n# D: o
id=request.querystring("id")就是把地址栏中的id的值读取下来,
1 y5 A! z5 q! D( s8 C% N因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
" j4 C6 p) M$ t* S# G3 p& u$ Y& k$ @所以show.asp使用id=request.querystring("id")语句把数字读取下来 * c( a' E" Y! Y* W5 ~  Y0 G, O
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 3 L8 z: Q2 U; m( r8 s6 G& p$ j
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
# `  w( e% `+ H! }1 M" h最后<%set show=nothing%> ! P  M! e0 U- a/ k
2 P! k, S; u! t' y4 {
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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