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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
# J* e) `. E- r; A) i1 L  q$ r真NB..佩服ing .....4 ]5 D& t3 m5 C* p3 i' C" ^
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
7 `  E: l- w6 j' y3 F5 k
% ^: P) @7 p/ P同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
+ X% w: ?5 u3 f0 i( _3 h, @
; j) |& P- G' q5 R一、建立文件!
: r! P1 G1 W( {& B' w% s最简单的论坛也要有几个必要的文件,就是: 4 M: t0 N2 x5 y4 N! y
% P9 l  B2 Z5 [4 ~0 I1 \. x
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
* ^) y: k/ t' n+ G" z) {5 M7 w: u1 v. m& D+ m: C, {! |+ q5 u, h
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
  E) P; e4 j9 W% `. }" Q) x/ W2 `5 V; O$ G7 u& K7 V$ Y. w) R
3、发表帖子的文件----命名为:say.asp 8 X+ a9 G& |5 |1 Y) R+ E
+ F  D, M, i6 ^& o, h
4、保存发表帖子内容的文件-----命名为:save.asp 5 L5 ~+ G$ ^" f4 m1 ?
2 e- |- m- p0 [2 o5 m. ~
5、显示帖子标题的文件------命名为:index.asp
& q, U" \+ N) p6 f/ [4 _2 Z3 L" l$ b8 P# d) }' x, e
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
# h: j( b! b; J( _; T3 S7 J  S/ Y! Z0 d& Z6 n9 r( L4 f
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
0 ?, Z6 Z! m  O/ @+ C. v! `- v7 G0 p- s
6 w9 }3 p3 n) f3 Z8 e" ^# |二、各文件的主要内容 ' o; r) A! C! t( H8 k* @

8 [+ |1 p! ?- v* I: m7 A4 G1、bbs.mdb
! @! a2 K; f1 E# D# i* p3 o* B: V" V) [8 q2 }% A" D5 E
打开这个数据库,建立一个表,命名为bbs : i( ^0 Q: W8 \, e2 G0 T
1 }! ], j2 n+ ^- E5 t8 t5 \
该表中有几个字段: 8 {3 h% N8 D4 g" t  O" `
3 ]; P9 b7 J# s* n) Y
id(自动给帖子编号),他的数据类型设为“自动编号” ' Y7 S- Q0 o% P) j

+ p( \2 w7 E3 J0 Fname(用来储存发表的作者),数据类型为“文本” 0 w5 T/ ]0 Q* Q! W& L5 N8 @
, c, t/ p$ M1 D# e7 t
title(用来储存帖子的主题),数据类型为“文本”
( _6 }5 T& G; o! m' k% h) t
7 N  u3 A4 W. w  ^4 Nbody(用来储存帖子的内容),数据类型为“备注” ) J: ]8 I  n# W) G9 D/ O

5 Z4 g- ~! Q3 W2、conn.asp % z) T/ j& O+ n4 p6 |
源代码为: 4 k' G5 e' v# ^9 o' A4 d
<%
+ \( r; [) w! E1 T( u7 sServer.scriptTimeout="10"
6 c, d0 c! v- _' ~* T" Pc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
6 e  v( N' ?9 q7 kset conn=Server.CreateObject("ADODB.connection")
; Y) F5 x$ ]. U  tconn.open connstr ) J& h) s# Q% S# a$ V
%>
: r6 a5 |' P! P4 B2 J
/ I' ?7 ], x5 t9 ~这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
& R8 L6 u* r% @' h, W' i9 M# E( g' w2 B# T# V- j
3、say.asp # S. x3 ^9 q8 I7 w2 i5 A  H- J

& S0 G4 T1 a8 u' V1 v* W( Z源代码为: & a2 `' T' `( a2 V3 W  [# Q: u- J
<form method="POST" action="save.asp"> / m) E$ W" w6 u0 S, S
<p>大名:<input type="text" name="name" size="20"></p>
' ]" n; l' X0 b/ S7 L+ v<p>标题:<input type="text" name="title" size="91"></p> % S. Z: q/ y  V3 u# n7 _) E
<p>内容:</p>
9 C# A# ]- C+ i( y+ l. C4 [<p><textarea rows="11" name="body" cols="97"></textarea></p> " K* U0 b& b9 D4 ^' c8 T: Y& N
<p> </p> 1 ?" I: r/ ]" m- R; F
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 2 ~- x  h( f5 q+ r$ ~+ l# u: ^
</form>
2 D# Z6 X2 y* X大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
9 d5 L" z( @" o7 B# R0 L. s不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
! ^: z2 p* E! Q9 }
7 h0 }4 I3 s  ?7 B& o9 `4、save.asp 3 A; M# S6 o! \+ w% `; i+ H
' {+ j6 c# @$ o( y( B# I6 k
源代码: " v' a: [; k& g2 z
<!--#include file="conn.asp"-->
0 q' T- ?* v# ^- n5 R8 Z7 q1 Y" `2 v( {<%name=Replace(Request.Form("name"),"'","''") ! N3 k) f4 L* G1 y: N+ J
title=Replace(Request.Form("title"),"'","''") ( l# N1 U3 i4 \9 s. N
body=Replace(Request.Form("body"),"'","''") 2 ?3 D; K. w0 Q1 ~# c
%> 0 e- {6 k2 z8 S. W9 G. j: d
<%if name="" or title="" or body="" then%> ; z1 c! M( [7 Y. t) m
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
* s' R7 B+ Z% C- o3 l+ z7 i; n<%else%>
/ W% J. g* a9 z- F4 t# q<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
% B& Q' i3 m* X3 ]发表成功!<a href="index.asp">查看帖子</a> 1 I3 X3 x% \1 S
<%end if
  \9 e* V* I8 N/ s1 V, U9 M" eset savebbs=nothing
+ W: l. ^3 ~# P+ B, V2 x%>
& ^0 O/ |) s0 N  C
% `. _1 b, l* v# Z0 |; C第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
# S1 v- O+ C7 O9 ]- d7 Wasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
6 P. Z( ^# G" l$ z接下来几句: + z, R' a" {$ r: w1 w
name=Replace(Request.Form("name"),"'","''") # \' U8 C. {" F, S
title=Replace(Request.Form("title"),"'","''")
, ]6 g+ w& N7 `9 C( [' _+ y& abody=Replace(Request.Form("body"),"'","''") . N- K6 S9 i! o$ S2 a7 h& r/ s
. B4 \8 B' f8 j$ ]4 ?+ l
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
/ K# B, t7 |8 ~* A6 }而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 0 \. Z3 X3 X& Y/ E# _4 ]
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” $ K: H* R# ~4 \0 P' W1 R$ A& a
就是把表单中名为name的文本框发来的数据储存在abc123变量中
% V, r2 u5 b* d) R5 n& L3 J- N0 W: b3 C
" O1 L, I3 P( [$ R6 o接着:if name="" or title="" or body="" then ; q# s$ S0 a) \% W' c
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
: S1 ]# Z  L  X0 p, A3 f“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 8 [, x$ |+ Z# F. z# K' V
该语句属于html语法,大家都看得懂的! 1 \7 c5 T# h2 @, o! W: Y  d/ h

2 T2 u! c- D& q- K7 M"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 5 A) E! N- d0 ^1 w1 {
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ' I$ C1 J: A* V( J: S. v
发表成功!<a href="index.asp">查看帖子</a>” $ n' m( O; V' y- u

9 c. q! N. |6 s* x8 h"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
9 q2 O! I$ f( Q- Q' tinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
2 m- y, y$ s7 H' d# r中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
6 x" I9 M  l/ V; w! }values是“值”的意思
8 w" @8 Y5 }! b* a  P" s就是插入向量name,title,body,向量用格式'"&name&"'表示 4 {# C% @& u* j3 {: n! b
2 O' g$ n3 }/ {2 {" n6 i
最后:end if就是结束if……then
1 H4 g  _1 I. z3 Hset savebbs=nothing可以说是关闭掉: 8 z1 ?4 l  I! I5 w
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ( F% U0 @+ B" w5 M4 N
& ~. t' d( q" Q/ Q/ C

( ~" B5 w/ m! ]8 W+ r5、index.asp
  A9 O) c0 |' v& x8 e) l! ~4 x源代码:
' x( Y  T, c9 }<!--#include file="conn.asp"--> " N. ], I, S1 p1 g' {
<b><a href="say.asp">发表帖子</a></b><br><br> 7 M$ g% b8 ?) C/ m0 e6 Y
<div align="center">
  H+ c2 c2 x  y% t<center>
: Z$ h( m, b5 V# s<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> " I# d+ i* X7 E& e+ v
<tr> ( f8 D& ?% N  \
<td width="17%"><b>作者</b></td>
( F! k* h4 x* M3 {! J<td width="83%"><b>主题</b></td> 9 s( {) R. C/ z5 ?+ [2 o1 n
</tr>
/ ?! |3 B; Q* ~6 N! m0 a</table>
2 Z; W% f! C3 f5 k</center> # k: v" m( R$ H+ n- ^5 Z8 L9 [
</div><hr size="1">
% o, m# [* H2 Z<%i=1 1 C" z+ K; Y; ]
set showbbs=conn.execute("select*from bbs order by id desc")
- k4 `8 O# W% Z) u& Ddo while not showbbs.eof
1 Y# k. l" j1 G( `  I* H/ k, Z+ M%>   ~" o* K; t; V! D/ I; ]: A
<div align="center"> 4 I$ t8 Z7 s, D) Q) a( u6 N
<center>
0 z: Q4 Y- t; {# E: [<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
. w. Z7 E5 _* V% ]1 I. i) T/ ^, Y<tr> 7 d# `$ A# J7 \+ o
<td width="17%"><%=showbbs("name")%> </td> 3 J1 w3 I4 l' E
<td width="83%"> + a7 W6 T3 f* f6 K8 Q. i/ G
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 3 L5 j) ?1 q# p( O1 d
</tr>
& s& Z: @; R4 [0 o</table> 2 ?; @9 H8 H3 d
</center>
) V) l) i) J3 ^. O* z& ?$ @: ]</div><hr size="1">
4 I* v6 _7 D  b<%i=i+1
( F1 R" h% I4 A1 p: O8 bif i>50 then exit do
' k$ f& u( m  {! Qshowbbs.movenext
; `8 R6 m4 j/ R) z0 f( B2 jLoop 0 f1 U, Z7 \/ l  ?5 d$ N
showbbs.Close
6 h& P) I) L! o6 N6 H/ Q7 Aset showbbs=nothing
8 R$ q( n# b* Z& @%>
) _# s; e* L0 E5 ^3 d% A% D/ k
这个文件就不一句一句的讲了 0 @% `, l1 u% h1 L& z$ W
主要讲精华部分:
) O! E" G& W- P8 J, k4 Pset showbbs=conn.execute("select*from bbs order by id desc")
2 S, [9 X: A9 L- y意思是:向数据库中的bbs数据表查询数据,并以id排顺序, ( N2 M1 U- }8 O. j
还有这么一句:<%=showbbs("name")%>
( ]8 e# k, d  y  C/ B就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
9 n3 l" ^1 N( O( r2 M+ P  i代码中的i=1和i=i+1
% W( m" w0 A; N5 Pif i>50 then exit do " h2 F" i' f+ ]  P9 W" V
showbbs.movenext 9 ~; l" }' I/ H
Loop
; I2 g1 q/ l- M0 a7 F/ {5 ^  L4 nshowbbs.Close 8 @" c% E  S! A- I3 u, _  s5 X
set showbbs=nothing
$ P6 f- P3 t) _& D' C4 S* ^  f$ R# L, M3 Y3 a- Z4 m
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 7 o% W: i. s  [; R4 A- _% }
if i>50 then exit do中的50可以修改 1 p/ c1 J( u- @& w) L- s/ {% Z- n6 B
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
; p7 A# z% }# m) q' y+ Y7 T% c! x还有一句很有用的:
: B  _' y5 b9 ~& L; v<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
9 f6 i$ S/ T/ |* j4 ]. E, C里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 7 O/ |$ {. B% y
等一下在show.asp文件中就有用了
) A+ q. v! [. ?8 t9 `% f& \* _
1 t  a6 O6 g4 U& ]7 H) X: l5、show.asp - i8 X6 |  j$ N; G: V$ L: ]
源代码:
- E* K: t  }4 _& U0 H! ~$ Y) ^
& O0 J; g' p2 n3 m6 q* ~, ?<!--#include file="conn.asp"-->
0 X) @8 N: Y! o/ c<%id=request.querystring("id")%>
! N0 ?! y5 y4 B, {8 ]! @$ ~<%set show=conn.execute("select*from bbs where id="&id&"")%>
, X$ M2 \$ l2 z( Z6 Z) J<a href="index.asp">
9 k5 h8 u6 P% G! U+ U5 m<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
! T0 H; @% p7 z/ N% H4 n7 O" _5 Y8 N: M/ @<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ; j7 k' a% M2 A! v  ?7 ]
<tr> + h9 z1 N4 Z% k2 f* L" g
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> / X& p1 ]' L) ]% B
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> - D8 U, q9 c, @- {, O) N
</tr> + t; q. R! b+ e; c8 a- l% ]6 c& I
<tr>
& ~8 _5 t1 K: E' f% b- q7 L$ Q<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> . O, h: K3 ~  @8 ^- T" V# ?$ w4 b
</tr> 7 K% ?. g% {5 C; I, q
</table><%set show=nothing%>
3 Y0 C8 x# z' h! o; ?+ L, ?
/ s" I- [6 [( e7 B4 J3 D1 z劲语句---精华语句: ) ?* @2 A) H  c/ C) y  i* G
id=request.querystring("id")
( L: D" }$ t. q$ B' L: S" |在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, % Q) ]; {! |" z/ r
id=request.querystring("id")就是把地址栏中的id的值读取下来, . _. d' Z# R9 K/ H; A( X
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
$ ], W: Q1 ]* Q/ A( ~所以show.asp使用id=request.querystring("id")语句把数字读取下来
$ F" S) Q8 v+ Q  Z7 A于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") : L* B$ s8 m4 E3 |/ |$ _* O6 ~/ [
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 7 R; v% K. D6 m9 w) @
最后<%set show=nothing%> 1 F( A: a! y% y$ v
1 P1 M. P7 W" @2 n& O8 G1 X, r8 i
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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