返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西* x, N2 F$ m1 Y. i
真NB..佩服ing .....
: H, [; l8 |0 U大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
- ]0 j* O/ ~! P8 K, @
; D9 n  {( _+ c- W( V同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 3 p7 s: x' _( g; X/ b1 L
8 m. p+ [# h4 A: s" Z
一、建立文件! $ n' z( }6 B2 Q/ l+ W& G
最简单的论坛也要有几个必要的文件,就是:
0 h* J$ U& w, ]0 O7 Q* A- q1 M" e- _, o. C
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ) [1 e: W) J: B) U5 h5 T
; I$ h- S; e+ F+ _" y  V
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
  o# X3 n' t# _. ^$ D
: i) R6 X7 G* |& K% Z9 T3、发表帖子的文件----命名为:say.asp
* q4 D: p% s* a) e' B+ o0 |
  _% K8 H) U1 l9 @- T: |4、保存发表帖子内容的文件-----命名为:save.asp 7 ]) L4 T8 ]/ r- X: F- [/ b( @7 j
5 Z* [! s( H; G" b
5、显示帖子标题的文件------命名为:index.asp
, R! x7 {/ j* t/ l" A- f, K/ X# x( n2 s. b7 B: T+ V4 g8 w4 ^) @6 u
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
5 N/ m! O' Z' N: x: X# O) D; k
7 _6 c0 L; W, T$ j" k; g/ ~- {建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 5 n3 x' d! c9 q1 |. N& H
, I4 d$ Y9 c- y; _9 a0 F7 w: }
二、各文件的主要内容
* ^/ e; B& P2 p- k, Y, }
* I5 @& O$ c- h$ {1、bbs.mdb
1 R( m% j. I+ _: G- Z+ c! [! H% V8 U- F  S9 g5 _  v4 K
打开这个数据库,建立一个表,命名为bbs 1 w* C% Y3 k/ l5 n9 U
5 n  c# L$ V7 x8 U3 ?
该表中有几个字段: 2 M3 k1 i7 Y5 r: m' g+ u
" i% ?9 i* V, z! g5 ?' r8 b) U/ l8 @
id(自动给帖子编号),他的数据类型设为“自动编号”
7 Q# c& ~. U/ P: w% ~, W# Z# ~4 u6 l: R5 U' S6 m& v
name(用来储存发表的作者),数据类型为“文本”
; U0 s$ ?: r, g7 F4 H, h8 F
- D" |: Z4 l7 F6 z3 a  ctitle(用来储存帖子的主题),数据类型为“文本” 2 `, r  w8 ~: L& M$ N

1 }0 v3 J1 U- d9 E! o$ }body(用来储存帖子的内容),数据类型为“备注”
& U5 V) R: Y& B) Y5 n7 M; Z4 D' o; ]
2、conn.asp ' P7 m* P, m& s- t5 Y  v
源代码为: 7 }$ k# _1 Z" `  N3 s5 |+ @
<%
+ Y0 }- q0 w4 x* A- ZServer.scriptTimeout="10"
# O/ Z3 L! Y1 q) }* U" Pc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
( T8 n8 S4 }, C- Oset conn=Server.CreateObject("ADODB.connection") ' L$ J( q! }* H! `' F
conn.open connstr
( h8 h" k& W% s) y9 N%>
( r+ A2 K# \; R  B! A: a6 W/ M
, g, H& `+ o  x, Z# h) q这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
4 W1 Q8 w' |0 [% m# U3 u( n
0 z6 |& |1 B6 P3、say.asp
, A7 ~- X6 h. G0 y
6 w$ q5 l+ v8 u) m0 D- q源代码为: ) d( Y' Q& Z& h
<form method="POST" action="save.asp">
* K$ a6 ]) C5 t, \2 \- x+ @( `<p>大名:<input type="text" name="name" size="20"></p>
0 v( U  M; [7 Z) J<p>标题:<input type="text" name="title" size="91"></p> - w3 O2 B6 s/ H# V4 |0 S
<p>内容:</p>
2 {2 \7 ^6 m6 j  a<p><textarea rows="11" name="body" cols="97"></textarea></p>
( C, K) i& V& l% Z4 G$ D5 }4 N<p> </p>
" c  Z9 ~7 i) f<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 1 y0 M5 r( j" H
</form>
* i- S3 P& H' n; F5 h大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
' ]; e7 a9 L- `* i8 D; F不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ) K: e! V1 T5 t) F

6 n1 L/ r$ P6 q4、save.asp # C/ L6 Q9 \( \1 o& C2 z* u
( |5 B5 _8 [6 D3 t3 O, J
源代码:
3 \3 P4 r& a# D- y! E. [( I<!--#include file="conn.asp"--> ! J5 X4 J; V; v4 U: {/ U: _5 x/ m
<%name=Replace(Request.Form("name"),"'","''") 7 _1 i. O% D& R6 P3 q& @# ~
title=Replace(Request.Form("title"),"'","''")
& E$ p  U. L, R4 R9 tbody=Replace(Request.Form("body"),"'","''")
; S5 Q+ C4 Y0 g! g  W: T%> * W4 d  S0 x) M- o/ l4 {$ m
<%if name="" or title="" or body="" then%>
) j6 i9 ^# K5 t! x! m1 \- z请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! : W$ P% `- H! h9 c2 i1 ~
<%else%> $ R7 _' k5 t; j
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
" q& d6 z; ]  V3 m$ _. U9 b1 x发表成功!<a href="index.asp">查看帖子</a>
" E' r, F8 _% I, y  X' v8 k<%end if # `, U6 O* v9 o' Q8 z' R
set savebbs=nothing 0 i" a( W+ O3 z# V% C  k, ^
%> 2 ~6 l* k* S$ J4 r
! u6 l  h8 |; p% M9 g
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! / Q2 v0 _0 J' [( e9 Y' X! U! X$ v
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
  S2 l8 T8 X+ @; e1 x接下来几句: 1 N0 `* S' K  z) U
name=Replace(Request.Form("name"),"'","''") ( x* g8 E' w7 A7 ]  n& S
title=Replace(Request.Form("title"),"'","''") ) ?, V2 u3 `- i
body=Replace(Request.Form("body"),"'","''")
/ b2 [, n# S( U; u$ G  T
- _% {8 M- M! G. p“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
. g. D8 L$ h2 T而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 2 j, z' Y3 j2 q
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” , L6 o& a0 a% g8 _& h) U
就是把表单中名为name的文本框发来的数据储存在abc123变量中
' f2 M$ N! x$ R# m) E
: C2 T5 g$ ?( Q. J7 Q接着:if name="" or title="" or body="" then
; L7 h/ C- h# @& v判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
$ M& q9 ?1 t( B4 e7 C5 a; F, {“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
$ [+ J8 H- d' l7 ?5 w0 l8 x) T该语句属于html语法,大家都看得懂的! . c5 W) W& b9 P2 g  e/ l

- g/ [. h. D/ B) g: a3 H2 g  Z"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: : u- }3 H' c# P* g1 ?& C3 Y. m) M4 G
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> $ ]/ N' j$ d: X% h/ G
发表成功!<a href="index.asp">查看帖子</a>”
5 y: Z# R3 u$ V8 A/ o% ^
! C! a; f; Q" F& l# N"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 0 o8 O  Q) l' ?  a
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
1 d# b, x. B' [8 n6 _中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 6 H) F8 `2 e' W! [- K* f) `
values是“值”的意思
, b. ^' T) B" ^2 E. W就是插入向量name,title,body,向量用格式'"&name&"'表示 # ]9 j7 o" x( x' `1 T5 B) D
) Z" v% T& H/ t
最后:end if就是结束if……then
; _  e/ ^+ G9 \( n2 cset savebbs=nothing可以说是关闭掉: 0 P" M( i0 H* e$ C: ?) l
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") : ^" F' `; }6 ^# b0 F2 E
  v  ~2 Y! I  z+ _* [/ }- m+ N

3 O+ g) j3 e& Y7 i  @6 H5、index.asp
( a; k7 C" G1 z6 `源代码:
% a6 t' X1 w0 `<!--#include file="conn.asp"--> ; |  W0 ^( `  h+ t, o" i2 B! b
<b><a href="say.asp">发表帖子</a></b><br><br>
/ g; U/ J& S" p6 @5 G$ m% q" u<div align="center"> $ }$ Q& a- D- q: @6 G: K# a
<center> + ?; z2 k# }" _8 Z$ g. K
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 8 n; ]8 d+ e3 e
<tr> % k( C6 G  k2 Y" Q. l; }
<td width="17%"><b>作者</b></td>
. y' `" j7 F. X( `0 Q2 o" V4 t<td width="83%"><b>主题</b></td>
: w) K0 M$ L6 F8 J# Y& R$ K</tr>
7 B/ ?9 ?$ H- Y3 u) A</table>
! k/ ]; f( B" q3 `9 p</center>
: V, i) e4 v" D+ i: o</div><hr size="1"> 2 a& L  W1 w/ g# T- @0 M3 r, k
<%i=1
: b( `% y6 |- g% D# z  }4 E6 C  O& V. wset showbbs=conn.execute("select*from bbs order by id desc") 5 P, X& r, [' A* h. ?3 f
do while not showbbs.eof
8 _6 J, {; {% c2 a% A* L' E%>
; d2 [5 }8 ^1 h6 O8 H<div align="center"> 3 ?4 f; g2 L; v/ N2 {" b
<center> 3 W4 K4 P! c0 z5 s
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> # A' ~. S4 Y& F! D, a/ w  J" S
<tr> 1 @( U5 a8 |8 D, C7 ?6 Z
<td width="17%"><%=showbbs("name")%> </td>
* y% G! _5 c" e" J# ^2 j0 @7 D<td width="83%"> ( Q: e+ ]* @. y
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
2 r2 I' J8 N6 `  E& _2 V! K</tr> : W7 {7 L( m2 `1 J2 l* {
</table>
6 L5 C- k( E* Y; y* s$ p: ]</center> ( h& M- [2 U( N! z
</div><hr size="1"> . u3 Z& W! p8 \. {9 t
<%i=i+1   W. T7 U8 _# b9 i% x
if i>50 then exit do / _5 L. X5 b7 E) J/ b0 D1 G. g
showbbs.movenext
) {* L/ s; _$ v3 k0 a8 uLoop
0 c. Z. I4 ^. T8 q+ Zshowbbs.Close ( {$ Z8 @$ u, n( z7 c! k
set showbbs=nothing 2 M4 _! I. {; k) J
%> ( B- v2 I) ~. W1 n9 R7 m: C8 W7 b
. d  p" a  m6 R
这个文件就不一句一句的讲了 ( J) {( l1 P4 X9 T# d: ~2 g9 Q" [* E
主要讲精华部分:
0 N5 i7 K! K! A0 V- o: r( tset showbbs=conn.execute("select*from bbs order by id desc")
' P9 k5 Y6 C! Y2 ^2 k意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 8 g. f2 t5 H% q, s6 Y
还有这么一句:<%=showbbs("name")%>
) ]9 ~5 E/ C0 U2 c7 ~就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 3 K  c) G4 h9 f5 Y  ]# a7 L5 J
代码中的i=1和i=i+1
) s. x; D4 Y6 U/ L+ J3 i- Eif i>50 then exit do   d' g9 I" J4 g* f  M
showbbs.movenext
: t5 x6 n2 h. a7 h) tLoop % [# |7 z) e, w& q) D
showbbs.Close 9 a. u6 R( O9 P4 }; Q( }7 U7 u
set showbbs=nothing ; n) j$ {% C( J
) A5 g" O5 y8 t7 w/ y2 k
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
$ x% ^9 p: A$ i5 }- ], ]if i>50 then exit do中的50可以修改
6 }; W  {$ m( l0 K但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 9 _0 K! f$ g4 Z# C9 X
还有一句很有用的:
8 |/ [9 w+ ~7 X- g. @; ^<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ; q) _) v2 z! W) d
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
9 d6 z  S2 O, I, X# w" Z1 S* ~* G等一下在show.asp文件中就有用了
# W1 |; h* V( C, d- \7 q/ X- R9 {9 s7 z
5、show.asp
/ A; G6 q" ~; E2 |源代码: - @  A) U$ f8 Z" B

1 B% N9 S% G. ^1 S& }  T' J5 D* C<!--#include file="conn.asp"-->
. q9 a  u8 I3 Z: L' p3 [5 C<%id=request.querystring("id")%> ; Y# d9 _2 i( G9 ]3 q
<%set show=conn.execute("select*from bbs where id="&id&"")%>
( x# v! T& V" n1 O<a href="index.asp"> & u; K/ ?, Y& e& B" D
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
/ @& f' n" M, w$ G3 R<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">   i# e- d* p- Y# t; D
<tr>
" W' Y+ K+ O" o. J8 g% q% g<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 6 \8 W+ o: |0 q
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> % g( @% @7 d5 W4 T
</tr> 0 f. E9 v% }/ K: `2 Y" i( C
<tr> 0 E, |# S/ x$ o
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> # [0 S& F+ m) N- J+ |" w
</tr>
, B7 F  P" `. G) M</table><%set show=nothing%>
: J5 B9 d+ |3 I9 Y/ H  O
( `# G2 T( j. r7 n7 ?$ x劲语句---精华语句: 3 ^6 j7 m3 J/ K* r
id=request.querystring("id")
0 x: E6 }) }& O$ F# B在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, . i3 w$ i* a3 i0 w
id=request.querystring("id")就是把地址栏中的id的值读取下来, ! P) s0 }0 y  f. [
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
4 x* r0 R  p: E) p% T所以show.asp使用id=request.querystring("id")语句把数字读取下来
. z' ^, _/ ]' F' o于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
) \5 ]7 Y* S4 v  [8 q# _* D2 e向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" % O- M4 N1 l% O% v
最后<%set show=nothing%> & Y) B6 U* e; C. k, @

4 |: v# H) O9 z/ u5 y4 p好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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