返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西7 p3 Y0 z% b/ G( l) C" I
真NB..佩服ing .....& R7 n* z& F0 d) }
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。0 ~: d# L9 c" g

* t+ a3 S9 y) p5 a- h+ |0 x3 s! d同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
' D( H! y) N3 {% }9 v+ ~
3 n, C' O# a1 Y  ], }一、建立文件! + n: s8 I2 ~; \! I2 {4 N6 K: V5 c1 R% y9 `
最简单的论坛也要有几个必要的文件,就是: & k3 n) v; m1 d* _

5 ]  O/ C4 b2 p. L) P6 H1 F1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ) n- v. C) |# g; L; P

8 [  D9 F. o% a) h+ S2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp   L) t% ^( ^+ ~% v
9 i( O! l6 w  |& d* G8 W& L
3、发表帖子的文件----命名为:say.asp 8 |9 _" b* G3 T: W4 u! I: w
/ o( q- Z6 U' e. P; R
4、保存发表帖子内容的文件-----命名为:save.asp ; b$ r4 T$ n. m" F  O( @3 Y5 ?

2 |, B) r; @4 x5、显示帖子标题的文件------命名为:index.asp
. M5 n; e% v  M8 l& u6 c/ Q; A0 X7 D/ P' t# i" e1 H; g% F7 k) m
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
+ x: e1 `4 B8 W2 {$ y9 m* a: ^$ @
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" 3 J' J6 G7 A" @
9 R& v  u# ]7 h' k& b+ P3 P
二、各文件的主要内容
- F% w1 b- O* ]! _5 A- s7 R
) ~5 ~0 [) ~9 w: F0 X1、bbs.mdb ) M* Z2 J' a' _( F8 I
3 y+ V( z$ [0 I4 |5 {/ @# o
打开这个数据库,建立一个表,命名为bbs   w# v# S$ ~% I$ t8 W
! E& M4 ]' M4 c9 H% _
该表中有几个字段: 3 E& H9 p( K* V9 B0 F" T& _) j

. ?6 i( k6 Y; }0 x7 zid(自动给帖子编号),他的数据类型设为“自动编号” & X0 N8 ?, K( ~9 E- w9 X' M. `5 S
4 h/ l/ k. `* o2 B; f0 P/ {
name(用来储存发表的作者),数据类型为“文本” * u: r, i$ o5 {
2 D! V, J1 S/ H/ q3 z4 k
title(用来储存帖子的主题),数据类型为“文本”
: f% n, v+ G. a& M1 H# a6 N7 D) M+ h  N- k* |- W4 ^
body(用来储存帖子的内容),数据类型为“备注”
1 c  |4 ~- A. j4 N2 \
4 Q4 O9 {1 M7 K7 {" B' H2 J0 z2、conn.asp 9 F% ~1 j5 u$ P) ^4 C
源代码为:
4 @9 m3 B! s" W) e6 R<%
9 v5 a8 l9 D4 g; i- qServer.scriptTimeout="10" 6 N) i. p: z$ x8 ^' D3 B
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 2 n" p) [" }& U& v2 ~6 H' {2 R
set conn=Server.CreateObject("ADODB.connection")
7 n  y% u% _9 T( [* dconn.open connstr 3 {! X2 E7 e, O3 h- ]# ?& @/ V. t
%> 5 R3 t$ {4 t" d3 Y+ o  U, v

* |- s+ i8 @2 p7 S: j/ Q这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! # J% `+ J- B& S, Y
9 {4 N; t5 }# \5 g; y/ E
3、say.asp
& K  U6 Z$ w. N7 j' \2 b' w" N5 ]  T6 @2 r. \
源代码为: * n) U2 t3 g; ?1 d
<form method="POST" action="save.asp">
% e& b. R, s8 f$ J* }<p>大名:<input type="text" name="name" size="20"></p>
8 }  t0 |; B" h<p>标题:<input type="text" name="title" size="91"></p> 0 F7 _+ e( v! F3 W) a; J
<p>内容:</p>
0 U+ Z% o6 t0 [6 ]* n1 a<p><textarea rows="11" name="body" cols="97"></textarea></p> ! G1 ?" d) h& V* Y! e
<p> </p>
: O. B8 x' t1 u, Z$ b<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 2 N2 D2 K! m2 `5 A
</form> * \/ U8 D8 i$ g! P+ R: ^1 C
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 & T9 S+ R' Y& {  A7 D+ p
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
! u$ m9 i6 n7 ]$ S- Q
1 a) W/ U8 y9 I; i' V4、save.asp 7 u' f' v6 T) I3 G

: g. m( ~! Q+ a! G* k8 Y源代码:
% }) X! R0 S. [5 `& T) \<!--#include file="conn.asp"--> 7 F+ E( G3 Z2 d, ?0 Q4 e
<%name=Replace(Request.Form("name"),"'","''")   [! z# y, j' W" P
title=Replace(Request.Form("title"),"'","''")
6 [, U3 }( N" `7 ?body=Replace(Request.Form("body"),"'","''") ( i  M% H, m% q% x; ?% h  @
%>
* T4 p& G0 C0 O9 d9 P<%if name="" or title="" or body="" then%>
: `( d/ P% d( S" L0 M& g- p" a请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
+ U7 }% e; n! t; I6 C<%else%> & n' N+ [, t2 U/ k' e7 S1 j
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
2 I3 m' E- \  U& j发表成功!<a href="index.asp">查看帖子</a> ! w) r+ G# z! u7 }7 ?
<%end if 9 W2 T$ k7 E$ u3 n
set savebbs=nothing
/ a* m7 q  D5 k# }  f%> 2 D! d- t& j5 H% W( H6 x
+ d5 s$ n9 d+ x2 v
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
- K* c/ }, Y) Jasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
' r6 X+ Q$ `" c5 j' {6 j" w, D- o" L接下来几句:
+ W+ E6 |2 s; Q% o: [name=Replace(Request.Form("name"),"'","''") / y! e2 L& J5 L! i2 k+ \
title=Replace(Request.Form("title"),"'","''") % N1 `+ s, ]: r# H) x; T% u
body=Replace(Request.Form("body"),"'","''")
5 \, T/ a4 Y2 z7 Z* s; t$ ]/ h* D& v, m9 @
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, , D7 h! U8 O5 e. k( a
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, ) @* K) D9 h" T4 m' ^: Y- f
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
1 D3 ?! C4 O3 u# T5 D  ^就是把表单中名为name的文本框发来的数据储存在abc123变量中 5 G% p% @: q1 J3 g6 S& `

( Q  v" E8 L$ p; v! b接着:if name="" or title="" or body="" then
& `- N" F* u. `. C" ^判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
. t/ D+ B0 C3 y3 a2 y( T3 B“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
; T7 C! W) ]% [5 Y* C4 x! o该语句属于html语法,大家都看得懂的!
/ N1 ?  N+ x# l7 J9 b5 e; \
+ [' R7 M) y. U1 L1 T* F"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
7 P8 `; s5 I9 {6 s! x# x# H“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
4 W. Q4 k: G7 y$ f发表成功!<a href="index.asp">查看帖子</a>”
. }' n3 c$ T. d) l! O" E9 |: T/ B4 U  ?3 K3 E+ Y+ ]! l: l
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: * m% r6 S* A6 K) i/ |
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) - u* K' N9 j  r- T2 B4 r3 M
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
0 `9 ?) J8 [; ?2 R8 L" k# ^! q4 tvalues是“值”的意思
$ {$ Z  o7 O: n* S( S就是插入向量name,title,body,向量用格式'"&name&"'表示
6 W. i( \8 Y  e; B  S- D
( Q/ e/ @, H6 D* z8 q  K; J, @最后:end if就是结束if……then $ W7 x3 k" W+ M/ `( w% ~; [
set savebbs=nothing可以说是关闭掉:   i* V( C4 l; E
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") / q# v  A8 h' Z, ?. o
0 S' W5 z4 o  ?: ^' y" J
3 f2 W8 ^* C# a: e7 D" f2 d
5、index.asp - l4 V8 z6 a2 }- j7 s4 K
源代码: 1 s& M' {1 `8 s1 j1 y( K
<!--#include file="conn.asp"--> 5 m! P" y6 k1 D
<b><a href="say.asp">发表帖子</a></b><br><br> / _, }9 q9 b' M
<div align="center"> . R# ], h0 Q2 B/ T4 Z9 z3 R
<center> ! d: p. R" M; y" |9 o
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> / v6 D, H! I) W# P, v
<tr>
$ `' J7 X5 [1 v<td width="17%"><b>作者</b></td> 7 X( S2 q) u0 j  C
<td width="83%"><b>主题</b></td>
) h% V) O7 P9 ]- Z1 V2 O/ I; C0 F8 m</tr>
; y$ n1 q( L, o0 o( W</table> 6 ?; T& |  g4 H0 F) ]- x
</center> 6 a6 D. ^! x6 A6 Q3 S% \
</div><hr size="1">
0 N- ]$ u2 ^( j9 d" J, ~4 r5 Y# C<%i=1
  i$ P3 x9 H! }" f/ Y/ c$ Z8 w0 Tset showbbs=conn.execute("select*from bbs order by id desc") 3 k7 l0 O, Z; Y. u, y9 n
do while not showbbs.eof
6 ~" E6 H2 _) E; |%>
) [& y/ M2 _  f/ s2 @<div align="center"> % {: K) x" u. C: y/ i6 _3 y" {
<center>
# G4 Z, [6 a( W<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> # g$ j+ I2 H, U8 _8 B' Y
<tr>
5 x! {4 S+ S' k' l" K( v; s<td width="17%"><%=showbbs("name")%> </td> 7 c- T- P7 C# {* B- m4 G
<td width="83%"> 8 \( u2 J# w$ {5 ?* v( L5 a. u# ?
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 6 |% _6 ?: a' w9 a
</tr> . G3 k1 N8 T0 ^3 ]9 g
</table>
: _' `$ [3 n9 l  q" L6 _: J4 o</center>
4 `: P7 U8 K8 Z</div><hr size="1"> % ?! o3 [5 ^- I9 m
<%i=i+1 ; A% _# d" I. p( `# e. I( [& {
if i>50 then exit do
/ T. w2 p9 Z) D* B. Sshowbbs.movenext 5 {0 d! S  r  _$ W/ ]) h
Loop 4 D* G1 p" J1 t# {' ^) H
showbbs.Close / l% ~4 b! J1 f6 c: K
set showbbs=nothing
1 o2 i, n, t# O5 F4 P  [%> + [! \1 D5 \! j6 N. v

4 e  c9 D8 C' I( A: o( S这个文件就不一句一句的讲了
+ }9 v+ @; y; _: z9 G- |" p+ k+ w4 ^  j- i主要讲精华部分: 6 j! p$ I5 V/ n5 B6 P7 s
set showbbs=conn.execute("select*from bbs order by id desc") 1 i! E4 n! k$ M+ s3 G0 S# [
意思是:向数据库中的bbs数据表查询数据,并以id排顺序, 7 p$ b4 K7 E8 w
还有这么一句:<%=showbbs("name")%>
7 q6 n! I# v3 M6 W就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs / p5 @0 r0 Z9 {$ l. X# k; [
代码中的i=1和i=i+1 # D* [( q0 D7 T' I" c, w# \% w1 s0 Y
if i>50 then exit do
: f0 _9 i+ d' ^2 H$ |9 u, ]% v  cshowbbs.movenext
9 e8 t$ P, ]4 t, o7 `0 P* P& YLoop # }8 g" ^. Y) ?, F; i. Q7 N
showbbs.Close 9 F7 t  F: |; _# |* S1 u
set showbbs=nothing
$ R1 a" R* P0 c* i' Q: }4 O
  ^+ i' E0 G, C' T' C2 Z/ t4 G8 W这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
! Q# p" {' K6 z2 z9 Yif i>50 then exit do中的50可以修改
: Q# j0 P. i. ^7 k- [0 C/ g但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 2 h* D! X# L, j( B, c+ g# P
还有一句很有用的: $ L, ^/ ~; i4 C% x
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>   w. d$ {* g  `2 I: D; Z& H
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, : s: z. l+ z' g* o4 i2 k
等一下在show.asp文件中就有用了 8 W4 Q4 k6 V  {& J# D) n! S. ^
) ~* k( F9 m2 R0 r) R3 q
5、show.asp 0 M8 u4 r$ Q1 m/ U% s
源代码: ! ^; D4 D" V: [7 f

; N/ M/ U6 m4 Z8 B- h# [<!--#include file="conn.asp"-->
" g/ I4 I" G! e# F4 Q<%id=request.querystring("id")%> 3 T+ M9 ^; h$ M+ P% E
<%set show=conn.execute("select*from bbs where id="&id&"")%> 7 ~2 d: ~3 ?. z: t. I8 c  @7 g
<a href="index.asp">
% G& y: C) C5 \0 j<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> 5 ]2 E" a# e! J
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
( H$ t- A/ g, _" B<tr> 3 W$ Z- X  i" g0 f8 K( v
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>   _/ R( B* u0 s: o
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
$ L' f, @* ~; _, _- z</tr> ( C6 y( N4 ?  Q
<tr>
1 U! `; L( ~  c, A<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
! W1 f/ Q( a6 r, x1 F</tr>   A! e& Y6 w- Z& `+ _2 h& W
</table><%set show=nothing%>
# q4 d* K" U& N$ u4 b( m# P8 j2 Q; H6 d( H) a
劲语句---精华语句: 9 V9 m5 _- i8 W
id=request.querystring("id")
' y% N9 K0 @' o在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
# s! f$ T- n* D9 Xid=request.querystring("id")就是把地址栏中的id的值读取下来,
: x3 g( k. ~- p  L) `+ x! z因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
# t. y; Q! E" m* o8 m0 p所以show.asp使用id=request.querystring("id")语句把数字读取下来 $ D9 Q$ x0 H! L: `
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
) ]- A6 t) `, p0 u2 T1 k向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
' B5 W" \$ k' H1 H  I最后<%set show=nothing%>
: n: E  _* I+ Q
* r% W' T7 F+ p" }1 o好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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