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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西  W  r* `/ E/ T/ h2 u1 @# y2 U
真NB..佩服ing .....$ d/ v- t: N/ i3 c' G5 u# G0 _7 V* [2 s
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。8 o! {* W; i1 h  _

2 g# [' H: {3 d+ A9 \同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
3 z: V" i6 p$ g. n! \  ]6 G
! U+ m3 w) o. a: O; M* P一、建立文件!
5 H" z' I# }. Q& E% u最简单的论坛也要有几个必要的文件,就是:
5 k# D' @; ~4 [9 R4 Z1 z3 h
6 O9 E$ g4 ?3 M/ T1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ' w7 n6 D1 k5 Z$ Z3 o# l8 ]; ~2 V4 n2 s
& _. ~) \2 M( i  j+ o
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp # g5 ~" q" s3 }7 W- n& E- G2 R' @

% F9 ~3 Y$ J3 N2 ]; t6 k- L# Z3、发表帖子的文件----命名为:say.asp
. ]/ E# ]5 Q: g$ v
& N: ?' G3 f4 V' a4、保存发表帖子内容的文件-----命名为:save.asp ; Y: X4 I! l+ U8 u/ T1 `; H9 H

$ J2 m6 U# c0 {( Y, w! D' S5、显示帖子标题的文件------命名为:index.asp 4 S0 I3 Y0 C, v

+ r1 c' C) B5 J( U9 S" z1 J6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
& ?1 w# ~1 y0 c7 s* Q1 [
( L1 f: H* m# {4 h* |建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
5 f+ d) h6 H  E. T
2 N4 N& X& l+ r6 W6 `8 U6 ~# U二、各文件的主要内容
, O" T* r, D5 i1 y% h% _5 |& p3 H* G- |
1、bbs.mdb % N0 `$ r) Z! i7 X& M

) S  T4 y; ?9 J+ E& H2 G+ y打开这个数据库,建立一个表,命名为bbs ! O4 u) b6 c- ]" o: \

% g0 z7 D0 c  Z  t0 O# K) ]该表中有几个字段: * W. f# p% {; N7 k) ]/ \; _! R) g

6 @' m' t3 {+ x6 }id(自动给帖子编号),他的数据类型设为“自动编号”
+ l  v; Q/ f. O: l
1 l; K4 ^8 K0 @3 Zname(用来储存发表的作者),数据类型为“文本” ( b# _2 b9 }$ E2 ^8 V7 f

2 ~' V- u  z$ d* _title(用来储存帖子的主题),数据类型为“文本”
' T3 s& E" ?6 f* G0 |* c1 G3 S9 v2 V: l" j# o: @
body(用来储存帖子的内容),数据类型为“备注”
5 D  N8 F6 ~8 k: D5 S+ ?6 ?" j/ B" ~, @7 r: i0 _
2、conn.asp
- s& L1 @4 X9 k, f. T( L* \$ c+ x源代码为:
) J! V0 J" W- r! Z/ J  v<%
5 v' i' a8 \2 B% u4 G1 ~3 `) R. G; FServer.scriptTimeout="10"
2 y( M& D  K2 kc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 6 o5 D8 V" p. v2 x: h
set conn=Server.CreateObject("ADODB.connection")
; m1 ?5 \3 n2 U5 Wconn.open connstr
) Z( K% K8 V- J: J# L" ~%> + ?2 j: s0 n% {" k5 J1 {1 N: x" p% X

6 k7 F2 k: [/ E这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ) c- Z: H2 _! L  s& `4 L
. m" A) \& B1 y) O6 O: P4 Z
3、say.asp
* I9 }8 l  S( E" H8 ]" y" K2 ~; G5 x" H4 d$ W& _2 o
源代码为:
0 M" a' @0 K* i% T) k; _" u9 `<form method="POST" action="save.asp">
8 D+ x. l/ [4 }<p>大名:<input type="text" name="name" size="20"></p> 1 {' ^: A8 O" J$ a+ N! x
<p>标题:<input type="text" name="title" size="91"></p> ; O* J! `5 {+ N$ X) k6 K: T3 u9 Y
<p>内容:</p>
' G% I: X3 b. {4 u2 i) _+ q<p><textarea rows="11" name="body" cols="97"></textarea></p> : |2 y& W* u& _, u- v  `
<p> </p>
4 I5 S) I* @) k* g) o- \9 B/ \<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
/ L( T  G! h0 m( ^5 D+ l, ?& W9 w</form> ( c, ^' v' _1 M$ w' N3 q$ G
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
# D+ q  y) T* |7 Z" \/ w不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
" u: `7 L8 M; m6 y
4 c, O" M! P& v2 ?( B+ P4、save.asp
4 J5 a% {+ M- [. Y
# Y+ D- b, X; `  C% w  c- X/ N源代码:
2 @) m# W, J: \8 @<!--#include file="conn.asp"--> & D/ z: Y  z) f* B- T
<%name=Replace(Request.Form("name"),"'","''")
! G$ Q# o- v+ H8 J, [title=Replace(Request.Form("title"),"'","''")
& J4 T7 N' Q; j- Q6 _body=Replace(Request.Form("body"),"'","''")
- U# D2 F5 r" X  c7 u& s%>
. t1 A- \, |( T$ I<%if name="" or title="" or body="" then%>
7 X0 M7 r" s% Y1 ?  g请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
6 J9 m" a6 g5 o<%else%>
, T/ y+ C; O9 V0 n' s7 u- L<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
3 u+ Q2 P/ \( r( Z发表成功!<a href="index.asp">查看帖子</a>
, {) i2 N$ }7 k# f, \" g/ Q4 A<%end if + m- B1 [) g# n  ?2 B0 o) Z
set savebbs=nothing
( F6 U. r# ^3 ?7 c  |%> 6 P4 S9 T+ K$ L7 U, |
$ S7 S' X) y  ~, `1 E! q
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
3 |  \+ U( t" y% ?asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, * j! P% V  l8 p: {0 s5 W% ^& O
接下来几句:
% c7 C! ~1 h  \+ k! Cname=Replace(Request.Form("name"),"'","''")
3 t! H# X+ c7 O+ htitle=Replace(Request.Form("title"),"'","''") / K  H+ I  T7 Q5 a
body=Replace(Request.Form("body"),"'","''") / ?& M# `4 n; e( B0 T2 y
9 _) m7 f1 }2 K
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 9 F' c+ n+ G& @/ E
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
! H& c3 a0 M7 i0 M% z# ?2 _/ R如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ' x. g4 p2 p4 u2 T* m, F0 K
就是把表单中名为name的文本框发来的数据储存在abc123变量中
' ?  y0 C5 o7 H- A
( b! W  |: ^! K接着:if name="" or title="" or body="" then
  M% s8 S+ g0 H( g$ ~1 I" l" e; R+ ]判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
  k4 R) k  t/ H9 V. s5 _! Z“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ! ^$ _: X/ Y$ x( F' V
该语句属于html语法,大家都看得懂的!
$ {3 P$ c4 i8 b% n5 q- M& |; k# S! F# X# v3 t
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 1 q+ q  [6 f. e7 D. J1 O: O
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> 2 B" ~6 k) a: I
发表成功!<a href="index.asp">查看帖子</a>”
" Z' F: U2 ^  M! W5 {- G4 A, y2 U& }3 F" U
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: ) g7 L# u$ t9 z' l% a% Z
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
' G# _2 O2 S9 c; d2 R" J; Z中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 4 t( c& v1 D0 ?+ R4 Z% M
values是“值”的意思 7 p8 D/ `! g9 G5 n( a- U
就是插入向量name,title,body,向量用格式'"&name&"'表示
1 f7 L: [  U/ H! C. `+ A
7 g! W* p, ], j7 ^* ]最后:end if就是结束if……then
8 T6 l/ y! W/ {  I, _set savebbs=nothing可以说是关闭掉: - K) Y% Y% Q6 K2 E
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")   i9 y7 _8 Z$ b& h
2 _) O/ P& d; s# w0 C; m6 w" }

3 t3 }* E% E. `8 T1 P! H5、index.asp , [5 [+ J# M5 Q* N" R  G
源代码:
. Z  H3 f$ n& s; S1 A2 Y# h<!--#include file="conn.asp"--> 0 d$ ^1 _1 {: n/ L0 W: V5 q
<b><a href="say.asp">发表帖子</a></b><br><br>
: ^) }0 |0 y. X  N<div align="center"> + r! x6 U7 y" `/ o. Y' I
<center>
. b7 H" |0 N3 h<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
& d! B$ E( o; T. k# ?: p<tr> ' g9 W) e" \$ Q/ a8 M. [
<td width="17%"><b>作者</b></td>
/ x6 M4 G6 T* C  s4 ~<td width="83%"><b>主题</b></td>
8 N3 c3 R3 f  i</tr> ; @6 N0 I  I0 G5 c  n* t: _" ^
</table> ( q7 `$ {' ^$ d2 o- A( m( M
</center>
. z/ ~4 L( G1 R; V, L</div><hr size="1"> 2 ~& [: Y4 o6 c2 B4 z9 Z. {! v
<%i=1 ) j8 @4 l, f) O5 O& P' m
set showbbs=conn.execute("select*from bbs order by id desc")
) {; B& L. ]3 Q7 e: P, M0 P+ I3 r0 Ydo while not showbbs.eof $ G9 r1 d# t$ d8 ]. _
%>
7 B1 r: x" `' {) X& J( n<div align="center">
) R& o" h% `1 _& s$ i% Q9 ^<center>
& X* a4 L6 x# B; M- }$ d<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 3 T" K  ?  D3 P. f! m- h
<tr> 1 r- _& f5 m8 t0 [5 l9 _
<td width="17%"><%=showbbs("name")%> </td>
& Z+ d$ t2 O7 B/ i' R* Y<td width="83%">
- T- Z* q* {! S<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> $ M' v/ t) d) w% f% w0 \8 h, K
</tr>
, y: r/ Y4 O9 c( d! k1 k</table>
- z7 a9 A( c/ R* Z+ a</center>
; E! ~5 x0 m9 Y# Z</div><hr size="1"> 0 Q$ Q. p2 R/ p9 V! l( `+ @7 `
<%i=i+1
4 \/ I5 \8 k8 M2 W# Dif i>50 then exit do % Z( U) a. ~3 z9 H& o) g
showbbs.movenext
1 V# ?# ?  o- `5 GLoop ( T& [: z; o( M. F$ G
showbbs.Close 3 P" ~3 }' X5 D& @+ v
set showbbs=nothing
  d5 p& Z  ~/ B  r6 j%>
% j9 D+ w( [$ J5 k4 H. E9 [6 Y8 a0 k! b  Y. I* A5 C4 m
这个文件就不一句一句的讲了 ) K+ O7 q" e# O3 B, F  Q& w" t
主要讲精华部分:
6 c+ @- D: T- M, P5 J/ Jset showbbs=conn.execute("select*from bbs order by id desc")
. g9 y1 U, Y" d- N: [, [意思是:向数据库中的bbs数据表查询数据,并以id排顺序, - {7 W4 v4 h+ h
还有这么一句:<%=showbbs("name")%> ; Z7 w+ z$ X0 A- S$ P
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
5 @: _4 B' H: ~. l' t代码中的i=1和i=i+1 2 b) Y- C& Z1 Y( S
if i>50 then exit do ! R0 ]# g! d% X
showbbs.movenext - e8 I. Q4 L0 h3 p3 l: N
Loop 6 P: O" i; A) o! K" z2 C
showbbs.Close
; }4 n" M7 [$ T" X& Rset showbbs=nothing & u5 C8 G/ X7 h: \; K; }) g

+ ]" [' o& [0 \8 U' W! G这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
; p8 c/ e/ f' G/ A- [2 tif i>50 then exit do中的50可以修改
. Y- E  a9 V3 D' `  I! X& W但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 1 T& b7 e2 ?1 B
还有一句很有用的: ( M  L& R% m0 u/ V' \  o
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
1 l0 S5 {5 J1 S1 A" Q里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, # e# z7 @+ {7 \) C
等一下在show.asp文件中就有用了 * }5 Z2 f! ]/ z7 w4 f: R
0 g- K) x6 }+ @6 G% k- x
5、show.asp
5 }/ E4 s( Q% B. p源代码: ( _0 a0 j( I3 j# @

' z& ]5 G1 m% w/ A' w<!--#include file="conn.asp"--> : a! q* o; W; x& [1 I
<%id=request.querystring("id")%>
7 l- E0 Q6 {3 ]( T  _7 n* l<%set show=conn.execute("select*from bbs where id="&id&"")%>
$ w& ?, }) `0 l6 X! C. W+ D! u<a href="index.asp"> + Y  s; I  k2 Z2 r3 c4 q
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
% Y3 a* r& h# \3 E' u0 {<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
( b& q, I) g, ?2 Z$ M* H" K<tr>
. k6 u7 {5 b" X& I<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
! F. M! I4 K$ `$ p( }2 J7 b3 v<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 9 V. T: P) P( m6 a
</tr>
  [3 W; D0 [" c& U) C<tr> / A& R, r) _( A2 B
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> # e& A$ a9 H8 P# N$ U
</tr>
# ^4 n, O/ j! I8 |- s- T</table><%set show=nothing%>
2 W* J9 `& j3 g1 `- q
( A# s7 W9 K& I0 p: R劲语句---精华语句: ' k3 U* L8 Y8 X" a7 G/ R6 [2 {
id=request.querystring("id")
8 f+ u, m9 _5 b& T/ w在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 8 ~! l, l/ S) y; o. }5 x
id=request.querystring("id")就是把地址栏中的id的值读取下来, 4 W( g: ?; R# |' Z4 ~- i
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
( V% o) s; W4 v) c* i) a所以show.asp使用id=request.querystring("id")语句把数字读取下来
/ c) j1 D$ Z, o# {于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
6 w( g+ u+ p  g% [  Z/ F向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
/ u9 `! V& L5 k3 l: B% o7 P, p最后<%set show=nothing%>
' z1 P& `& q& }3 D5 I0 m5 L
$ Z( e$ R6 p7 {& {, p好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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