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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
' O; r. t# e2 W' E. j+ Q' f% [真NB..佩服ing .....
4 N4 i/ u; x4 c8 f9 k# S2 c+ T大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
% a2 I% l* l& B( F+ L& K7 q0 |+ a4 T* O% U" L
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 5 X; A$ q! Y; A  `/ E. a- s

1 N/ \2 U/ C, Q7 X/ }3 |一、建立文件! , ~! a2 }6 O0 P% e$ b9 }
最简单的论坛也要有几个必要的文件,就是:
+ }  K7 Y& }/ F+ U8 E
3 F) {1 l( E2 e- k1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
% |1 {- T+ z. F6 `. [1 M/ x3 k
: ?: i; S. {+ q% y$ s$ h2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
) U0 d! e  o4 R/ t% Z8 w& M7 I3 X% e: M9 T" t# `7 |
3、发表帖子的文件----命名为:say.asp , m2 X& U" B" ^4 [& e/ K
' ~8 C9 O2 M( ?% z& O( E0 X% [2 c
4、保存发表帖子内容的文件-----命名为:save.asp
* Q' S" [4 [  K( X( ^! f7 i& W+ W/ i$ b! b/ X" y5 @
5、显示帖子标题的文件------命名为:index.asp + o, j7 q" G; v7 j  q& Q
4 U3 H* C. ^1 C
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp $ K/ \3 I% q4 W* w# B* b

# m9 l+ U% J9 K$ w+ E, K建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
2 u: T- `% a: r' C0 D# m. {3 F8 |! J/ T& l* J( E
二、各文件的主要内容
1 ^' M" H) f" Q- W7 q) c: p, A- U1 Q" v4 Q) T1 c) v' |
1、bbs.mdb
0 A6 m' |+ p% w" R) T7 W8 d! N; H7 `& ~2 }; e6 v/ }, F
打开这个数据库,建立一个表,命名为bbs 5 z& R) d) @  N* s& z" k* t3 b; Y

; A/ j, h# @/ F1 N* l该表中有几个字段: ( w8 K3 b5 u5 s4 z9 ^$ ~/ n  E
% {4 d  T) N5 X$ Q9 s0 E( a
id(自动给帖子编号),他的数据类型设为“自动编号”
1 ?; H2 g$ G, Z" B- @, r
( d2 A# s) k, `( e. [* Rname(用来储存发表的作者),数据类型为“文本” % I% W, e) P9 O2 q

4 S, S% w( g# z. ctitle(用来储存帖子的主题),数据类型为“文本” 0 _  x6 R  K" s8 {% Q. U9 S
2 E2 s' a5 ~8 r& u# X
body(用来储存帖子的内容),数据类型为“备注” % P2 Z& [; Y2 E9 k
9 t7 Z' K; T4 Y4 Z! `1 Q% S
2、conn.asp
- Y! T9 l0 N6 Z$ F- O' K源代码为: # P7 r2 ?" C# R, D: d  R
<% . f/ z" j2 n% d* r% q! b6 c
Server.scriptTimeout="10"
( w  U3 i! D4 k$ wc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
# Y$ m, _4 y' Q0 A5 rset conn=Server.CreateObject("ADODB.connection") , y& W7 P1 z9 r# Z3 O5 o
conn.open connstr $ a% C: Q; P$ o- g; Z
%>
, Y9 G5 a! S/ s+ c! o! V- S+ N! C* G+ F/ r5 W* B2 c2 D' [2 I, O
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
1 U  |) o) [1 Y
2 g2 @. n. X* Q! W# m3、say.asp
4 T' V/ _$ v' K& x! V& ]% ]. B8 v/ i# z- L! x5 P' O* A
源代码为: . B" @. B0 \8 Q- \; }* P
<form method="POST" action="save.asp">
: F, W- y7 V6 y8 ~% k" i<p>大名:<input type="text" name="name" size="20"></p> $ m2 u$ d5 u) K
<p>标题:<input type="text" name="title" size="91"></p> . e  V' Q+ W2 O8 z) I
<p>内容:</p>
! v+ X* N7 U$ b3 f7 _. l<p><textarea rows="11" name="body" cols="97"></textarea></p> / i# |! B# W; }3 b
<p> </p>
- O) ~3 @  ]0 [<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ( b$ |* p. Q, ?' q* D
</form>
( I* V8 T) a( r0 R大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 $ e9 i$ V5 U4 g
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
% f% R" W! |! N$ o. Y8 A4 e: q- O1 |' I( J4 \. ?3 y9 i
4、save.asp ' S, ?" N5 u1 t+ C% f+ g- P

& [5 \: @0 U, y7 t+ d5 W5 [源代码:
1 ^7 v9 g' J( R4 J! k6 \<!--#include file="conn.asp"--> + Y( t3 t6 s# J- \3 V
<%name=Replace(Request.Form("name"),"'","''") ' ?  |- M7 E. @" D' p% R
title=Replace(Request.Form("title"),"'","''")
4 x  a% Q9 U$ ~body=Replace(Request.Form("body"),"'","''") - P0 b; K. _. [4 X; }5 U% L
%> : z0 \  e0 z, l8 B% V+ N, L
<%if name="" or title="" or body="" then%>
% ]8 b* G5 B! N0 u: n- o8 z请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
0 S' {* c  T% A<%else%>
, Q) ?; r' S9 [  y! Q) ?8 E<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
; L: {0 S5 {0 n1 H, H发表成功!<a href="index.asp">查看帖子</a>
0 @& Y8 g1 ?& k  L" t7 n  x. _<%end if
2 [& G8 n* J# A" M. _; Iset savebbs=nothing 4 k% _7 s# q- q  x) {
%>
/ Q6 [, h! F! l2 Q7 U$ p! Q( [$ K" ^0 C9 @# \. L# Y
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 4 O' h% T0 A+ T
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, % q& ]7 Y( q  M) u6 X- {, W
接下来几句: 9 F1 i  E6 b4 o# i5 E
name=Replace(Request.Form("name"),"'","''")
5 O7 k  \3 @. q" |7 xtitle=Replace(Request.Form("title"),"'","''") 9 @1 L3 [* T) x$ ^" [
body=Replace(Request.Form("body"),"'","''")
7 Z! g# Z+ ^0 H9 E6 H# J7 K/ {' I; A
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ' n# ?) ]# H% N
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, $ V* t2 E2 Z# n$ R# u. R
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 6 l9 L% [8 L& j
就是把表单中名为name的文本框发来的数据储存在abc123变量中 4 ~6 H5 `4 E2 W# P
" }! c8 E. s! N) k& o7 H
接着:if name="" or title="" or body="" then
( r- c; K# b8 a" h% h+ g判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: , S" V$ d& R) g3 i* L6 L
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ' A, ]: d( i4 a3 N" T8 _
该语句属于html语法,大家都看得懂的!   p8 ]/ v" V7 \2 v# U# i7 Y

2 ?, c. Y' f8 k"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
3 b; \+ K' e4 Y4 {5 S! }“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> : j+ \5 b0 y1 f/ Y0 }) ]9 [
发表成功!<a href="index.asp">查看帖子</a>” 7 d4 t0 K8 {& x9 v% s/ n

0 _4 x5 J$ N7 l- ^6 v"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
/ F% R; o5 h, M3 g5 T% O* x) c' xinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 8 [- A, F1 E6 V& N; h* \6 o0 {
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
) ]$ |+ y* B* n+ [' G0 Lvalues是“值”的意思
# g9 a( F) ]; ]' r5 I# T- d/ {就是插入向量name,title,body,向量用格式'"&name&"'表示
4 w" S' X8 g  M" {7 X4 S3 I# j: _- n2 k7 L
最后:end if就是结束if……then
, r1 ?- }8 w0 m/ R, Xset savebbs=nothing可以说是关闭掉: + P6 f& P5 h7 k+ [" b: P
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") : F! m5 E; U2 v6 S. @( [

! v7 V( m8 E# ]: X
" Z& \- Z8 {8 h5、index.asp
! A1 k) T# A6 h2 W: k4 F* r- U2 e源代码:
7 w; x5 N! m" |. Q5 G<!--#include file="conn.asp"-->
- D& I; x7 I( j4 }<b><a href="say.asp">发表帖子</a></b><br><br>
$ T* v( l( c+ Z2 r  C' E0 s<div align="center">
" v) [7 H- l6 r. J' G4 i/ Y/ w2 v/ ?<center>
. E9 T" K+ {5 B& [8 x9 Y<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> # v. M4 W2 R. U8 r( C. y
<tr>
6 U0 ?$ X, p0 _' }7 c$ i" A<td width="17%"><b>作者</b></td>
3 r' l. P, W2 }<td width="83%"><b>主题</b></td>
4 M+ U( f, ~) k1 Q+ m/ [3 Q</tr> " y4 V1 R% a8 w/ z2 K& }
</table> 2 l0 e4 ]! G, P* k% b' v* D: l
</center>
0 n( }1 D! E( Z  V, P</div><hr size="1">
$ E0 ?+ X* P( i, o1 ]9 T% ~+ M! n' n<%i=1
; J1 N% A- U; fset showbbs=conn.execute("select*from bbs order by id desc")
& k" s( Z0 n; W1 r9 ?do while not showbbs.eof
% J+ z! g8 E2 w0 \- P%>
7 ~. v; W/ C/ g; U* U5 x5 v<div align="center"> : j7 O. t: {. |0 Y! U- d5 B# t/ D# C
<center>
, T. l  n1 I# A2 W9 `+ P; W* l<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> % [8 i( s- f5 C8 _
<tr>
/ {5 o  q/ L- H<td width="17%"><%=showbbs("name")%> </td>
8 L+ W$ y/ a! B: a0 q+ ^3 Z0 I<td width="83%"> 3 F+ |2 y$ V2 |! W1 h$ N
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> - _  ], z7 G" U% o' _; k+ l
</tr>
+ m2 B6 i9 A5 E* l3 ]</table>
& h3 B- p2 j9 r! }  W</center> / N5 Z0 g/ b6 z, X1 D
</div><hr size="1">
: R1 J% D. t8 V% q  V<%i=i+1 ( |% L  X4 e9 a7 ?' C2 q, a+ ^6 X
if i>50 then exit do
" _' O. ]) f& g6 Fshowbbs.movenext 1 t7 [2 f) k6 \6 i
Loop
1 s- V- m7 [$ ]showbbs.Close
8 g+ @3 t7 {( @# Eset showbbs=nothing
4 k2 b- Q% f4 ]4 P3 x, y4 h0 `%> 1 z4 _2 E5 J1 x- C+ j$ d0 Z
$ C) I- W0 |5 l! c: ?2 U0 W
这个文件就不一句一句的讲了 - P, k2 ~4 q9 T0 b' }' ^+ S
主要讲精华部分:
' a% W  ^  j& e2 T2 D# `set showbbs=conn.execute("select*from bbs order by id desc") 7 a$ Y) r7 z) x
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, ( ?) J0 o6 [! z8 S2 F. b
还有这么一句:<%=showbbs("name")%> " f5 X. B! [# Y9 o' ]4 @6 R5 G# k0 G3 d3 K/ y
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
) ~" i' G8 G0 m1 e5 v# @代码中的i=1和i=i+1
7 n; O9 E7 p& h4 t% |# kif i>50 then exit do 9 r% \' y4 C4 U9 D9 R5 @8 y
showbbs.movenext : d, _- t" x* j# x( Z' {
Loop
6 D" y$ c4 p+ x: Z9 C* [showbbs.Close
0 q+ a$ a4 `" n; v! U0 mset showbbs=nothing
. L2 D0 T& o( K6 R5 B: v
- Y9 S# R, s* T8 w' }( q这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
6 ^7 b8 r0 h, U1 rif i>50 then exit do中的50可以修改 * i: Z* h) q5 Y9 z! H
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 , E6 A* z# s$ B/ H
还有一句很有用的:
3 Q% @% L% P- j; y( X5 m+ y<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ) E2 ~. S7 ]7 C4 V
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
, f: D7 L8 O$ t1 X等一下在show.asp文件中就有用了 ' {8 ]( @7 b, `8 d6 r! [
- y! A2 V7 w. b: D( F" D- p1 M
5、show.asp
  J: m2 g6 V6 Q" i- r源代码: : [5 k* S5 t' k. x

. R9 J2 u% y8 o% ~1 z<!--#include file="conn.asp"-->
' ^: P' f/ ?: b- Y3 ]! ?<%id=request.querystring("id")%> 7 {( `9 B3 ^7 w* z
<%set show=conn.execute("select*from bbs where id="&id&"")%> - e& C1 l: J" y' L8 O# ]
<a href="index.asp">
* b/ x4 x6 x* ?8 N& s! z<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
  z4 o- Y7 l4 K4 \" Y<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> % {/ T: L1 G% c
<tr>
4 f, G$ s& y+ B# ^) m" c) Q<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> + E9 N  M7 z) `& {6 z" R
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
- [' C: A% |  Q4 F: D* F</tr> - C& K6 k6 \* ?: f9 C
<tr>
( a: x5 \# U) v  a- U" l' R<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
" X; F) p' R( Y! t! z- C</tr> , p) _5 D* |& j
</table><%set show=nothing%> 1 W. a9 X" z5 X) E
& R. O# y, x- O
劲语句---精华语句:
) I3 C6 d0 k2 Y" T) ^id=request.querystring("id") & G9 [+ N3 T, o5 M3 a# o! B
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
  M& f1 y  g2 n) D/ P! L& i/ d5 Bid=request.querystring("id")就是把地址栏中的id的值读取下来,
* j5 Q6 ?+ G2 D4 X3 e) K* J& }因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ) \$ V! X  a+ P
所以show.asp使用id=request.querystring("id")语句把数字读取下来
% a) p! }5 N/ q4 a$ F* t/ u, F9 L于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") " {+ g' m+ C8 ^  i6 W
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
1 J8 `. q, U1 H/ E最后<%set show=nothing%>
  Q4 ^  t7 R, Q. k
7 ~, R: U" D: k4 c* b. Z7 o/ [好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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