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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
2 A6 l" N* H8 H% Y" o真NB..佩服ing .....* O, l+ \) m, \) o
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。& j) E  r- s/ j! Z& ]7 e

7 a0 T+ U8 y! q8 g% w9 t' M& X同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
* P  ]6 s8 d: X# f) K
! q2 R. D3 |. ~" w一、建立文件!
/ d- R0 D& t5 u3 J( S  N7 A最简单的论坛也要有几个必要的文件,就是:
, c6 @0 X2 M2 i: U$ a9 I7 K7 w
8 A3 J& b3 M# L9 A) n% H1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
, Q& J. s2 i( ~7 y3 }! q! j3 z2 N6 O8 }# ^
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
4 {0 @: H" }  m$ Q# ?+ i
# A; A: ^% j1 ]5 h) L4 g" `3、发表帖子的文件----命名为:say.asp
4 r3 I* m7 C$ O" K. |! A/ [/ `- _6 i8 i9 m9 K, D$ [
4、保存发表帖子内容的文件-----命名为:save.asp ' {# ^6 W: L, q! z6 `, I+ _8 y, |& B

  g6 M6 g% @' i& k8 z( P7 p+ Y: h5、显示帖子标题的文件------命名为:index.asp
8 Z  D0 j. }& D2 M6 k) V8 _% \* N" @6 ~  [0 w
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
- d/ j2 {+ m' i2 h. m3 }7 K  q# M- q* w! A+ p& P8 f0 ~3 M& L
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" - W+ l( ]8 w' r: v9 }' ]

/ e# D' M' l# {6 V1 z$ [5 E二、各文件的主要内容
+ I; h' ~( H% ~# l" J) ]$ P/ o9 I* j0 y: u3 L* N$ F$ y
1、bbs.mdb
  k6 a6 m1 E+ F* h0 i% j2 P
  G$ O7 k8 x- q( L0 ~) y打开这个数据库,建立一个表,命名为bbs
) G* F9 n0 B/ J' }0 G  e4 h9 F0 W$ D# R9 m/ U1 \
该表中有几个字段: # T7 [* K. b0 v5 Q1 @' ~
7 C; m) v, f: m$ J
id(自动给帖子编号),他的数据类型设为“自动编号” 7 k* J0 l3 Z' u5 s
8 {( q2 N+ L9 Z* @! B" G# W4 S
name(用来储存发表的作者),数据类型为“文本”
5 p7 `" y1 O& x1 D
7 \( c" {7 H# ^/ \  ^, F$ Wtitle(用来储存帖子的主题),数据类型为“文本”
' W+ O% @6 n  a+ z( J- [
1 n3 c6 C  Y8 ybody(用来储存帖子的内容),数据类型为“备注” & |  E1 J+ g: k2 ~
) o# i- `7 x. Y
2、conn.asp
) ]' b: s2 _1 u/ Y4 ~- ]源代码为:
* z% P3 d/ J  j: c" U# ~% C# I<%
; \' z. P' f; xServer.scriptTimeout="10"
* ~5 P5 `& S# w) w0 l" Nc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" " t% T$ t! `* p" G4 k
set conn=Server.CreateObject("ADODB.connection")
; O9 C5 [+ f- J8 ^( `5 bconn.open connstr
9 g. z9 _* x( e%> & ^* {; v! ^7 f

% s, @, L0 C/ f; g6 W" z/ l, d8 r这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
$ c0 s8 e6 S- @7 m& c, K2 A
& ^* H! b1 c8 w* d+ L3、say.asp 5 W& n8 e3 o% a+ y$ Z  I
2 d- ^! |% A$ R  W9 W$ P- T/ }
源代码为: 9 H4 z, _4 u1 c. V" i! v6 ]" A6 l
<form method="POST" action="save.asp">
; o8 G+ X7 p* o# J<p>大名:<input type="text" name="name" size="20"></p> % X* V( m% j, X- x
<p>标题:<input type="text" name="title" size="91"></p>
3 H: E" J$ d" C& ]<p>内容:</p> " C/ e4 ]9 e% k' @- U3 u  a
<p><textarea rows="11" name="body" cols="97"></textarea></p> 0 u) ^, k. k3 F
<p> </p>
4 |6 I1 L: V' V% H/ J4 I# c<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
4 m$ _( I9 U6 F+ G* ~2 d8 A& m: w</form>
0 r3 w- h3 s8 o( h" d大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
/ e7 f% N: G* [' f, ?不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
) s% _! T! w5 H3 {3 W- y, a6 E2 v! V
4、save.asp ) S8 Q. m5 x) \( E1 k, |% c

0 H- G  n  ?7 [1 ~! A+ P源代码:
3 c! Q& E% X: S% A/ L<!--#include file="conn.asp"--> 9 \" ^: y$ L1 B! J  V6 n0 z
<%name=Replace(Request.Form("name"),"'","''")
' E9 s" q4 Y! ~- ]9 Atitle=Replace(Request.Form("title"),"'","''")
- L. e" I6 p4 i- Z' |body=Replace(Request.Form("body"),"'","''") . W+ o, ?: {4 t) ]7 `' M' {" h* R
%> & C; C6 E  b1 B: E: u
<%if name="" or title="" or body="" then%> / \& T* Q- R! C( D( W7 R
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 0 l) {+ X, |2 B+ @" I3 G
<%else%>
6 Z+ K' Y6 }# C5 N% i<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> * D6 F9 a! e7 g1 W  F4 p1 F8 J' x
发表成功!<a href="index.asp">查看帖子</a>
. P1 {9 X3 J2 s3 m4 d<%end if - Y7 K1 m+ B5 }2 n& C$ q. D; d
set savebbs=nothing 8 |1 W5 y7 e4 G1 j1 o  g0 _
%>
, O: r( k1 U% e* M. q
" n8 f5 ~  P' M! ?第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
3 l% O" }+ {2 g8 d" r" H0 \# Aasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
# e; d( W+ O- ^  D5 Z接下来几句:
0 c9 {6 [0 X: W7 ?+ D5 zname=Replace(Request.Form("name"),"'","''") 9 _+ K3 G5 S  j4 P$ ?$ Y2 l
title=Replace(Request.Form("title"),"'","''")
* Y0 C) x. v4 X. j0 e" Ebody=Replace(Request.Form("body"),"'","''")
, i% j6 K9 y( W7 w1 Q2 V" G8 Z
  a; b/ G4 T; }( M“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
3 v, N% m" Q' E2 W5 Q而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, 9 i" O! s- ~9 s/ b& B
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” % O3 J8 h, Z* \# `9 b# Y. s4 D( s
就是把表单中名为name的文本框发来的数据储存在abc123变量中
8 J# b# W9 z6 j& U! v0 ~4 S
6 {; Y7 d' C# @* H+ i; h2 s/ S接着:if name="" or title="" or body="" then 7 F: @6 J1 t5 Z: H& J, B# L
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: 2 ~( V8 W& Q, @5 J1 w+ z
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
! C, G5 s/ ~, E% L该语句属于html语法,大家都看得懂的!
) V/ q% M9 i. p9 ^' ?3 `2 j2 U
5 k, G7 A% N  H) d9 o& k) n"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
! a" Z3 ?/ c/ |“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
5 B5 d6 r! s7 O% p. |, `发表成功!<a href="index.asp">查看帖子</a>” ; e, f2 Z6 \7 S0 s5 G1 p
( i$ _6 o+ d- u) o, G2 w
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
9 q6 u2 i5 Z5 R7 I+ kinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
0 F& d7 u6 Y$ O/ K/ O$ h中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ( T8 `7 I0 Q* ~
values是“值”的意思 ) q# z. j5 f8 F# U
就是插入向量name,title,body,向量用格式'"&name&"'表示 2 m5 @1 w9 t/ @: G+ D! Y
+ d. U  O: F! Y: \
最后:end if就是结束if……then
2 C9 }& C: x- E. j7 H. P$ Mset savebbs=nothing可以说是关闭掉:
+ g, t+ ?% j* f6 n" vset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
6 [& @! a+ a1 o2 S) Z1 C$ c
& c/ O2 u: ]1 H( E7 J& T0 O) f
9 \. ~9 W* S- p+ Y7 ^5、index.asp / L7 M' i4 ~! S* n1 S0 ?
源代码:
9 h3 j* L7 K7 z4 c& v/ `<!--#include file="conn.asp"--> & }/ z, ^6 d* \7 Y/ {* B. J1 H
<b><a href="say.asp">发表帖子</a></b><br><br> % X; W! ?7 K2 X3 J
<div align="center"> / i5 g; k/ u5 G5 W
<center>
# `  U, G& X* S. [<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
7 z9 N9 T; N% [5 q7 X  w<tr>
. I, t: v1 _3 q( u& X- R! h<td width="17%"><b>作者</b></td> + H# _1 T" S* l7 K5 V
<td width="83%"><b>主题</b></td> 0 `! o/ P1 P! D
</tr>
( ~6 j2 Q& w5 e) |# l" @, F</table>
/ `3 v9 z% R/ J# G' @& F1 E</center>
: L: i. O6 J/ X+ A" S( [8 ~5 J( i4 |" I</div><hr size="1">
+ @: ]$ U3 q! w; S<%i=1 # m( {2 x+ w8 W
set showbbs=conn.execute("select*from bbs order by id desc")
! {3 E7 N' k5 c* U( ~3 jdo while not showbbs.eof
  n0 z* `% U$ Y( K: q' M%> + v( ]7 p# L6 K' T
<div align="center">
# N) c2 c5 D. `% D" k8 x4 x; v<center>
/ U& S/ c- R7 l3 y7 t" T  y  m4 u" T<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 9 x8 }- r& N6 d* {/ N
<tr>
" O1 Z0 e2 @5 N<td width="17%"><%=showbbs("name")%> </td> 5 v3 Y! P, y* ?! h+ U) U0 D$ t
<td width="83%"> " A) y  e* q9 w  J
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
5 A8 Y+ [! |2 o8 l, P. H# i</tr> 7 h0 C9 v1 ^/ I
</table> ' {; j( m/ a6 \0 m0 N, r
</center>
" b4 ^4 _% v, E* l' R</div><hr size="1">
2 |" e+ J, h2 m1 `$ m( a: R, M<%i=i+1
: Z$ T8 n6 _% f+ N; w; yif i>50 then exit do
+ f5 D! {7 m3 @  Nshowbbs.movenext 7 T" t% l9 X' O8 a$ n2 d
Loop
( ]" a$ Y/ ^5 L- G( B6 V1 qshowbbs.Close   \6 Y- w! A7 u% D9 h
set showbbs=nothing 2 K* a/ O3 Q/ Y% c
%> " G7 N) p: L2 u
$ h9 z, r5 f  g. S3 t5 d/ J
这个文件就不一句一句的讲了 5 k* q" [& _# n0 P$ b; |2 H2 j  I
主要讲精华部分:
8 u& |2 x" _4 X4 P8 Pset showbbs=conn.execute("select*from bbs order by id desc")
2 r+ \: w* M* Z8 ~  D) s意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
- L/ ?+ m5 U) P还有这么一句:<%=showbbs("name")%> ! f5 q; N8 ?- _7 E
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 8 e) J# e8 u' r, G) E
代码中的i=1和i=i+1
; o) s. n! C) Tif i>50 then exit do 0 V1 B- x! _7 E- M
showbbs.movenext
2 k7 N9 b8 p  Y- l6 }8 X+ ?Loop
; }5 X9 G! z4 m( [* |. Gshowbbs.Close 9 k) [9 v2 ?8 z: _% c
set showbbs=nothing
$ S2 d7 y. ]+ e/ `' m' m$ D4 y: m6 g! X- S' B+ I) }. k+ B  x$ \
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
' _' z8 S$ U  h; {if i>50 then exit do中的50可以修改
( S, r1 s6 R7 M4 G7 B3 q但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 & c7 F8 |$ C0 _4 _
还有一句很有用的:
# L- }) ]+ A2 N- P<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 9 d9 P" C* E# Q+ A# T" S
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, - E% Z( S2 U8 {% v. q# j
等一下在show.asp文件中就有用了
/ A5 c- d/ q% c1 m3 I$ c
+ s4 g% I7 W) G& ]! P5、show.asp 5 w( g& u/ H/ c5 c4 b4 p, S
源代码: . g2 V1 ?$ S* n8 r

: g0 C# r0 N' S' I<!--#include file="conn.asp"--> 4 d, ?* F/ A) q
<%id=request.querystring("id")%>
0 k3 x' Q9 `0 @* L<%set show=conn.execute("select*from bbs where id="&id&"")%> 3 _" |1 _' I; a, Z3 F
<a href="index.asp"> " Q# y: Z: P( T# I1 C& m
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
- r" h: g6 m6 B$ g3 M<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> * n6 u' v) n8 T- r% E0 K/ P
<tr> 9 ]4 R& z9 Y- D! e! Q3 H
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
4 [. }* O& a& C<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
& L. W/ s1 ]2 z" I0 W! k9 Z</tr>
$ z! H2 e( R* O! h6 q+ A: ~, l<tr>
2 K! E. V3 s: h6 t<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> % _# Z$ ^- H" X" B' r
</tr>
& c, K$ B, m1 e5 U</table><%set show=nothing%>
5 L: H6 N. O: O* i
9 m) n; j. j( P' q! b3 b劲语句---精华语句: + a0 j) m6 c! o1 L6 Q5 n( l+ g
id=request.querystring("id")
+ H) S3 W  U$ B4 h, M在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
$ N" _( X% y( S  a* c  [id=request.querystring("id")就是把地址栏中的id的值读取下来,
6 M# ^' n) Y' r4 S9 y2 g+ k因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 9 x0 x1 O: F' ?3 P5 h* |( Y
所以show.asp使用id=request.querystring("id")语句把数字读取下来
" ]/ w: z: c6 z) U于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") , o) `& n9 X  `8 h1 p4 ^, z
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
8 M7 r0 `. L) a( r* |最后<%set show=nothing%>
  r$ C* S1 e% E' U' ?" ]% y" ]3 C7 m- n0 J; U5 E
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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