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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
4 E3 R' p# `# ]- Q$ `" m真NB..佩服ing .....
2 p. d" P% r) Q- m6 y大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。8 B. P5 D1 r; Y/ T6 u4 q
" o: k- m( c5 d! Y" q
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
5 i+ J! Q, m# C* T$ v0 b, X; R  u! k1 r" S
一、建立文件!
; J& ]5 ~- E. D; P( @4 D: X最简单的论坛也要有几个必要的文件,就是:
7 E8 }! ^+ ?; c- \. [
  j. l4 j  C$ F, f1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
  }1 B6 d: c- t* _# M2 b6 P9 ]5 m; N4 i+ k
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
0 [. k8 }4 c: _9 \7 L8 e( [9 l+ K# u  L+ q
3、发表帖子的文件----命名为:say.asp
' d7 a: J" \% H: @2 @! H- T
; a2 v3 M  G* [6 Y7 [) J. q/ W5 z4、保存发表帖子内容的文件-----命名为:save.asp
- ^1 a. l  P" y& M
$ j5 }" K; s' t, Y6 A5、显示帖子标题的文件------命名为:index.asp ) ]6 c! c# U4 {7 x' f, A9 v
% p/ O7 Y: R8 m9 U
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp ) [- F7 }; h: s" ?
, J, _8 y- ~. b8 X" O0 o
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" * ^4 d5 o6 E+ X

& J8 H, o, ^# k' a+ _二、各文件的主要内容
/ L/ e" w; K2 |! G
9 e% [( W% c' y9 w" l- z3 \1、bbs.mdb 9 j* E; [: {) \) R! r5 Z2 u+ {
- Y* S' l8 k/ _5 x: @
打开这个数据库,建立一个表,命名为bbs ( M% g- v' y6 O! v5 l( ~9 \

( T- T& o- s- F该表中有几个字段:
5 }. w! V" }, M5 @5 i5 E, ?) ]! k2 f% H" B2 Z$ s1 i! S
id(自动给帖子编号),他的数据类型设为“自动编号”
8 c" `1 w  H* f" H
! z1 J! n- _. r  l2 ^; n" G+ T: Cname(用来储存发表的作者),数据类型为“文本” 1 b$ Z: `: J/ b
/ d) `& y4 O# ~4 c
title(用来储存帖子的主题),数据类型为“文本” ! N; s7 W. ]3 Y3 e9 L+ a! |
: v1 ~: V& V# n! J& N' A
body(用来储存帖子的内容),数据类型为“备注”
4 a( V7 m& j8 Q
- {( O: T4 i% |6 H. \# R2、conn.asp
$ Y  }) |3 A- T; M9 c' ^. n& A# ?3 I源代码为:
/ z/ f$ j7 U% H3 {! R, v<% 0 E. O$ F; {+ m
Server.scriptTimeout="10"   ?" r# r3 h+ J& L( o* V: z  b
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
, \; y4 `$ E8 F4 s0 Q, A* Y- |set conn=Server.CreateObject("ADODB.connection")
$ P2 _- ?, b+ k$ e7 U* x9 nconn.open connstr
5 T8 |, y7 v+ L%> 1 t: Y0 h, r" k' r' J% t6 l

  e' N& n: V- I这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ) P; j$ a8 S/ c1 S* i7 F

8 Z: Z5 O2 ?5 r1 d+ V. a7 n3、say.asp ; ~0 ]& }( w; j" Q, B* H5 U
% E! b3 R' L6 M5 h! v% R8 M
源代码为: + D* C+ n! b5 o  B
<form method="POST" action="save.asp"> ' m6 q5 h2 a1 Z: ^
<p>大名:<input type="text" name="name" size="20"></p> 0 g& r5 c+ J2 f# l7 m# U
<p>标题:<input type="text" name="title" size="91"></p> # i4 |7 M/ R. q. W. K
<p>内容:</p>
3 y. Z1 v! t+ ~4 X4 H<p><textarea rows="11" name="body" cols="97"></textarea></p>
+ R- A& S# Z# g4 j<p> </p>
$ V0 w3 l4 L6 b! C+ c<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ( s2 Y4 n) J8 Z1 [
</form> ) H& G0 q8 u4 Z+ w/ f4 V
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
! t2 V& R+ N/ W+ r* Q8 I7 y不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
2 {% I# _, C: F7 }- h+ w$ C) _9 p# y. E: D' B
4、save.asp
4 a& \5 Q% Y( x- M
5 X- j, H2 ~) B& m7 _源代码:
/ ^7 a% g0 v0 Q- J<!--#include file="conn.asp"--> ( o( j" o8 h. r: z" ~
<%name=Replace(Request.Form("name"),"'","''") $ ~4 W0 U) F7 b0 p8 _4 A0 \) S- A7 Q
title=Replace(Request.Form("title"),"'","''") 7 }* P4 C6 Q( I- ]+ @: e
body=Replace(Request.Form("body"),"'","''") 1 a! [9 Y. k/ S4 H$ I) b& N
%>
% @3 d" U: n7 L, v0 }+ Z<%if name="" or title="" or body="" then%>
# w3 \& m( a) U8 Q请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
$ M4 s" P7 N% w' }  k+ x! F<%else%> - o( ]  ^  S6 \$ ?' ~
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
0 R4 Y6 H" ?4 N' Z9 a发表成功!<a href="index.asp">查看帖子</a> , @( B, p9 T: r, e2 J; I3 @4 k0 c
<%end if   |0 x0 D( B- ^. p2 Q- s2 o
set savebbs=nothing
( I% A% U4 |6 k# o0 H9 i! V%>
. t9 a! x; J+ ~6 ]. J' o
7 R4 i! F7 u: B' H5 f第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
2 I. ]0 g+ U0 @: _asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 6 ^- E  l) `( }! D5 J2 I
接下来几句: . u2 q, _/ @6 k" g1 G: N1 u
name=Replace(Request.Form("name"),"'","''")
4 @  Z- N8 A) @title=Replace(Request.Form("title"),"'","''")
9 ~* D/ n: `% W+ D' p6 ]body=Replace(Request.Form("body"),"'","''") $ w/ a4 x5 r& K, d* M" {
5 t1 a7 h( u* e, W. ?( T% [
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
( T0 p+ ?. f3 n( k而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
6 A$ u: J7 F- Q7 e- t5 t. _如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
: C/ @$ w5 A1 p就是把表单中名为name的文本框发来的数据储存在abc123变量中 # D. U2 s. a0 {1 P6 J* d+ m

+ K0 r- Q7 m' }. h7 G接着:if name="" or title="" or body="" then 8 H; m( U& W, v
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
( b  d) C* c. L. G  Q$ Y' p5 a! X& m1 c“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
3 d* A1 |  C3 ~3 w+ d$ D; F该语句属于html语法,大家都看得懂的!
+ S. k* e2 _, G  z8 z, d2 q3 n' q
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
9 V9 A$ \) l9 K! e) o2 {" S2 I“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
; |% M7 C# n3 z: c! R- \发表成功!<a href="index.asp">查看帖子</a>”
5 j- @0 I2 R; Z' r$ V7 P0 ^7 i- _7 h% e/ g: J& q$ }
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
9 L) q8 {# B* d; g9 z1 l: `- i3 D. R8 Uinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
, G% N  V0 n" a  J1 h中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 5 F2 U; i  v3 p( A9 v4 ^, V
values是“值”的意思
& Y2 U! P" L4 v7 J; S) z. O就是插入向量name,title,body,向量用格式'"&name&"'表示 # E' ?8 O: x& w# g- U

, C9 `( I) k/ ]/ R最后:end if就是结束if……then
7 ?7 V) L4 c, z9 S' X  Cset savebbs=nothing可以说是关闭掉:
$ ~8 ]$ U& i0 q# W0 W# g. n. v0 p& Mset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") * K  c- u! z+ B9 l  E( y: e7 Q
& l% ?9 M! b% f9 h! i
( R9 ]3 `) }/ e4 v8 G
5、index.asp
  R% `5 p0 _6 `源代码:
5 O# R1 C1 v4 d<!--#include file="conn.asp"-->
# b+ r' h& q* d2 c<b><a href="say.asp">发表帖子</a></b><br><br> * [& H4 X( U  g3 a2 n
<div align="center"> 4 V7 i" l# y3 \. C
<center>
, s( o" A' c$ d0 z$ X% ~$ |<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
% ?4 R3 t: _* V% B2 r6 v<tr> ) R8 W7 P% `. y6 u, J, ~' `
<td width="17%"><b>作者</b></td>
; Z; `- ]: e/ a. S+ h<td width="83%"><b>主题</b></td> ' e1 W# e) X( `) q8 z$ A
</tr>
* |. ]0 O- B. _</table> ) Q3 A* S; F, {! _" j
</center>
4 ]0 }- n; j0 y# ]  ?$ N</div><hr size="1"> 8 e) ^, T. d  a9 F' p
<%i=1 " L; Q" O# n- }$ z$ A
set showbbs=conn.execute("select*from bbs order by id desc")
' \; I2 ~8 }) E+ F1 _' A" k% _do while not showbbs.eof
& X6 k5 E' ~3 ]* e* w3 Z  s%> 7 o' t2 n+ C9 J
<div align="center"> * v# [' _2 ?) }- \, l0 K6 W5 s
<center> 4 A& z2 f6 S( |) F- S% i; ?, P
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 0 y5 c# R' k( R) W0 l* G/ @
<tr>   J6 X  f, I: a0 y' R: K
<td width="17%"><%=showbbs("name")%> </td>
3 q+ H" M- a# w<td width="83%"> : ~# L6 V2 Q/ k4 M% \- q# t6 m
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ! j  D& `8 L6 t- ~
</tr>
( c7 c: W( g' N; t1 W% m</table>
. L7 m3 ^+ t$ E/ [. f' \</center> & e! l. ~- I- r/ U. Y- P3 q
</div><hr size="1"> 3 `. @. O4 s2 v2 I$ Q& I" G
<%i=i+1
$ a: d5 h9 N( sif i>50 then exit do 8 b! I& }& a* l/ v7 @: g
showbbs.movenext
2 [  j0 `/ A1 J# k" ~4 J% JLoop
$ _+ D" S, X. R. ~- ?: Vshowbbs.Close ( p2 m( Z2 E. w1 a$ R) v$ Z
set showbbs=nothing
" y" k# U4 h6 E2 Z9 l4 ?* @/ L%> 7 M! Q$ Z* N' X  a6 C; g% S2 S
" Y0 o% P# }) s" M9 R
这个文件就不一句一句的讲了 5 T" \2 b0 n! H1 W: f; G
主要讲精华部分:
( y# \$ q# s0 a  X" V  h! sset showbbs=conn.execute("select*from bbs order by id desc") : N. h  f2 u. n
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, ( a+ O$ G4 h* {: O& ]9 T* t
还有这么一句:<%=showbbs("name")%>
/ A+ @+ B" u; {就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs / l) n2 q8 \8 i% G8 |9 S- a4 ^
代码中的i=1和i=i+1 7 j1 K7 X* U0 F$ j1 ^& {; w6 r
if i>50 then exit do & ]& Z  R" I. q1 q% s2 f
showbbs.movenext
: F( u5 o, T* k8 J9 E, xLoop : x6 u3 L- B/ q, `
showbbs.Close
1 |, C: ]0 W/ X0 X( S3 Oset showbbs=nothing
" D' g: O5 {- S! @# T5 V4 a2 u0 S% j$ x/ V+ I3 y! l# c$ u) O) X/ L  R
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 2 d% c7 [' O: a
if i>50 then exit do中的50可以修改
1 U3 R7 e( t+ y但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
. f" L7 q3 o# w6 Q5 a- Y还有一句很有用的: % ?, I9 \- R: N5 e$ x) a1 Z* c
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
/ D: e- n: \- ^" _% c里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
1 \2 J+ M! i$ @4 i# x6 ?$ o等一下在show.asp文件中就有用了 ! @/ j1 R) V* h

5 \2 I" ?" x% ]- m9 T9 F, [5、show.asp
9 R- d; \; H5 q0 ~" |! p. u源代码:
) W3 H  S  a7 K# k! T- w
3 L3 C% |% \0 m! @<!--#include file="conn.asp"--> 3 f3 P+ ]. O5 S5 a1 W7 p
<%id=request.querystring("id")%>
( [; ?7 H7 g5 h0 h5 E<%set show=conn.execute("select*from bbs where id="&id&"")%>
3 g* n" J) O# J. o: J. ?; t<a href="index.asp"> " P+ Z1 U" w- m7 o4 C% B! F
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 q" B( Z+ d0 f<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 1 t7 A1 b9 z( G  [. T& b4 G
<tr>
0 F; `, M4 ~9 a+ R& g+ k<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ) z: n4 {- o' b! B$ {: i! \& \
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ; `/ V+ O# E: I) n$ ^+ m8 w
</tr> # |% A- ~( @. i) d- x
<tr>
# h: _+ h( p3 Q. X3 e<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 0 b' c9 v- @3 M1 [& e; r; c6 \( Z4 q0 q
</tr>
0 _& Z- X% F0 f8 P</table><%set show=nothing%>
! Z! a# r& G/ D6 D; ~$ U% F6 E3 i7 E
劲语句---精华语句:
2 U$ ~$ H: d$ S1 T3 v. o" Nid=request.querystring("id")
1 e' _5 @9 c- h$ T- p6 ^在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
- v% |( \5 e2 S8 i0 Aid=request.querystring("id")就是把地址栏中的id的值读取下来,
: M# k! C2 t7 S6 I) |8 W) x8 z% Z; ^因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
& J  P& Z0 `0 ^$ a5 X) C) ?1 l所以show.asp使用id=request.querystring("id")语句把数字读取下来 3 ]: ^  t7 {( {' Z. ?/ [
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") & ^" W4 ]* s. `) z  _; u! @
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
. ~! U. O/ K. ^, `最后<%set show=nothing%> & Y$ o: m% b6 q" J$ W2 m
' w! A  Y( [( t! f' S* ?
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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