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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
" |3 f: _2 M" T: l+ o  v真NB..佩服ing .....5 g* D- q3 a3 \* v3 \/ M3 \! w
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
) w5 Q1 Q+ |" M2 B3 f) w. ^5 r# ]4 I- ^' ]
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
. V+ H: T; F; [7 f7 I  f
7 J0 I4 T" s' B( h9 G& F3 F一、建立文件!
, r+ n/ [" P8 J- L最简单的论坛也要有几个必要的文件,就是: ) l- J* Q- P* o- G; ^
1 J( m4 x1 {( w4 a0 \/ Z- d
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
1 n5 Z0 x& M* Q; J+ M  X+ \0 e5 [6 B3 ^3 X$ i
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
$ n# D( K( _  G! R- ]5 {8 h: H  T1 q4 y' k
3、发表帖子的文件----命名为:say.asp 6 g" n5 ?) `, \6 X0 [
2 N2 Z/ |8 v1 |
4、保存发表帖子内容的文件-----命名为:save.asp
  R% L: c/ E0 ]  S( w
, m. V; P9 e. |. A  \( t" ?8 C5、显示帖子标题的文件------命名为:index.asp
! C7 r2 B4 @$ [5 {7 ]0 Y: w% I" ^7 R6 ~1 r# A8 U% R/ ]0 [
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp & S( G2 u5 K5 J+ _

! o5 c% E$ |7 s/ |7 y建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
% L/ v  u4 q9 E1 Q; y. S
  b1 M/ i2 e% F二、各文件的主要内容
* s8 @9 V' q3 Q; r
3 N! L: ]' x/ y* G1、bbs.mdb
, A. `; D2 {  o3 J( q
4 `0 G, n9 }1 J7 k4 Y3 [打开这个数据库,建立一个表,命名为bbs
, B8 k, Q! t5 \# \7 \* m6 {
- p) {" Y) v4 V/ ]- T该表中有几个字段:
4 v9 W* v/ y" ~# T* l0 `# m
$ i- }3 E% }3 x) d$ J* Bid(自动给帖子编号),他的数据类型设为“自动编号” " j. C1 D+ h6 n, m! |

. D6 x9 B$ }4 n- vname(用来储存发表的作者),数据类型为“文本”
9 _/ v( O7 e6 L/ ~* y) H: t: ?1 m9 ]8 `- }9 e
title(用来储存帖子的主题),数据类型为“文本”
( E0 Y9 [7 j- X# x+ e
% n' G( }6 P# A8 r3 [/ Abody(用来储存帖子的内容),数据类型为“备注” 7 a% b  @& g3 Z, I) t

4 z4 b: M8 g: O( e" o1 [2、conn.asp
( D6 r; q  u$ Y8 ~6 o: x3 }4 S8 M% I源代码为: 8 x, Y1 D7 H8 I+ Y0 X+ q
<% / E2 q- p% F, q8 }- a& i
Server.scriptTimeout="10"
, y! o5 W. O* b6 oc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" " S+ S& Z3 E6 ?1 Y/ P" d
set conn=Server.CreateObject("ADODB.connection")
; R5 w' q. e3 O  t: @4 xconn.open connstr 1 U% l$ C% k! @( q9 G6 ]
%>
% `8 V. X" d" s9 A- H$ S( E; W- t% q7 K( M1 A/ [! A$ m
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
  N0 I2 U) p, j! H4 v" t
- b" b# O: ?! z3 G9 H& k9 @# F3、say.asp ; R' X0 {9 U( E# {- A8 @, H

$ z1 b5 q  V: o, T) e源代码为: % t+ m: ^2 \( |9 H
<form method="POST" action="save.asp"> . T$ X. t4 n: R9 Q
<p>大名:<input type="text" name="name" size="20"></p>
8 ^! M' V; S# ]- X* s/ U8 |<p>标题:<input type="text" name="title" size="91"></p> * q2 S9 J& M. \6 T- E$ M
<p>内容:</p>
+ K/ h& n) ?! m<p><textarea rows="11" name="body" cols="97"></textarea></p>
1 q2 R( ~" L, Z7 c<p> </p> + w- {7 l3 o5 |4 C
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
! Y$ o! O) V$ D( z</form> # e" d6 j* b3 ^4 p/ w, t
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
) p8 E3 d5 I/ ?0 B( [不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ( H, R( {5 u2 l

' h0 H9 i4 l: H* _) S; Z. ]3 b3 X4、save.asp 0 X+ T5 O* E. P8 m, x' Y# N7 B
& S& s/ c0 `; b% Q! C+ m  q6 n: v
源代码: 8 i, _. S% ]" C6 C4 m  D( k
<!--#include file="conn.asp"--> : F4 |" R+ d0 m! N  J7 ?0 r
<%name=Replace(Request.Form("name"),"'","''") / s- r6 X, S; A; M; |7 A
title=Replace(Request.Form("title"),"'","''") . B' @4 c* I5 N" H0 i0 u; g2 \
body=Replace(Request.Form("body"),"'","''")
0 L1 D4 I* c/ Q%>
; `; o$ x4 E5 z- i<%if name="" or title="" or body="" then%>
% k, }8 g! Y4 ^5 Y1 {! Z; R: x请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
0 p0 F+ I& y) n  p+ L0 D. s<%else%> * v# B0 V9 w4 Q/ f/ f1 E7 j/ J
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
* g6 L; [' R, f& Z( I, V+ L: ]发表成功!<a href="index.asp">查看帖子</a>
# t( R3 Z6 [- h8 q+ Q4 @  s$ h<%end if ; `: p6 H0 J* n, Z/ T, O' m; h
set savebbs=nothing
! I7 g0 V- Z% z7 W' a%> 3 ?) G$ f0 o- S4 R
6 R- N: Q( [2 M; X( b7 V' z
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! $ }) p$ v4 N( f: b" M
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
" s+ X1 F+ H! [& ^' g+ @接下来几句: ' o6 c4 o& T4 q: z7 {$ h
name=Replace(Request.Form("name"),"'","''") * n* F, j  l8 v- {# G
title=Replace(Request.Form("title"),"'","''") $ F1 _0 Y- b: |4 _
body=Replace(Request.Form("body"),"'","''")
% t4 [! U. H, r' ?( G% N) @
( a( g( V+ f) F9 L“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
" Y/ {4 [7 H* }0 A( i而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, . a, g7 ?" W8 C$ B0 {
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” - ]. z, j4 G  Q
就是把表单中名为name的文本框发来的数据储存在abc123变量中
) s. F" N6 x7 V& C# ~9 s) I" v# [
接着:if name="" or title="" or body="" then
. J- j3 o; C3 C; b# n判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
3 E5 H) n0 {3 J( M) x“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 1 V* o% @4 j7 n* ~0 c
该语句属于html语法,大家都看得懂的!
5 b7 Y8 h, F1 F
% K" i5 _2 D0 U9 V. }: ]"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
) K1 S( T4 ~3 H! q( d0 o( d7 [“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
) y# d* T' _7 O" c% y) g' x2 L" P发表成功!<a href="index.asp">查看帖子</a>”
! r) s1 o) v0 p0 I6 D  w% G: n6 A- f1 O
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
; ]4 D9 _0 s' Q  h5 x2 tinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) $ C. S! t5 I" u- G- e4 w6 @
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
9 U& N& G6 h1 `- }# Q; T8 C/ z4 Jvalues是“值”的意思
# r* f- d& a8 w就是插入向量name,title,body,向量用格式'"&name&"'表示 - {. w7 Y+ N2 p8 d+ `

3 c7 G; A6 a: v2 `- }; Z' T最后:end if就是结束if……then ' M6 J7 m/ n: Y% f; _0 ?! ~
set savebbs=nothing可以说是关闭掉: 8 i* Z! e, b6 H2 O6 j5 Z
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
1 w  x: C7 z/ O) d- @4 B' i) ]/ j2 V# P4 Q9 a
! S  `5 l& R6 X# L, _- M$ k. T: i
5、index.asp
$ I+ X: C- c& M3 T- N' w9 u. M源代码: ( y) E5 ?8 G- n4 l1 |: a5 C
<!--#include file="conn.asp"--> 1 `& Z/ b" ^$ H
<b><a href="say.asp">发表帖子</a></b><br><br>
; L$ v. f/ N- Q2 \% \! L<div align="center">
0 M' j( A/ O  E) k1 [* y6 y<center>
; U0 T# S. H1 ]<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
6 f& F. ^9 e5 o. g6 C2 K<tr>
5 A; ?" ?6 B( E/ D2 c4 `% i/ Y<td width="17%"><b>作者</b></td>
! W2 b% P5 i. E- ?<td width="83%"><b>主题</b></td>
# X- B" G( ^' U$ S7 C</tr> . |& w  X3 v' J7 O  V% p
</table>
( Y) R, H. Y! q; f! {: @</center>
% W" k- W- P+ d- p7 T</div><hr size="1"> 8 P# N/ H9 |6 `0 w  A( B
<%i=1 , l5 |3 G  A; [" b- }6 X& f" }
set showbbs=conn.execute("select*from bbs order by id desc")
. t" w, o1 F3 y* s  [8 mdo while not showbbs.eof
9 b; d7 c' s6 W%>
6 E  J: L! \, `# V# c. ^<div align="center">
" e+ V" V/ q5 _. A<center> $ h/ w3 L; w" Q. Q
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
. S- i" q0 @7 G" U' l+ m<tr>
) v8 e2 }4 j) e# w* u, i  \; W" Q' Z<td width="17%"><%=showbbs("name")%> </td> , x, x9 D! f3 J9 `
<td width="83%">
: S8 p/ s; S6 l: Y- l<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
( g- C0 m7 S- k0 ~# [6 _, q</tr>   ~* C+ z! z( T$ V8 R
</table> 9 }' N7 |/ y6 W' r( y0 S
</center> 7 t+ v9 y2 L" |7 G% C" ?3 o. H
</div><hr size="1"> 0 Q$ V; ^6 i9 R( [* J1 j
<%i=i+1
5 }7 {4 T( h% Q- ]if i>50 then exit do
; A* m$ L( B9 J+ A! R  Hshowbbs.movenext ) o' Y8 Y( u8 o: i1 S" W& n
Loop ' Q! b% P  o, Z, ]4 k
showbbs.Close 2 C# J3 ]: x" Y
set showbbs=nothing
' D# V) p5 U+ O# w: a* G%> ( r2 m- ]( Z+ z0 P+ w
, r+ X+ S5 N) l( S( h
这个文件就不一句一句的讲了
9 |/ g* Z' p8 i7 O主要讲精华部分: ( n. y1 E! M. K) k2 T/ r
set showbbs=conn.execute("select*from bbs order by id desc")
( L2 }1 E. n: A意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 5 g! Y9 {3 g6 |
还有这么一句:<%=showbbs("name")%> / Y( d! B4 `7 F" y
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs $ u1 H- f( n8 O. Q- B6 R+ ^( e
代码中的i=1和i=i+1
* P  Z- |3 Y1 A8 m% Nif i>50 then exit do   E; N8 ]5 d$ ~
showbbs.movenext
5 {# d; `' m, C6 S8 r+ `% @2 kLoop # ]0 U& t" y: v+ z' m2 S! J8 W$ ?3 p
showbbs.Close
! Q% }3 c) G* z/ bset showbbs=nothing
% X! D( m0 F9 f2 F8 f
* F. m* z2 V  L这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
, l3 E( F6 l; V( k8 Y, N# X- |! yif i>50 then exit do中的50可以修改
. b- q  S" k1 k2 Z# S但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 % @% u  O8 O9 R; \$ D, k* W9 a
还有一句很有用的: 6 U1 s& S+ j6 V1 I( X
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
, Y* K8 `. n' v; n里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 7 o; n7 I4 L' _+ j8 k! s% |
等一下在show.asp文件中就有用了   s+ X% b3 B9 s* I
6 x7 m4 q9 h) Y- [8 E5 o
5、show.asp * S" U1 ?& C; j/ ^5 {& [8 N: E
源代码:
6 c( }( ]4 P9 p6 Z# T" B/ A0 m3 }! Z7 Y4 K! D2 D* S3 P
<!--#include file="conn.asp"-->
: a) D% g( _/ I! I<%id=request.querystring("id")%>
$ k$ P* f* ^+ w# f( A; G: H<%set show=conn.execute("select*from bbs where id="&id&"")%>
" v+ `: [7 N/ L% a( \# k% X<a href="index.asp"> / M6 I- x! l/ ]8 y8 X0 u# l
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> - U6 s5 k5 x5 u  \
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
& v) u, R. w- ~. b<tr>
# w* i; {& @/ U8 \3 D3 D! ~% n<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ) [& ]( d0 P# J: b! Y
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
) q* @9 E; s/ E: D0 x/ G  ]</tr>
8 n. r! L0 s, S1 c0 X0 U& K! t<tr>
' u" f' t8 W& `; d  O3 G<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 6 O2 u5 v2 P3 G1 S. Z5 D( i& v
</tr> % F9 L5 A! X: ~
</table><%set show=nothing%>
/ B5 s% A' S1 }: F/ p/ q/ g  f$ t: k  j
劲语句---精华语句:
% i) `. A) o8 i! [* Tid=request.querystring("id") + p2 E1 p, D/ U, |3 Y0 C
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
2 X% A: C7 s! M9 i- P, F# |id=request.querystring("id")就是把地址栏中的id的值读取下来,
: K& i! @5 ]7 H; Y因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
$ H# }2 {$ I' P1 R' a+ e9 }% P( I3 M所以show.asp使用id=request.querystring("id")语句把数字读取下来
3 H! ~# H* w2 D- m9 I于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") / X0 C& ~& _$ f1 a1 ~+ s
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
9 ?6 B+ D  E! X( I' Q. y最后<%set show=nothing%>
6 O8 _3 X0 M1 H7 e" m
1 ^0 P" Q# z/ U) Z& j好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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