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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西# Z* X7 S  I$ S3 v, R
真NB..佩服ing .....8 s) Y1 B% |, ]8 {
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。  O* @1 c) {2 v! P+ ]$ c
. |: ^2 Z% B% K1 L$ e8 c1 E
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
, t6 O2 y$ m% z3 l8 G" A) [: ?' G+ Y; d0 V5 n) X( m# ?0 G3 _
一、建立文件!
3 _% ]+ P) V! K/ V. c最简单的论坛也要有几个必要的文件,就是:
5 v* `: _/ J& W3 A5 R' j# r! w" L/ r; b8 S! T
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
: j! D0 |7 O( z) x, W! X+ K: ~; A- X, b: c
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp ! n! S; V! L2 K. n& ^

! ~1 A& X9 C& C1 k, u, ^3、发表帖子的文件----命名为:say.asp
' I+ b) F; }! U2 C, Z$ H
  r& @$ a/ ]8 x& G4 z, z1 @) S% m4、保存发表帖子内容的文件-----命名为:save.asp 5 l! p0 u0 o; H6 Y5 g* g
5 k; B" w3 h4 @8 _; G# I9 f
5、显示帖子标题的文件------命名为:index.asp 3 x) Z8 N6 a8 }3 N( {. l

5 d' P( C/ H- N4 c0 d/ I6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
/ H0 O" ]% _- g, X! M  p4 s: k
( G8 u4 h5 u+ C6 h0 D, \. p$ A建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 4 u+ [, u! w7 t" N) H/ v

# O( g; Q- y. m& c- r二、各文件的主要内容 . w" I2 ]7 _# w1 ~+ J; ?- U
6 B& g5 e, x7 b- |8 P
1、bbs.mdb
* b" L6 a6 {) q! Y1 S# q! d$ q' U% F
1 m) K7 d2 Y2 R4 T# f打开这个数据库,建立一个表,命名为bbs   L/ l) k. Z0 n8 u
2 K0 e: K" D  s+ S& P' _' {. T
该表中有几个字段: ' ^* W8 y' p1 N$ \
7 I1 Y/ j% `/ W/ g- J
id(自动给帖子编号),他的数据类型设为“自动编号” $ v: {7 Z1 h; l- q8 i

9 g% l0 a$ R6 r" O; b* wname(用来储存发表的作者),数据类型为“文本”
* s. Z( W* t" }8 B5 u4 I* [8 R0 ^
  g, h* D2 S+ K$ g/ q; S6 Ntitle(用来储存帖子的主题),数据类型为“文本” $ a, R& ?" F- z; A1 d
; H! G" E# T3 x, @" L) Y2 n2 D9 |
body(用来储存帖子的内容),数据类型为“备注” # W2 s; K- s1 G6 J

, u( U9 W" E' }& r) B( u, p2、conn.asp ; D! N+ H% f2 c" p
源代码为: 0 e( y, ^1 v  w  _. S4 M
<%
7 q$ ~, H: C- q" [3 XServer.scriptTimeout="10"   Q* v" n2 P8 v( ?1 R. s7 e
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
2 G. n' Z( g: l. Z# `set conn=Server.CreateObject("ADODB.connection")
" P8 W! e* T  {( s. E) S1 T: l, [conn.open connstr . b  h! G$ B$ ~! `, p/ _1 d8 b. l% G
%> 0 ]" P3 n* M, K; @
7 U& V) b4 g; J+ x* R
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
% _; f# v5 H7 U" A
# Y# A) b6 `5 E3、say.asp + F4 m5 C, S/ |6 B# P) G  j
& x6 q0 @! ?4 |0 B6 l: m
源代码为: 5 \, H  O  {& }3 D' [
<form method="POST" action="save.asp"> 2 E" \' I4 y3 R- x
<p>大名:<input type="text" name="name" size="20"></p> 4 W7 D3 J5 o7 h  ^: [3 g
<p>标题:<input type="text" name="title" size="91"></p> ; h6 @2 g! b; I- S  L: c
<p>内容:</p> 2 K9 E+ d3 ]1 `1 t5 {- n7 f3 t; K/ r( e
<p><textarea rows="11" name="body" cols="97"></textarea></p>
3 _' F! m' C+ e% C  b' K# g/ J<p> </p> % {1 C3 e5 M8 E, x" k, }
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
1 X- d1 v* s1 W# x</form>
+ Z" c  a' N: O; A, a# g大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
) \0 l, |/ U' K2 x3 ^; u# |5 X: L* Q不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! / b; n' ]( y+ V% x3 R# U+ U# P/ }

; G+ h6 R) l  q! `) J- S3 [4、save.asp % {* P' |4 {& ?8 D2 E# D5 ?
5 f" p& D7 S+ G* i' L9 \- Q; y
源代码:
/ z9 U0 u& }1 |+ U<!--#include file="conn.asp"-->
- X( p2 g8 O$ z: G. Z<%name=Replace(Request.Form("name"),"'","''")
2 z0 q' a$ H9 ~- h- p" Ititle=Replace(Request.Form("title"),"'","''") ; y* D0 `8 ^! \. m
body=Replace(Request.Form("body"),"'","''") 9 e2 C* R+ z. o/ b9 z2 d( h
%>
- w8 I% s6 k9 T$ j1 W( i# |/ X( _<%if name="" or title="" or body="" then%> 2 ~( @  k) @, X2 x" D) k/ M7 ]5 B
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
5 U8 X3 X8 Y, r$ I' y. s<%else%> / T  n, b# A2 r( z; ^/ t. Q0 j
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
, S2 }, f' B$ V9 a发表成功!<a href="index.asp">查看帖子</a> ) r) j3 H; u$ o6 a( N
<%end if
: L6 [5 V" _& U- D, J! Pset savebbs=nothing
( ?8 [5 k, k; H%>
' A$ e* F! Q' s7 z5 [
9 f* ?, q4 Y8 T' u4 n第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 2 E0 X' C( U2 _7 Y" Z4 l
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
- j# s9 p, G" G2 ^: C接下来几句:
) m6 [& K) Q! v* E& G5 Ename=Replace(Request.Form("name"),"'","''")
  ~, A1 }- X% Y2 C# J. Gtitle=Replace(Request.Form("title"),"'","''") 8 X2 @" `! p; \: o/ p5 j0 m
body=Replace(Request.Form("body"),"'","''") 3 V! V6 m2 T: k4 ]; Y. z, v
+ P% v6 @. L2 U# Y& A  u
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
7 |; M. n. X% A) r0 [而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
/ {* k6 S  [6 p; }# u: b& v如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 8 W: |0 B; u1 F% ^
就是把表单中名为name的文本框发来的数据储存在abc123变量中
' g( M4 ]# M7 Q  \, A! d
$ e! R3 A5 i8 G' Z接着:if name="" or title="" or body="" then
+ `- _- A: @* Z2 C& v: U判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 7 l. s. [- @6 U* d7 l2 D3 ?
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” / A$ W0 }# C$ r4 r% n: z0 R
该语句属于html语法,大家都看得懂的! " V* x: @* T3 ^+ ^
3 L+ ?: J( ^: M
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: * N( o$ k3 U: I1 L
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
, d; V( E  e0 l9 R. \发表成功!<a href="index.asp">查看帖子</a>”
1 Q- s8 ?, T8 Q+ v. q+ ~
: Q) `- k/ g  z1 E" n, H6 i"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
* `5 N+ O& \# pinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) + |1 A& q) b: B
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") & g9 I+ j, X8 x
values是“值”的意思
" [; d) Q) |9 M" B* ]就是插入向量name,title,body,向量用格式'"&name&"'表示 3 I: i( `5 C0 e' X% x/ O

8 {7 Y7 C# u1 d  i/ c最后:end if就是结束if……then
; B: j" w, R1 Q9 H' i5 qset savebbs=nothing可以说是关闭掉: , A% J7 K) N: \$ K! l1 S2 F
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
  ]/ L6 l' n' g' u$ }  ]  @6 d$ F4 `! A9 y: x" T3 e4 t
4 t) O) j' K* Z8 T5 s$ W) a
5、index.asp 0 S& `$ j/ }% ~/ Y6 Y# @
源代码: , w  g, p% C0 |" K" @: U- J
<!--#include file="conn.asp"-->
- f) A6 F6 }2 u2 X<b><a href="say.asp">发表帖子</a></b><br><br>
- N% C# j. z) n6 U; l. i  g<div align="center"> ) G% _' G9 u2 N. J2 R
<center> & z( {% E9 C# x* F
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">   g8 t& G- o. H. x4 U0 R( c
<tr>
' f) X1 D$ {+ {<td width="17%"><b>作者</b></td> . e0 F! j2 N4 m6 M% X1 o
<td width="83%"><b>主题</b></td> * P, t( l0 M# `$ }. o" N  l
</tr> ) b3 O8 L: ?; n
</table>
1 ?  j1 Q: |, @</center>
% z" Q) V- [/ u& r9 T7 T5 t</div><hr size="1">
0 M8 M2 m, `1 X5 v+ U0 A1 n<%i=1
6 N" {1 g6 `: b# h  Wset showbbs=conn.execute("select*from bbs order by id desc")
: z! t& u' e: H. }0 l: Kdo while not showbbs.eof : }8 f) w+ a; w' c8 v
%> ) u7 h6 {5 z6 c% N7 V+ Y0 Y
<div align="center">
: `. \* X: f! M0 T, ]; V<center>
& z& c3 F! z8 C* ~4 o<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
- w, [5 D) k0 ^1 a4 ^$ b<tr>
6 O; ~7 U3 B( j$ U4 A! x/ b<td width="17%"><%=showbbs("name")%> </td>
8 g" I- X3 p3 W2 n. g; E$ B( t& D<td width="83%">
8 O8 z# y5 F" s  z% Z/ e7 e( ]$ d<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> " J- a- q8 }6 A  F  I8 w& S
</tr>
$ u( z% ]% y8 Z- s7 r3 y</table> 9 ~* }3 h$ U. s  T4 Y
</center> ; Y) n8 g' I/ W9 h. P/ f! u
</div><hr size="1">
$ `; X* ?8 X* u1 r" G) h<%i=i+1 " {3 V  l5 c, s
if i>50 then exit do
/ m; o  c2 V: C5 t' eshowbbs.movenext
1 g9 {$ B: n: P) F4 K4 I" o. NLoop + h/ l" b- t, |# w
showbbs.Close 6 {( A+ f6 F8 t& k& C$ t
set showbbs=nothing 5 {5 I: a! m; M2 v
%> - b& B7 H5 q+ \- Z  z. p, H
8 W- R9 {  q: t  z
这个文件就不一句一句的讲了 2 q+ _# V+ Q  `: r# i
主要讲精华部分: - H, x/ c9 _) g; R
set showbbs=conn.execute("select*from bbs order by id desc") 8 ^$ E) ^& @. U# ^
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, + u+ }$ _$ w! b5 `3 G
还有这么一句:<%=showbbs("name")%>
3 y6 I4 n  [0 f就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs % _0 H6 ]' h7 m
代码中的i=1和i=i+1 ( f( g* E0 x! X0 I9 G0 n
if i>50 then exit do * z5 Y: `2 I6 Z" B: a4 [1 T3 R
showbbs.movenext * q: X3 k# K; m5 r' Q# g
Loop
2 ?. n. J" r; Y' h. @  t# c  |showbbs.Close
" x- _3 J- _7 bset showbbs=nothing
5 C6 u  Z, _1 P
# J5 a# L/ {$ C; I4 W0 o+ [; V  e这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 2 U) ?5 t6 J, M# e+ G5 D
if i>50 then exit do中的50可以修改 % V, F% p5 X2 D3 B" ^, u3 P" a$ t( l! N
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 , a# U& F& y8 `9 f
还有一句很有用的: , h4 Z2 r# A/ t$ Y
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ( n0 e8 r" M4 f, U* E
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
( z* v% z3 \. o! H9 Z等一下在show.asp文件中就有用了 2 s4 T! Z; P& y

6 }! q( s, @- w. X' k/ S5、show.asp 1 f1 h% `! O8 `  d9 B; o, O
源代码: $ i" P, d5 c( X2 y7 N7 k

$ `: _" g. x0 V  Z7 H. y9 F6 ~<!--#include file="conn.asp"--> 1 D& A0 l2 l4 V7 _0 M3 q
<%id=request.querystring("id")%>
' I! ^" Y; V* c. T<%set show=conn.execute("select*from bbs where id="&id&"")%>
& e& k" e: L3 L5 G6 [<a href="index.asp">
, k  A5 R) e+ V6 d# E8 @4 P# \2 |$ K8 q<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 B  w' b7 \) S& N  m% Z: T% v" ]<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 0 x2 h+ P" n5 Z, l. Y. B2 W& W+ i
<tr> 8 H& I" G5 @5 N9 B; |& M8 T6 Y
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
, K2 m& w4 c0 A<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> & J  w( y. \3 Y7 P5 u6 P, U
</tr> & n  ^1 ~' d# H
<tr> : N2 _' ~# e+ h4 E# |
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
1 y: W: @9 \8 ^% N- w$ Y</tr>
5 A% M. ]0 Z7 {& n, J</table><%set show=nothing%> " z2 }# L: v1 I$ G
1 L6 S& S! j4 g) S" I2 y
劲语句---精华语句: & z/ S& S' P) k4 Z$ q+ U
id=request.querystring("id")
* X. |- {' \( I5 }7 o  Z在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
* n# A1 @- g% S9 J/ d$ ]7 k0 }id=request.querystring("id")就是把地址栏中的id的值读取下来,
( N6 r! @4 U2 }% K5 \因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 0 b/ y' V  j" `" A. @. V
所以show.asp使用id=request.querystring("id")语句把数字读取下来 ! A) S3 e  {2 ^! ^, ?: {- f$ x
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") 7 _8 \' \+ w8 ?8 W6 ?7 Q% ?5 X1 b
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
% ~8 M4 X; W) E; Z( _: l9 C+ ], u3 c* j最后<%set show=nothing%>
% e: o5 N% H, r  U. _9 o; o: _5 d  _+ `
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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