返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西/ _8 R3 b! ~$ a
真NB..佩服ing .....
& H6 Q0 [+ e9 \# H# I+ d! b6 F大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。  o. ]) J8 q9 m1 H' V
" s6 g" H; C3 Z) S) S  J: P# ?
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
4 J8 g( m! ~+ O8 c( ]1 ~& B" e3 p( M0 S  K9 A6 v$ w
一、建立文件!
: L) ^* {. }# d: u; s% u  k6 j最简单的论坛也要有几个必要的文件,就是: , |# L2 C' @  b( P

4 z! u4 i- z/ F4 C" k; m. j7 W1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ) `. H; ]  q5 n1 m/ h
: M1 L& j4 N7 x' t, o2 e. a" h
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 4 U2 r% U; y' Q; R8 p/ n  `# E
8 \0 E! }$ ?$ s2 D9 b1 }
3、发表帖子的文件----命名为:say.asp
4 f' \& t4 J: j" C7 w( R6 H9 r! e0 S* `! p
4、保存发表帖子内容的文件-----命名为:save.asp , M2 d) f2 J' v( z7 [

+ J4 }/ H5 z/ {: x5、显示帖子标题的文件------命名为:index.asp : E+ S- Z# T  h3 O3 U
9 h+ Z( p& p, h- a: Q! w
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp / D! D$ {: O: m3 z* g0 L! y
; c5 P3 i! ~" l: A' p' y; r
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
' }% `$ P1 I$ O, t7 l; B1 Y8 a$ R. D/ Y
二、各文件的主要内容
# T9 _2 {. E7 K" Y
: m! e/ F2 ^0 t3 z( V5 D, D% h2 r1、bbs.mdb
6 [6 L/ ~. z6 F
" c" `2 @( M# V! r打开这个数据库,建立一个表,命名为bbs # M8 H9 ~3 r/ G  j2 G$ b. H0 V

  V2 `; @: S, l1 l7 @9 X该表中有几个字段: 9 F/ D0 `6 M  E) x- F

) G/ h1 D3 n! R5 Q6 Y" R+ Fid(自动给帖子编号),他的数据类型设为“自动编号”
9 H5 }" C% a! O. q# Q3 w3 S& `
0 B( b& ~! i& s8 q  U  T" V- ^name(用来储存发表的作者),数据类型为“文本” * x8 H$ x& W. Q; [' H( l3 P; {
: w8 W3 u3 p& ^1 `
title(用来储存帖子的主题),数据类型为“文本” 8 ?" C) W: s! Y& ]. w
# x# d# u( n. S# C9 _, N4 n
body(用来储存帖子的内容),数据类型为“备注”
0 |% J3 a' c2 q
& v# m2 N# f' F2、conn.asp $ f& v- d$ _: q6 L: ]
源代码为: 7 e; H0 ~, ?3 l
<%
. L; Z* b, B5 y: K! h) n5 Z. I5 uServer.scriptTimeout="10" / t5 s4 W' h/ ?/ {: f- s# [4 M
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" # }/ E, j( j, n/ M
set conn=Server.CreateObject("ADODB.connection") 9 h4 }7 |9 x( [' H7 }
conn.open connstr 4 D& A: P5 N! N7 ^: s4 g
%> ' q: u3 ^( @% h% ]2 y

7 [2 g8 Y0 W( h6 a: l2 F2 ^  `这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
: o7 c0 d8 e. t! @8 _( f6 q. T
; H3 \# p8 y$ ]5 c1 \3、say.asp
% F- }! [% Q  D+ T8 T
, Q1 _9 ^7 M4 S/ B源代码为: % I0 y& O0 s5 C) P
<form method="POST" action="save.asp">
4 }# {- [3 o0 X% O+ c<p>大名:<input type="text" name="name" size="20"></p>
7 ]/ ?) ^1 V. v2 O<p>标题:<input type="text" name="title" size="91"></p> 8 m$ K0 O! _- p' x. G6 k0 m  y
<p>内容:</p>
& K+ x4 x, x! @<p><textarea rows="11" name="body" cols="97"></textarea></p>
5 L8 a2 k% h" G; B<p> </p> + J& R# A  y2 \( a: B8 X7 G# ~
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 0 r; u, J( i; f" b$ R' I9 b
</form> ) [9 M4 t- |2 R% C% T2 s
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 5 S* K& a5 p1 e
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
2 @' m  I' t& N, Q  g$ L1 L( w7 D* A7 g7 a) N
4、save.asp 3 V$ ~$ Z7 Y) P" u  V' r* B2 C5 o

+ O6 A# _% T4 M% v源代码: 4 X: @/ E- B" f: D. T! T
<!--#include file="conn.asp"--> , W  N6 x( r4 n  b8 P1 V
<%name=Replace(Request.Form("name"),"'","''")
; A+ D$ H) n0 A1 y- r6 ?title=Replace(Request.Form("title"),"'","''") & Q7 l3 o. Y9 \& t/ ~- U  G
body=Replace(Request.Form("body"),"'","''")
. E2 |+ ?  r! `+ V- J* s2 f%>
" H8 @4 c  `1 _6 j* h<%if name="" or title="" or body="" then%> 9 l! j8 @5 Y  l" L
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
" t# P  f- Y& [/ \) g& @<%else%> * T  |0 r( `& x8 i1 }& |3 J$ r
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> " e8 c3 F. X+ H" t
发表成功!<a href="index.asp">查看帖子</a>
: u3 ?% _7 ^* G( h. O( k<%end if
1 _9 k* i- |, f+ I: @& Oset savebbs=nothing 1 g5 J) V: V' P0 g
%>
2 o& w4 c: T$ A- m9 ?6 J$ q: H$ b9 p6 `- E2 {
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
; J, m- f& h: r, u  I, Aasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
8 `* B' Q- ~! E, `接下来几句:
: X2 W" v; ^; v' ~" |" i, {" a- ]0 @7 gname=Replace(Request.Form("name"),"'","''")
" N4 U* k- v" L) `- y% Ptitle=Replace(Request.Form("title"),"'","''")
7 _: t- B8 Z* C2 p: Sbody=Replace(Request.Form("body"),"'","''") , q) D/ F1 Q2 L; e; m; a7 q
) ~6 ?" c; W0 F
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
+ [0 k8 z7 f4 H/ Q" Z& b而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 7 v; Z5 h; B& {
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
8 b1 X. M$ Z; j1 K就是把表单中名为name的文本框发来的数据储存在abc123变量中
6 L/ d; E$ Z  m. ^- l& _( A& `3 R/ F4 M* V8 B7 k+ f& _2 D# k6 i
接着:if name="" or title="" or body="" then " k6 X, Y! [$ c9 Z& p9 b
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
, e" r- {3 U+ |“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 5 P% a, E% m( l+ m6 d* y2 O
该语句属于html语法,大家都看得懂的! * V: e% v, }7 w

# _. C4 D* q; c! ^/ K/ [9 z"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:   N( m0 I1 r5 @8 J+ k
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> , M- j$ ^" X" |6 L% v4 N, [
发表成功!<a href="index.asp">查看帖子</a>”
5 \' Q. x4 @5 C% v
, e4 h: e( F/ t2 ]9 b* @2 c4 @"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:   R1 l4 {! g; B) c
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
+ ~% k  d# w0 G+ s  |中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
1 w1 @  I* c1 P( a  N3 ]  tvalues是“值”的意思
0 n9 j) j. B. G3 P9 j就是插入向量name,title,body,向量用格式'"&name&"'表示 ( X8 u$ K  p# b7 P; t

4 i$ ^/ D* C  F9 {  j. z2 D最后:end if就是结束if……then
* P2 p" ], N: b6 b3 F- q, lset savebbs=nothing可以说是关闭掉: 4 h7 ?# n: Y' w( W! ^  A7 j# m
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
2 }& v! N9 _$ r4 W/ `; J7 V
0 g+ a3 n# n0 o% {
2 i2 Y+ [  O) u- Y/ s: n- P+ g4 q5、index.asp * \; M) p. W9 k( ?1 k* Z6 H& d0 s
源代码:
. V! Z1 e# `, K/ {4 u<!--#include file="conn.asp"-->
7 V7 I- q! R, z. p! ~  `% Q<b><a href="say.asp">发表帖子</a></b><br><br>
+ o% \+ w4 p5 O; f4 p1 y9 x5 ~<div align="center"> $ g/ V" A, s* ~0 m. i) Z6 {
<center>
$ _% o* \/ d: a/ ?+ ~3 r7 G% z8 C<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
% x9 E* h5 H3 h4 Q! K<tr>
1 Q" |  E3 W. i9 o! e( s$ q<td width="17%"><b>作者</b></td>
" I3 y* P5 h! a<td width="83%"><b>主题</b></td>
! ~" P- a! ]! s7 ?</tr> ) E* t$ s& W9 z# j& L5 r
</table> 9 P. m% X; Z- h6 I
</center>
2 A0 u# E. g6 `$ M; ^: a3 o% d/ o</div><hr size="1">
9 o% i2 J1 a' P8 y" V3 f<%i=1 2 n! L5 @. M" K
set showbbs=conn.execute("select*from bbs order by id desc")
7 R! [" m) d+ Udo while not showbbs.eof 5 \2 r6 N4 L0 v, K
%>
" E- z6 H" r# e  e+ t<div align="center"> 8 q2 j# e$ {( r0 W; k3 t
<center>
7 D/ v. y0 u$ K1 U# V) S( v<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">   i0 _" V$ M2 K- P
<tr> : e4 r2 _9 P( L7 d! `( \1 |* w7 [
<td width="17%"><%=showbbs("name")%> </td>
% V$ O. X$ n; m<td width="83%">
# K* T$ j2 Z, y, f<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 3 J9 l: h& N- b; v4 Q% n
</tr> % w0 t3 k8 n0 _# W
</table> 5 D, J+ u- e: ~' x, m
</center> ! K: Y! ]6 b+ f9 c% W+ G4 ~5 Z* o
</div><hr size="1"> % I" M  ^& L! B. m" [4 n; }" D
<%i=i+1
: H( ?' W4 T" Eif i>50 then exit do ! E0 z9 t' V" \  h
showbbs.movenext
+ R$ e: @* A# W" vLoop , Y+ u0 l% C- Q( B7 e( a6 M, s. s/ D
showbbs.Close
! h; }6 w' @# _4 `& xset showbbs=nothing : {. a) \0 Z+ |0 ?
%>
0 j$ r. e: {5 c$ u  t
3 i. I/ `% w# o: \1 v这个文件就不一句一句的讲了 + A! k0 }! L; @
主要讲精华部分: # O0 o1 f5 E- N  l+ Z7 k# b7 X& e
set showbbs=conn.execute("select*from bbs order by id desc") ' u# b5 k. e( c! U& U3 _
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
, v: S5 g+ P. o# Z还有这么一句:<%=showbbs("name")%>
  J9 x+ M* X: p就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
: s  N5 F! f7 V( x: _7 E代码中的i=1和i=i+1 , t$ }4 B* q! `* c7 U4 a
if i>50 then exit do
( g% N0 m  @8 a/ s3 u8 `" I/ i( oshowbbs.movenext $ M* X8 P/ g! C+ ^5 S
Loop 0 a( _: X" Z. m! R5 d0 X$ n; K
showbbs.Close , c+ A* r3 ^; G2 G+ j
set showbbs=nothing % s' b  Z7 F; D: o( E
9 E% o/ r' V7 V
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 9 S' v! V" m7 Z4 ~
if i>50 then exit do中的50可以修改 1 f0 H8 l/ y! z5 R) F& K. {
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
2 Q5 M* U7 W$ q( m* M  X9 T/ i还有一句很有用的: ) c* G* w& n- [$ l
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> * j! C! z) P/ Q
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ! S- q( j5 M5 Q. b3 ~2 U# ~# Q
等一下在show.asp文件中就有用了
9 U( B( _: O3 I# |0 r# m( Z  ?& L. j( T* H. b
5、show.asp : |7 _7 o" p+ x0 F- H
源代码:
% }. f& |9 d( b4 e/ ^: c- ]6 Y* F9 {1 t% J9 s5 Y: M) A
<!--#include file="conn.asp"--> 5 C5 _: R7 J" g. Z5 K5 D+ |
<%id=request.querystring("id")%> 9 g3 p& `7 Q4 e/ \' o6 j
<%set show=conn.execute("select*from bbs where id="&id&"")%>
) L" V, M# {3 a% d2 ?<a href="index.asp"> ; Z8 S! ^: ^% R3 _* R
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> + F( @* c+ q7 I# P$ c
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 7 D* z* [& s1 t2 ^6 R- s/ X
<tr> # V. |; f$ z' g" b- }
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> : c% M& y4 i% N6 W% S8 d
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> ; f" I4 l# ^8 ~. @0 X
</tr>
! E" ~( @) t2 H  p<tr> 7 X% y. r* }: k6 w. R3 E
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
5 V8 o$ E6 W" |2 R+ o</tr> * b; D% s& x1 |1 S2 o
</table><%set show=nothing%>
4 F& z  K) }+ O3 E3 x# K7 g/ g( T) a! P! b/ J- B
劲语句---精华语句: 2 x& n6 a! A1 |! V6 h8 H
id=request.querystring("id")   O% w$ v5 a7 h* D! G; U/ @/ Y3 H
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 0 S. e. p0 l' L; H8 }
id=request.querystring("id")就是把地址栏中的id的值读取下来, 5 b, u+ E6 O1 ^* {5 J' j$ b
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
0 n9 o, N: }6 \( @/ P. c9 O所以show.asp使用id=request.querystring("id")语句把数字读取下来   \0 j+ u; ?6 `# O3 m2 d7 k
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") : ]5 A' A5 _# v
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" $ D5 T" H1 @! T- P0 u. q3 e
最后<%set show=nothing%> ' w5 O$ {6 H+ j& O+ \/ h& ^

, g% W7 `" K5 @1 i7 D' g好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

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