返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
4 d3 a4 X2 L8 w" t7 S7 ^9 k真NB..佩服ing .....
, _( D& z; F8 h6 \. L大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
: L8 h/ |9 ]' p9 A8 S* O( e$ c3 Z+ B) Y  {2 n
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
# |  `/ N( @' e( Y& @# y
  r0 e# v; \9 m& F一、建立文件! - C- {( I+ E/ o% A3 {' M
最简单的论坛也要有几个必要的文件,就是: - [! `" ?9 i+ Y/ r7 ~

* c+ _0 @. q" h  b1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
; Y3 \7 c8 t0 t# [
, Z1 _2 m/ D; {( \1 O% F2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp ( J% r# l; Z+ s2 ?& b* Y: [
9 K2 ?- G6 J( n7 f
3、发表帖子的文件----命名为:say.asp
1 g9 v' o9 x' t5 A
8 C. Y; P, Q& `" ~) P4、保存发表帖子内容的文件-----命名为:save.asp / ~% @+ P$ _4 W  Q# t2 w+ {

  B$ h) V3 Y. r  ~% p7 y" v5、显示帖子标题的文件------命名为:index.asp
" n& q+ @4 n& m- v! F# i) g* ]- R5 y$ ^: G4 H& ^- J3 `
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
: z2 F0 O$ z# N8 ]
. I) O- a; s! G# v2 b建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
. l- O* v- I( o6 ^
3 ], s& n6 Y2 |# p* A1 L# E$ k  }& c- ^二、各文件的主要内容
! a# O, c; O) L5 V' Y4 }. `  i$ n# w- @' l7 J
1、bbs.mdb , k9 F9 j& {5 N) c0 r

% T9 h' }( ^/ w! G( B2 n打开这个数据库,建立一个表,命名为bbs 3 e) j( Q7 Z2 C  z

# J6 Z  m4 X. h该表中有几个字段:
/ @  z$ F) w# R; ?) x
# \* l/ z# D6 i2 d+ X/ Bid(自动给帖子编号),他的数据类型设为“自动编号”
+ p. \% J6 p% u; s% g" z  `8 _& B+ Y
name(用来储存发表的作者),数据类型为“文本” 9 C8 m/ X+ _# ]& R9 ]
/ B8 E4 Y6 d4 {5 a0 d3 \6 d
title(用来储存帖子的主题),数据类型为“文本”   l0 E7 Z; f( C$ J4 a: l
) }) V2 w7 V; f% K
body(用来储存帖子的内容),数据类型为“备注”
  F5 ^' H" c7 O( @  T% D
1 V' E- E& k# _- a2、conn.asp . q8 s' f9 T' G. \% Z' Z2 r
源代码为: ; b0 O0 S$ }1 G
<%
6 \6 Z0 i. X, z& V1 L+ ~5 R9 LServer.scriptTimeout="10"
  ]8 h3 D7 \& a) A9 }1 m+ Mc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
2 {, L/ r% d: o# [9 R1 Cset conn=Server.CreateObject("ADODB.connection")
, l4 H& H3 S4 G: c' `, mconn.open connstr
) {7 \9 y' O+ W7 {8 a1 n/ `%> . m; j0 ^7 `. j9 b" X

+ P4 ?8 g6 E  V5 M: U/ E3 d这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 5 \0 v# ?* n" A" y+ j3 |% `

, p) u$ M5 T* t7 z1 ]4 X5 f; m3 u3、say.asp 3 j# b6 T) u2 d' Y
$ `3 _; }# ]2 b/ i" z  N$ T
源代码为:
6 L0 ?7 L2 h. h* l7 t<form method="POST" action="save.asp">
+ A( s9 `+ L, v% o* e* }6 K) }<p>大名:<input type="text" name="name" size="20"></p>
* |4 @6 E$ l7 Z9 c<p>标题:<input type="text" name="title" size="91"></p>
  d# R( U) b& h) _/ j: W9 [  c<p>内容:</p> 6 _: m- H/ I# w+ c3 u
<p><textarea rows="11" name="body" cols="97"></textarea></p>
, I. [( b. q5 M2 n; \' [( c<p> </p>
3 {% [1 y9 `" c1 O2 R2 b! }3 k<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ' e& p, o# y/ [. N, d$ T, I3 v
</form>
, t0 e* O! v7 q& j8 O6 `$ u' \大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
. h2 p! E% X6 w% P5 _9 {不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
+ o6 f5 M' H: |# N5 z9 `: X, `# {6 F  [) e6 L! r9 L% B
4、save.asp
6 |5 k- c/ L  R" I  g: j
* d* B, A5 t/ r* X& h源代码:
: Q6 t" x3 U& E. L7 F<!--#include file="conn.asp"--> ( {$ S( C: J/ |8 X( S: S
<%name=Replace(Request.Form("name"),"'","''") ) t  T% A# X3 ^: {
title=Replace(Request.Form("title"),"'","''")
  ~" x: f7 H/ k) T; S$ O" xbody=Replace(Request.Form("body"),"'","''")
/ r  X& S8 R% ^/ w% B% q6 K%>
9 W8 T0 w- p# H0 _5 d- ]<%if name="" or title="" or body="" then%>
' a( G/ r0 i( Z$ g请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 4 X- D+ n4 C8 Y' F) c
<%else%>
0 {3 Z3 G5 O) d  R8 k0 [+ c( i<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> - Q$ o" ]: _6 O4 q1 r
发表成功!<a href="index.asp">查看帖子</a> $ f! O" y4 l' B3 e, S9 ~2 L8 {, V
<%end if $ U4 u4 d$ F  F: N* I+ N/ V9 G
set savebbs=nothing ) M& R3 p! L' v3 ^
%> 5 V" b' V9 x8 I' f" K) v$ o: W

9 p% }( f% v' }3 G第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 7 y) q2 V2 m2 Q0 R4 u* |
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, 8 p- {# G) P! g. G# ], P9 D% }) b
接下来几句: 2 t$ N7 L+ `0 V. @3 p
name=Replace(Request.Form("name"),"'","''")
/ `, X( `* O* Jtitle=Replace(Request.Form("title"),"'","''")
- O1 `/ T, z* Fbody=Replace(Request.Form("body"),"'","''")
5 k# ?& e7 @! G: n' t+ W! [/ Q; Y  X  Y
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ' q1 a8 V9 g/ Z" r% N5 l& g
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,   l) ]) m1 n# T, H  q; S
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” # i$ s) `6 M6 Z+ k9 w
就是把表单中名为name的文本框发来的数据储存在abc123变量中
: U  O/ s- H$ ]9 d
! b. k$ @' h0 L接着:if name="" or title="" or body="" then 2 |$ T) M4 `9 u* v" W
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
9 S3 X/ l: j8 f: n“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 5 j: D; k! n3 V) ?, O
该语句属于html语法,大家都看得懂的! 6 a3 T# m/ T* v; `; t

% G" Q3 o- w. l! T5 A0 @1 d"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
: a% g2 y: s! k; O“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>   N7 M, }, f0 K, J9 b' I/ t
发表成功!<a href="index.asp">查看帖子</a>”
+ P* B, G: H' E$ ^5 t! g6 p- u  t+ J/ N9 d& u# Q
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
' F, @1 g5 c0 V8 Z# P" J6 S! z5 ^insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
6 I! i0 U7 q2 N( E3 e- h& a中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
# p  i% Z/ C$ o; L0 Nvalues是“值”的意思 ! l& _) X1 o+ L. F
就是插入向量name,title,body,向量用格式'"&name&"'表示
; \& m+ @3 Y6 l8 a
* z* U+ n) I  l  |; f最后:end if就是结束if……then
/ d3 d3 t, s8 Dset savebbs=nothing可以说是关闭掉:
: R! h& @" m9 B4 S  lset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 5 V' g+ R& y$ w8 _
+ R, s1 \) {+ k; |  j. r
3 h1 c, j8 k, X* @6 y0 G# Y
5、index.asp : W! R1 v. @) F" M% o% n7 f
源代码:
- `- E7 t6 }* q5 f6 ]  o<!--#include file="conn.asp"-->
8 g  m/ E; |0 F/ H/ s" a6 `<b><a href="say.asp">发表帖子</a></b><br><br>
7 {% ^0 @0 j( b& E: s<div align="center">
$ j: F5 ^  Q. l& P6 D( \% `<center>
% A7 \# ?2 ]1 `  Q5 H" ]0 R<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 6 P5 i+ l& _1 T1 H0 N
<tr>
! q! V) E9 \( Z$ k0 H<td width="17%"><b>作者</b></td>
# I% k+ |6 m- k! V6 V# C0 o' D<td width="83%"><b>主题</b></td>
9 U# y' X- `, m/ a' ^, U</tr> 9 C% D' G4 H) v3 C% c1 q0 z
</table>
0 B( V8 x# W1 O0 p$ V; w, i" x% |7 o( N</center> 2 [9 [* N) O6 i% Y2 w7 ~
</div><hr size="1"> 9 c$ V8 I/ X, M4 A5 M
<%i=1
8 f- K- A: n) K. |$ r: hset showbbs=conn.execute("select*from bbs order by id desc")   l' E' q$ |% U) B
do while not showbbs.eof + W/ Y' b) M' z; X
%> # e  q  W9 V" ?% j6 j
<div align="center">
' R& d3 @5 B5 |3 W$ Z+ k0 T& ^9 ]<center>
0 I  f- F! @2 k<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
$ O, U2 {) |, B/ d<tr>
3 M5 z( b* e" L: O' Y<td width="17%"><%=showbbs("name")%> </td>
$ j% Q; f7 w4 L- \" P/ b<td width="83%">
' b) h1 [( P# N* d# d3 g. h5 e9 e" G<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 7 D' o% O8 P- [1 Z7 E& e5 T4 b) o& o; u
</tr> 2 f; v' T1 w: n  N3 L) X
</table> 0 b" C! g3 {; F2 y3 a5 h
</center> 6 `( L7 {! I% N" K8 j  q: v
</div><hr size="1">
, L" m% h/ A' N6 j! l; x8 \' ~<%i=i+1
) L" @# K3 r: J" H9 Kif i>50 then exit do ! d( Z0 S0 |) i$ G+ n7 m+ _; X
showbbs.movenext - ~% |, d* o. i8 |, m- q, }! q  F
Loop 8 x  t* o) L: a% b( t
showbbs.Close
% v) |+ C' t" H" Sset showbbs=nothing
) G1 G1 T; T) q4 k8 ^3 o%>
! G3 T+ u' Y7 V: i* Q
: _, x$ v* o7 h6 L9 v; N8 _这个文件就不一句一句的讲了 # \0 ~) G0 O4 J
主要讲精华部分:
1 N; Y5 k2 z2 Q( d. N" Zset showbbs=conn.execute("select*from bbs order by id desc")
; D" a4 o$ H* @$ S8 s意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 3 C4 L, L: O! Q. @1 C' V& v
还有这么一句:<%=showbbs("name")%>
( K  c0 k, P1 e# s$ s( u就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
! j/ L( T7 p3 d! _, K( N7 {代码中的i=1和i=i+1
$ a+ v& G4 P! v& \if i>50 then exit do 2 Y/ }/ S0 E0 c4 \5 I
showbbs.movenext
" s- f- y+ t" ^# p5 VLoop
0 G& H+ B( k, ~' Yshowbbs.Close , Y) b6 w& I5 o+ n2 a9 c
set showbbs=nothing
" |. k$ }8 H* E) S+ L' @1 X2 B6 P8 K* A2 m! [) N
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
9 P; [% G7 z* N( m5 b* T+ k- pif i>50 then exit do中的50可以修改
. ?+ P, k3 b) @$ C3 Z3 s0 L3 n但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
) w2 `: l. g1 X/ w! }还有一句很有用的:
( I8 V( j1 u7 ?  t. X+ }% o1 B<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 7 P8 R7 [5 z/ _$ Q+ _7 W3 u
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ) Z, V' r, j: U5 `5 w' b
等一下在show.asp文件中就有用了
$ R) V, R$ w) W3 p7 J6 Y! B
' A; f' L! }* U5、show.asp + J" O: M6 d( A& [8 L% h- z3 b
源代码:
' c& p$ {6 n6 N. J' H) Y! Z9 w' W6 A3 y# g3 ]7 N1 x, M
<!--#include file="conn.asp"--> 6 L  R" M1 E2 C2 ?
<%id=request.querystring("id")%> 0 {7 b5 a  j% G7 S6 V* q3 U
<%set show=conn.execute("select*from bbs where id="&id&"")%> 2 b1 t6 t/ _. d+ d6 c" M
<a href="index.asp">
- H' W1 u3 R3 N4 l: J0 w2 K<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 4 v: d: o$ `6 H; @+ D$ S
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 2 C5 Z0 D6 O" Y
<tr> . ^2 {/ @" {+ d" j) V
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
9 ?* o8 }+ R8 i<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> / X) f3 B& V0 @% d$ ]' Y$ F( s
</tr>
( Q4 z* r. P- k4 [<tr> 3 S3 w% P* I1 a; c6 R
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 0 d+ \  r3 \9 {1 v+ W: k" H
</tr>
" u( k5 A  c4 W</table><%set show=nothing%> $ c5 r+ V" s% C

1 b* d* _. R: M  F5 q7 h劲语句---精华语句:
9 R/ Y; Y; [7 A% l0 D: D+ e6 ~8 g% uid=request.querystring("id")
/ U% N$ q4 q/ b5 R/ ]# g在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
3 b/ I7 y* t0 B2 G1 L4 Aid=request.querystring("id")就是把地址栏中的id的值读取下来,
6 S5 s6 l+ w0 B; z+ P因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 5 U, O! I2 m7 @; d( G  c1 U0 V. c
所以show.asp使用id=request.querystring("id")语句把数字读取下来 1 s5 D2 \0 M: ^. `
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") * v# l3 V& G" y+ J$ N: s! p3 T
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
6 `/ }* W" o( L最后<%set show=nothing%> # `% s; m, F" y/ ^0 o& |! x. h* f% v

: f& n5 `9 I# f$ y# g4 \) B8 W好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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