返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西& J& a+ B8 b8 Z4 q! p4 ~
真NB..佩服ing .....
/ U" X. K; H, {大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
- ^. I+ m2 V+ a7 Y2 g$ t3 v9 x* ^: v  h3 b& a8 m" w2 j% D
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
' F* U9 a5 n  f% i- s1 W! u% V8 K3 {* b' Z; i  y% j
一、建立文件!
$ c' H. [8 M' E3 M最简单的论坛也要有几个必要的文件,就是:
. i" \3 O: o! N1 C8 ~: G$ a
) _# G5 D. b/ O! \' Q' r1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb + X$ s; R/ D3 |# a
: I0 c* y% n3 s& e) _9 M* W1 r
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 9 D6 N' V. t4 I- t# C

7 e2 i/ W+ e. @  y0 q1 r3、发表帖子的文件----命名为:say.asp : L0 R/ {8 p) i) f
; n7 C' d3 k* C" m3 v
4、保存发表帖子内容的文件-----命名为:save.asp : X4 H* `6 e+ y1 p
( \4 ~; C" ~  c2 s5 H# |; R
5、显示帖子标题的文件------命名为:index.asp & u  ?$ h. T6 |5 P
# s9 Y3 e) e2 |+ s4 r
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp / w/ m: j1 @$ A# ^" g

% r3 N5 q5 q: n, p, Z建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
9 l0 |1 d$ ^% @- v. E: H: ~' _( P- c# E, s* @
二、各文件的主要内容 # c- a: v. R; D
$ @+ \9 n4 `% n0 {% K
1、bbs.mdb
- J" P8 ], g/ O1 i; o% G8 K, l2 S% m$ H9 {; g5 [; F8 ?  o8 B  w
打开这个数据库,建立一个表,命名为bbs
) \- }3 D2 Y0 I: c$ `4 @! h5 ^! C: n2 c) V3 ?( o( T
该表中有几个字段: , m2 O& \% S, l
% l- ?( }. f& E# H, V' L
id(自动给帖子编号),他的数据类型设为“自动编号”
* J/ C/ S3 v: c0 J. m0 N2 a. f' b+ C% _; F& R: E
name(用来储存发表的作者),数据类型为“文本”
, e$ i# ~2 |' K! {4 h
+ o( `3 I; c7 g/ D# r/ k5 S. Etitle(用来储存帖子的主题),数据类型为“文本”
) r# y5 g, Z2 m, c! `$ t; C# n3 d7 H7 v' u% t, A% s  D8 [
body(用来储存帖子的内容),数据类型为“备注” 3 o1 g" L8 L( v" s* Z* Y

! a- C3 Q4 L5 J( ]7 p* ?8 [2、conn.asp
" z; w7 K9 s% n( H源代码为: * ]1 H. Y% p6 T
<% ! p/ o) |/ V  t3 k
Server.scriptTimeout="10"
5 |* P$ s9 f, u2 q2 k: Xc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" ( U  x) ^2 _+ P+ q
set conn=Server.CreateObject("ADODB.connection") ( O, P$ [, P0 @- `7 z. q
conn.open connstr
7 D( R4 b2 D: D. c; S%>
+ Z$ S) f" n) s/ `0 `- q% }+ k. F. S& N* Z# U7 G! J! U* w
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
' c% ^( Q! T% v+ s# R
) f+ |' D  v, s/ S. o" h3、say.asp
0 b- U& K# A' E; ~4 ?  ^& {: {' t$ S% c9 G- z2 U! Z
源代码为: * J1 D! K, Q+ w8 D# g9 D
<form method="POST" action="save.asp"> 2 O- X7 k: N, ~- L7 P" T
<p>大名:<input type="text" name="name" size="20"></p>
6 h+ @) b7 K2 l8 O: [" Y. S- x7 y3 E1 [<p>标题:<input type="text" name="title" size="91"></p>
$ ^1 C9 I& p/ e' p& r<p>内容:</p> / m; k8 a8 X  Z
<p><textarea rows="11" name="body" cols="97"></textarea></p>
# l' w+ `* w8 o+ y/ c<p> </p> ) @* m7 B7 o9 y# A2 I
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
# O7 x8 U$ B, l3 s' `7 _</form> ( i6 o2 u% H- ~1 c
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
# p1 u  t  a! ?不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
7 {  \0 R1 L! L/ y) o/ l8 L9 C+ w3 w6 J& ^
4、save.asp * }" ~: x0 j# h8 r" d( {* m  G! V

6 Q9 d/ D) E9 u" l# e& E/ v1 _! V源代码: # j7 G- u" b4 a8 ?0 p: H5 Z$ k: V
<!--#include file="conn.asp"-->
0 x  f8 E6 L, N; V2 O2 E' g3 M9 m<%name=Replace(Request.Form("name"),"'","''")
5 j. T* W4 \* [; Mtitle=Replace(Request.Form("title"),"'","''") 3 Q& T# _& N- K9 f+ ]" b7 {
body=Replace(Request.Form("body"),"'","''") 9 M" _# V, U1 F8 a1 [
%> " o: L- X$ Z+ K4 v6 ~
<%if name="" or title="" or body="" then%> - [* z( G2 F) j" U
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! " U8 F1 [5 e0 I
<%else%>
8 k% e) x4 M/ t1 g1 M+ O5 D<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> ; R, W* Q# k3 t  V
发表成功!<a href="index.asp">查看帖子</a> ( H( B. r$ }/ v0 \" e' ^
<%end if
) l, _0 A( d  t  K7 K+ d% i/ [- Yset savebbs=nothing 0 _9 w. }7 |0 V
%>
6 m6 F: u- O7 N4 Z8 |) R& `) s9 E6 Z- m* Q- E9 o' Z! I
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
( S+ N! a6 Y( C$ n+ |asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
# h) J0 s: p. t* @/ F/ D. S接下来几句: & g# J: M1 y: u% `! \; ^, U
name=Replace(Request.Form("name"),"'","''") / j5 Y8 }+ ]8 d5 k2 Y
title=Replace(Request.Form("title"),"'","''")
9 i7 `: ~' E9 V1 v! I, \body=Replace(Request.Form("body"),"'","''") 5 N# Q: a# Q' ~" N8 }
' k8 w0 Z; Q" @6 ?0 }& W
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
( r: ~* v/ W% \7 y( P1 C1 G9 {3 @8 E而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, : q* A* a  h- `( n3 a& U2 c
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 1 ?( y! R1 Z8 ^% T9 W
就是把表单中名为name的文本框发来的数据储存在abc123变量中
4 Z  C( e. L2 h! E: c/ n* r$ v# n* a- k6 _$ E' q  i
接着:if name="" or title="" or body="" then 7 W. Q. N8 n2 R& Y$ _; I
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
. s. B( j- H: r" i“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 3 q( e9 M6 G# ^/ \% }4 V. D
该语句属于html语法,大家都看得懂的!
! s- S* L" ?& x, M7 F5 o4 N
3 Y6 w' I2 p* _- j7 a1 B"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: % a* V8 h6 K) @: o
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> . J- S8 H# d7 B& u* X3 S$ z
发表成功!<a href="index.asp">查看帖子</a>” / m/ J; {9 q7 D2 H! f" X# ]
5 [8 k4 _; O( \: U& _# ?7 [
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: - |- K) G% x; y4 z6 {) a8 \) B9 E
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
* \6 X$ n, d1 {  @# l1 p( n# b" G- H中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
$ Q5 a8 l- k: T: m+ k* Wvalues是“值”的意思
1 U+ }( T0 M  `就是插入向量name,title,body,向量用格式'"&name&"'表示
7 Y, d% |4 ]& w7 K
8 O3 N% T( D6 E" J* q最后:end if就是结束if……then 5 w5 c! D$ K( P0 x% Q7 o
set savebbs=nothing可以说是关闭掉:
& B6 C# q* {/ S/ D& b7 ]; p& Nset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
% c9 L1 `9 I8 i; g* \5 J7 e; x
; r* G! d* C) l" V; G& L  @* Y1 \: ^. }: F: H, u0 J& H
5、index.asp
& F" S, x# K2 c- s4 d2 o' y源代码:
4 s: @' P- ~# B2 ?6 P! y<!--#include file="conn.asp"--> 0 K( S, k- F; j. ]; z* \2 T" G
<b><a href="say.asp">发表帖子</a></b><br><br>
3 h! H% v! X7 `$ B& x5 W7 o<div align="center">
  q* f+ @  O" h0 }# @: T0 T2 k) |<center>
3 M5 i4 M: ~/ \3 `3 z<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ' I3 `9 n5 _2 `+ T2 t
<tr>
: ~1 o# v3 u) v& O6 k<td width="17%"><b>作者</b></td> 9 B" n9 u2 R. ~* `
<td width="83%"><b>主题</b></td> ( w# L& g& k! C- C" y% ~$ Q) @
</tr>
  m; C0 D( U8 D3 L, y</table> 6 E6 k1 C7 s7 H- [: L0 Y6 ~, E
</center> 6 \6 p4 [7 r  C, ^
</div><hr size="1">
7 v" m; T6 k) V) h" a: o<%i=1 * S# G, D6 r. L# @/ ]+ ^: W
set showbbs=conn.execute("select*from bbs order by id desc") ) b/ n( ^, y2 n8 \
do while not showbbs.eof
8 I& Y$ K4 u. v3 m3 N%> - Q: t' S$ s2 D3 C) Y
<div align="center"> 6 w$ s# A: }  h! a% ]
<center>
  J$ ]0 r; `6 Q' N, P7 L! z: p! k0 p; X/ ^<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 5 {' H; H2 u- ]" z- N% ?: |6 O
<tr> . K* R" U$ c0 D6 T3 J
<td width="17%"><%=showbbs("name")%> </td>
# G) G1 n% l9 y2 A) f% K5 ~0 n) F<td width="83%">
4 t4 \' f3 i2 }<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
( T9 v9 |' q& R, [8 T</tr>
& I3 S7 D- q/ t/ i- O</table>
5 k1 {' M- H  I9 Z' A</center>
: g7 Z8 G6 d0 I' B( k</div><hr size="1">
! n7 j9 @/ d$ P! ~4 S<%i=i+1 9 |, n* ~5 y: e. c& G
if i>50 then exit do
" R4 n6 R5 l  F) lshowbbs.movenext
/ I& T) l$ T6 S! V. ULoop * P3 ?7 F- C/ @: m: o7 i( A, c
showbbs.Close
5 u1 a* v; K0 L" i8 bset showbbs=nothing
$ A6 r4 Y$ A! \%>
' n. W; Q7 a- k
7 q1 [$ D; P8 h3 z/ O2 \, b这个文件就不一句一句的讲了
0 K$ x( z! t5 C3 ~主要讲精华部分:
6 d! Y0 j* |' U6 W# D8 a# Y$ o3 {set showbbs=conn.execute("select*from bbs order by id desc")
$ O. V% F( s5 T! }意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
+ b2 J7 A- A+ G" n* I0 a  N还有这么一句:<%=showbbs("name")%>
1 G* Q4 f* D, A9 f4 P4 r1 j9 X5 |就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
3 c% o1 F' u- ^: Z3 k代码中的i=1和i=i+1 7 U( D0 s7 s( W. q) R/ `
if i>50 then exit do 9 x7 E; F* W- O, m' B/ O6 L+ |6 ~$ `& z$ q
showbbs.movenext % g, V: p! R9 E0 z2 R; d( m/ S
Loop ; f# A/ E/ m$ p3 ~; D
showbbs.Close
9 W- P/ {6 J) L$ P/ Y- S/ O2 [; |set showbbs=nothing
9 J0 y  n+ q' G: s! ?
# V, o2 l" N/ o2 Q% T. E( D这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
5 t: S5 }( a+ T/ ~- [4 ^if i>50 then exit do中的50可以修改
7 i2 e8 @- U: U4 G, K6 N$ u但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
3 c# X$ c/ P3 D& Q) D还有一句很有用的: " g. e& v: \8 z, R% w" ~5 Q
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
) J) _( a% Z: u7 }$ `  K; J# h1 ~里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
& [# f( S9 f7 v1 `$ T等一下在show.asp文件中就有用了
0 D; D' z! E8 M- x' m
, D+ Y; [7 A& K6 _" j, [' E: I: Q7 T5、show.asp
: d& U" Q0 Z; N- f5 X源代码:
' }6 V; O, l' N
- L$ g! k! q; C- B  h<!--#include file="conn.asp"--> , c7 E  n& i) P6 O( s% r' T
<%id=request.querystring("id")%>
: j0 L# V3 U0 ^( s<%set show=conn.execute("select*from bbs where id="&id&"")%> 1 w- L# k9 J- t8 t- X5 v5 F$ R
<a href="index.asp">
) b$ r- V) ^* @2 P9 [1 y* C8 i9 ?: y<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
( Z, Z; r. R. U" ], f( P5 M' {<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
# g5 e" ?  O5 U! S+ T: d6 x; A. [<tr>
* ^! Z( W& _( K$ \1 r, u<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> % x/ `+ z6 k2 ~2 d) ~
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
/ N/ I" J' z9 m" l' V* I</tr> 5 O3 I, R6 B; Q7 e/ L4 c
<tr>
" C8 T# v8 T7 E& W% q  |/ i<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
- y) a; e1 x' S) L</tr>
" ^: e" V1 c' g& A. R. s% A</table><%set show=nothing%> $ X) C8 Z' i& w- }- l
4 `, X% d5 M3 e2 N/ [, j- v9 c
劲语句---精华语句: $ N6 E. y/ H( F& x" x; V% ^# [8 i" @
id=request.querystring("id")
6 t) _+ ~' g: [$ a$ s在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
7 F+ h0 Y9 v* A0 G+ i2 u% fid=request.querystring("id")就是把地址栏中的id的值读取下来,
" u! C3 e: d# x( \* A  m2 K因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,   K" U% }  b) G: o$ o
所以show.asp使用id=request.querystring("id")语句把数字读取下来 3 H( }2 V5 {) [5 B; K% A& m# a
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
2 Y- o/ q4 S4 H! I) J! x% D3 L向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
  p( I4 V6 r: U# ~% K' Y, m最后<%set show=nothing%> 6 l% H( G% G2 c1 F- c  h! O
6 L- h. |/ O& d0 c( Q
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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