返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
* W7 I. ~) X0 R0 V0 d  U真NB..佩服ing .....
8 r3 t9 b  p% u8 s: x2 r. L( A大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
. {# x1 h" v; g
8 R: K- x3 i; V# I% A5 b* w同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
  p( [( k  t1 _* c. T& o' Q! x! f8 U3 Z1 E. ?' a
一、建立文件! ) F; g# J# u8 r3 O8 M  V! _. e
最简单的论坛也要有几个必要的文件,就是:
2 A* {# H1 h" Y7 b! \$ Z  w  r0 Y  F4 i- m
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
1 t4 Y2 {9 _/ i. |7 e. h' ]: [+ ~# ?% e3 [# y5 |* S' U0 ~. p
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 2 E  N* F9 n  \5 i
" K7 N- ]9 e5 i6 J4 r! l  {" x) u3 Y
3、发表帖子的文件----命名为:say.asp
$ N( Z  \% Q& E% N2 M% G! i
, ^4 `7 L; b* M" H* ]$ P( W! b4、保存发表帖子内容的文件-----命名为:save.asp 6 P7 W4 H4 x! @7 C5 _% e

) q" T! I4 e9 f3 O4 A! |6 ~5、显示帖子标题的文件------命名为:index.asp
" b; k' x: V! T" F0 B5 D) U+ ?" e
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
) H& G, T/ y2 T2 r4 G0 }* k5 l6 G' r2 }7 g! m; S' b6 }
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
4 u" |+ I$ a$ \9 a% M, L! w- I5 ~& C; K! D8 q
二、各文件的主要内容 5 k3 _) g1 q" M( ?3 \

1 d: b8 Z1 H4 u1、bbs.mdb . h$ A$ e0 I  L8 q$ G
6 A# a# S# E3 y4 ?/ a
打开这个数据库,建立一个表,命名为bbs ( A, ~: Y- h% K( M( \) m4 V9 j  a
: s' q$ D! I4 Y6 c' S. b+ h3 L$ a
该表中有几个字段: - J# A5 L/ |  b9 N$ r: \

0 d2 O1 q  c$ b0 oid(自动给帖子编号),他的数据类型设为“自动编号”
9 N& ~! ]1 Q/ [$ [
- _" T& d( V) v. \) [* Cname(用来储存发表的作者),数据类型为“文本”
; E8 `- Y" y" S! v
' u  O1 T8 _0 f% F# Ititle(用来储存帖子的主题),数据类型为“文本”
# v  L- d; K4 p3 \) a2 c1 i* y/ z3 j9 D
body(用来储存帖子的内容),数据类型为“备注”
% c. G' P; L& X9 d. E- G9 H/ {2 f7 e* p2 x5 X& h
2、conn.asp
; E- m- B, |2 v源代码为: 2 i3 o/ k0 Q% o( t$ A
<% ' K" M* |5 I& \: B
Server.scriptTimeout="10" - \% L/ K3 X# P) T
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  v) o" g, n: |4 O% \set conn=Server.CreateObject("ADODB.connection")
0 u0 t$ @' J* A* j1 g& tconn.open connstr # H6 Q' C) n" L% P8 g
%>
, q$ F/ j* n6 B/ u( d) g* K3 e2 Q( z4 |
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ! ]" j2 q4 d3 C& x9 R( P1 x: s0 o; e

4 u3 M- A. ?0 O2 g0 D4 x+ o) ^3、say.asp & d4 D! I( k+ K0 @$ M% x4 p

  _+ p1 d; c! b7 K" D6 R源代码为:
7 Y" y! K/ }! @, O<form method="POST" action="save.asp">
' r& V; f) m3 q; W' L<p>大名:<input type="text" name="name" size="20"></p> 9 m9 @& J3 g( e
<p>标题:<input type="text" name="title" size="91"></p>
9 W0 Z8 Y/ k$ o2 E% F<p>内容:</p>
* U/ T$ c3 @2 F" _<p><textarea rows="11" name="body" cols="97"></textarea></p> $ V% J, p' e& a; Z$ F
<p> </p>
1 |. Y! g5 Z2 r" h<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 5 G+ z& k2 J- m, f  ?* \" M
</form> ) ^* [. a( j6 i6 W+ c4 T% g, \
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 ! x6 L0 t0 v) t5 n
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
8 d% V4 p$ w8 t
- l9 L# I5 D, e" o9 y4、save.asp $ c0 u1 S! p+ t$ w

' `; d, }& E) ]' j# W) D/ a( v8 F( }源代码: ) z; m/ f- |3 k3 b+ b
<!--#include file="conn.asp"-->
% s: a+ F+ B2 y<%name=Replace(Request.Form("name"),"'","''")
& U: u% H: p, Z8 Btitle=Replace(Request.Form("title"),"'","''") " c+ [* p( M5 q% w5 d7 _
body=Replace(Request.Form("body"),"'","''")
$ |7 e* q2 A- W%>
- B# m4 Y* w7 B" R<%if name="" or title="" or body="" then%> 3 Z+ V6 [2 ~* R& W& L% k$ e
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
% m8 ?% q  E8 A7 c* ]0 `5 p: M<%else%> * X+ e. D  M$ e# N+ @& G0 g9 A
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 6 A1 J; e- _$ y0 e# l
发表成功!<a href="index.asp">查看帖子</a> ; V' d% k. m3 L4 ?0 f* |+ @
<%end if 5 p0 t8 G1 Y' @: D$ X, d
set savebbs=nothing
2 q, |0 }/ J( _/ N% Q%> * P% w4 T7 \. @0 [! c) T# |$ H
3 M9 |5 O1 p% e2 A
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
# D1 A# m5 |. ~" ~3 Uasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
7 G9 |1 S$ `: W$ }) `接下来几句:
4 c& E- g! w9 x$ Qname=Replace(Request.Form("name"),"'","''")
+ N/ B6 n* ?8 `) g1 `/ W" {; Atitle=Replace(Request.Form("title"),"'","''") - K& m! Y; n+ i7 j; D1 H
body=Replace(Request.Form("body"),"'","''") 8 M( X! {  ]( U; K. A5 d

& n; T# i# W! Z+ L6 p“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 3 G1 K( q) D/ A. J  T7 g
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, , I5 h# M0 r2 _6 a) E8 M
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” : |& N1 l0 w. @& G9 n
就是把表单中名为name的文本框发来的数据储存在abc123变量中
+ q, L7 W; i7 p6 E4 B  i$ s. Q: Q" e8 r2 [
接着:if name="" or title="" or body="" then % I  ~6 A. I7 R9 W3 j. E
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 3 ?# F3 S- |- _/ ]6 Q
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
+ B5 j" j$ d0 k该语句属于html语法,大家都看得懂的!
4 j; L  y) S' Y2 \9 _' W
" {' `# W' w8 K) l6 x8 A2 `"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
! m2 x! w4 a0 n: p$ v  f“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 0 N% Q& U' `% `  q9 J' `1 M5 Z1 Q  P
发表成功!<a href="index.asp">查看帖子</a>”
7 g' T3 _. m9 O# p, Q/ O  L) Z2 Z' G7 s& ^9 z- O* z
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 7 @0 C+ H* f, p' j- ~
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
( d& [3 J% o1 Z& n  s0 x中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
( i4 _7 o5 Q/ ~# H* X9 U4 Vvalues是“值”的意思   ~0 i" s& j% \- A' a5 O. s% w+ F
就是插入向量name,title,body,向量用格式'"&name&"'表示 + \( i8 E( b5 D
2 q/ Z  V# X$ @# ?
最后:end if就是结束if……then * ?( K' V5 m5 G7 G' }8 n" ?0 ?
set savebbs=nothing可以说是关闭掉:
2 N1 ]6 Z, h3 kset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") 3 N1 m. I8 y! A/ J
7 v4 f$ L* w  W1 r, I' l' b9 U

$ r5 r9 x, N, X" d% R7 n5、index.asp
( @/ p4 e+ z) e: F' o% p源代码:
6 Y4 X3 w& [# [% J<!--#include file="conn.asp"--> & a" q5 W6 P: ?+ y! G8 ~
<b><a href="say.asp">发表帖子</a></b><br><br>
! m% l) X" W8 V( p" ^  p! x4 i# O<div align="center">
+ l! x6 p3 `/ w) X<center>
* J1 F! A' m% ?' {: M8 j3 G<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> 4 y4 M2 S4 B9 m* o  |# F
<tr> , _* M& c( u, z1 M+ m; }
<td width="17%"><b>作者</b></td>
6 p2 V$ b4 r  ~- g<td width="83%"><b>主题</b></td> 9 H1 p: }) s  W/ R
</tr>
4 z2 b0 X6 H' z* Z  Q# s3 u</table> / d9 s# {7 l- q0 ~( t
</center> . M" b( {2 y3 }. @! g
</div><hr size="1">
3 ~% c3 b7 n+ N; |<%i=1 + y# m8 a1 i6 e& |+ V7 a$ d) d
set showbbs=conn.execute("select*from bbs order by id desc")
# r' [8 ~( z7 c6 A$ @5 [- Q0 Edo while not showbbs.eof 6 S) R0 Y  P) w$ t) @
%> - ]; j$ T: X' z" e" B& F) g7 y
<div align="center"> & P. D, s  C0 e5 j
<center> , T; Y5 g2 x: t( y2 |! R
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> . {5 d9 Q# s. }0 h) W. s
<tr>
/ ~; O9 O/ `4 n" t; C: Q- t<td width="17%"><%=showbbs("name")%> </td>
2 P, x5 N' [( `, g3 i9 Z+ J<td width="83%">
7 ?$ s. |! |" n8 Z<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> # n0 ~% F9 ~8 D2 O! A4 e5 N0 S8 c
</tr> 7 ?0 V0 @6 t% @3 {& D. ]
</table> 0 A; u5 m: R7 s; P
</center> % r7 T6 u$ U; D' k% L' }
</div><hr size="1"> + k& e0 [+ l- A6 k  l2 t- H
<%i=i+1
$ q/ q1 r9 @5 v# E1 p; j0 ~8 Iif i>50 then exit do 6 F' s7 g# {$ e( P8 I/ g9 a0 q
showbbs.movenext
! X2 Y0 H3 E7 d( C/ L2 T+ M  CLoop ! H# ]4 W4 N' Q1 K' ^
showbbs.Close 3 {) a  v7 H. F  U' h4 Y( M
set showbbs=nothing 0 F5 V* [- ~1 h' M; g/ ^$ L1 C$ d9 f" W
%>
: C% a3 [* v: S0 g( e- u
* r  d) P3 A& y+ o: a$ `这个文件就不一句一句的讲了
" z: E, ]( \4 o& r* Y+ c# w6 y主要讲精华部分:
6 z3 f" ~) H, ~0 O3 o. I. Yset showbbs=conn.execute("select*from bbs order by id desc")
- Z1 w$ t0 i) |- J6 f意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
) O7 T  `# A8 s9 A" ?' L还有这么一句:<%=showbbs("name")%> & l! C# b+ g; }/ U9 ~6 k
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs $ a0 y0 }* g+ {' b& t
代码中的i=1和i=i+1 & }8 Z: o( s/ z8 [/ L; T
if i>50 then exit do 1 G7 [: G6 a/ o; K- |% C
showbbs.movenext 7 B$ I6 S/ c5 G0 S- `- s
Loop
$ x. [8 g) W& Q0 Tshowbbs.Close
# p( W5 j! r. S: x$ O3 yset showbbs=nothing
" p! W' b' L. @+ h7 g
3 R% U& Y2 q5 S, p( p; J这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 8 Q6 ~3 }' f2 S5 H: h4 H) h8 ?
if i>50 then exit do中的50可以修改
, t. [/ ^$ [' x5 P* {1 Z但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 % T+ w1 R- L% a# x" H
还有一句很有用的: + M; Y6 R' @* X% y* l. X7 B
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
! O; v' ?) v% ?/ U2 U- B7 u里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
( ]$ w* H& U$ J等一下在show.asp文件中就有用了 3 f$ w: R/ Y2 Y. p

0 R" q$ @; {- V5、show.asp 0 B) k, w: T3 l- ^4 X2 P
源代码: % ^; C& f! `/ y2 _% Z

4 }6 \) v9 a8 J* j  k) H4 N( S- ~8 p<!--#include file="conn.asp"-->
9 z) v" H8 L# e6 {- {<%id=request.querystring("id")%>
. D! \" a- e/ \$ M6 |<%set show=conn.execute("select*from bbs where id="&id&"")%>
( R0 `2 h, ~( o+ C<a href="index.asp">
$ y% R* Z# `; R<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
8 @) Q9 s7 r3 L, ]  J<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> ! G0 ^, z5 @4 m  o( W7 V& q6 n1 i* ?2 l
<tr>
- K; C0 x6 L; e8 w" @% I<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> # o3 g2 O+ ]' W2 ^2 U
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> - {$ E! N+ [! r3 Y9 e- ]& [
</tr> 2 z5 Y. b0 O- q, M# [# m' I
<tr> 3 ^9 X' Q, k2 R9 O0 K; G" r6 y: Y- Z: W
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
8 \0 D9 |& M; A. ?' k) ^" L</tr>   h0 A  O3 F& d: q
</table><%set show=nothing%> 1 {: r9 d+ v4 N' \
/ }5 l4 O0 I6 K
劲语句---精华语句: : Q0 ]$ B! Q) O" J) S; e
id=request.querystring("id")
! w+ m* z  I8 W/ G+ D. S在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
" E+ n! c! @% u) n' T9 Did=request.querystring("id")就是把地址栏中的id的值读取下来, 8 H" r) I/ v# f% f  l9 \. w
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, ; P% ^" }$ e, ]/ J) |
所以show.asp使用id=request.querystring("id")语句把数字读取下来 ! h( S7 n% Q# i& o# n, I
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") & r8 h4 Y- m; R$ g& c9 Z) y
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 3 J& G. c1 j+ f5 h; W% v, N
最后<%set show=nothing%>
4 i0 |1 L0 v' q# o* J# E2 E1 r9 K8 |4 }0 m, Z
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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