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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
. B8 ~) t' j7 z0 x真NB..佩服ing .....
! v4 ^1 N7 p8 I0 }大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
" S  E, n9 M7 Y2 s/ I# l# H" B: |9 C5 h' a" q+ X4 Q; u( `  E
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 2 f! U; D" [. X' F; z% {! `
1 ^% U% _: ]' W! j! ~/ t8 Y
一、建立文件! ' W0 q. i6 z9 h2 e  Y6 G
最简单的论坛也要有几个必要的文件,就是:
2 H" I  o/ O$ T. K; @$ Q$ k, t5 i3 `, z+ e* t
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ! k8 w/ r1 R9 L  M% I* C8 Y

+ f9 h$ I: ^& D8 @$ t5 m5 H4 R. C. k2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 2 b) p3 `) q0 ?2 C/ K! M- D8 q* `

1 n7 e: A6 z# }' g  `/ a3、发表帖子的文件----命名为:say.asp 3 Z  w5 D: Z7 [8 G# r% V, K2 J; l
; D3 I8 Q- c0 `
4、保存发表帖子内容的文件-----命名为:save.asp
3 _1 n- d* q( u! n1 e/ |4 B2 w
4 h' c  F$ }0 d  @* |+ }1 M5、显示帖子标题的文件------命名为:index.asp / F$ s" a+ V# u
" e0 o' t; ?: F1 N. P* P
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp / s5 A7 i, @( m1 U8 @  Y5 [( T

6 E6 K1 ?- q' ~4 m% u建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ! z4 h0 j5 j/ l4 M, i3 ^

, ]/ ^0 d: @( w二、各文件的主要内容 4 y  H5 n) v# @  D; c4 G& R6 k
( V& ~( p! w' [
1、bbs.mdb
4 q8 `; Q7 D- x$ H+ y% W" Q. I
% S3 S5 V) ?' k! d( H' Z: k8 {打开这个数据库,建立一个表,命名为bbs
# Y! C5 A) _) `" Z5 t$ |- a6 [5 T9 `8 x5 A$ m$ Q& r
该表中有几个字段:
" o/ S/ m, O7 S
0 `  ?8 v# L4 T# v; kid(自动给帖子编号),他的数据类型设为“自动编号” ' `1 q0 x  z% L& m7 w/ F

8 x' H  Z0 P& R: r' C; m# ename(用来储存发表的作者),数据类型为“文本” 1 y3 S4 X9 u; S( B- U

' T' l7 ~$ L! ititle(用来储存帖子的主题),数据类型为“文本”
0 B, j6 D: k# W( S
' I. |4 z# e5 g: A5 Dbody(用来储存帖子的内容),数据类型为“备注”
. G$ t) p: _$ @0 h9 z) j; z5 |
$ e' l& T* D* a5 o& f2、conn.asp
  t9 I& z* t4 d( F3 i( k7 }5 P源代码为:
2 B2 ]4 H8 R" L0 F: ]<%
) h/ c' n7 X' l" kServer.scriptTimeout="10" ( G8 g" n$ v+ O8 x/ M( G& O& w
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 0 ~& ]# J. z' `
set conn=Server.CreateObject("ADODB.connection") % a! ^% t  J2 l
conn.open connstr
7 Z( D4 z8 ]* S%> ' p1 R9 g: l! s: ~/ _* ~+ q
' x; G! f3 t4 c) f; b6 P
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 3 ?' F( a6 V& b; ^5 ?( J* U
* {- ]# X% _) U0 h$ h9 k4 s
3、say.asp # p! X  R) Q* u5 S) C7 y: c  l
5 {. z( q3 U, X% x. |
源代码为: ! W; {/ g6 ~: ~) x
<form method="POST" action="save.asp">
' `2 G: A* n; x) ^# Q  Q<p>大名:<input type="text" name="name" size="20"></p> - J& [" F5 d+ K5 R6 r
<p>标题:<input type="text" name="title" size="91"></p> ) K$ G! M4 N* v) g+ }
<p>内容:</p>
# d* \& ]! p  r<p><textarea rows="11" name="body" cols="97"></textarea></p>
3 s, e  g" m" L" [. ]<p> </p> # h( K: x& N5 e5 Z4 t4 s" e2 P1 `
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> ; x) r3 I) B9 J* L, ~; I% h
</form>
8 P8 F6 }9 p( o6 J% D6 Q+ f7 m" r大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 3 X5 |8 R' g# V  A6 @
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! ' p% W) {6 p4 l: O
* @: O0 R$ f! H6 e0 z
4、save.asp 9 w7 }- z+ T2 o4 i! ~* [
6 O% J+ t! O$ E: [! \2 e, F
源代码: ; j* f6 t4 s- q/ j6 ]* F$ U* {. l
<!--#include file="conn.asp"--> 5 c  Q+ Q9 V8 M! B/ _4 w
<%name=Replace(Request.Form("name"),"'","''")
1 q6 J4 k8 P+ w, ytitle=Replace(Request.Form("title"),"'","''")
5 W( l, e2 f* \+ qbody=Replace(Request.Form("body"),"'","''")
/ r2 ^  S5 g8 s* K! N%> / x' v% e1 r) E% c* A2 Z
<%if name="" or title="" or body="" then%> 4 s7 v- P' F3 _# O
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
$ d: k) p, J9 k7 r<%else%>
6 o3 N' B+ @& l<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 0 A( h6 y1 ^' y. a7 }2 L  w7 D
发表成功!<a href="index.asp">查看帖子</a>
/ g* N' c9 p: f  E  E- T/ d<%end if 7 H5 ?# b- d; j$ {8 i1 N( q
set savebbs=nothing 3 }+ M1 O/ S+ q
%> 5 w5 W$ x6 l/ Q' s
1 Q8 {. i* R% C; A
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! ' l3 `' J$ ?! s
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, & z& d: g2 ^( D8 s2 c+ s$ W
接下来几句:
# _2 {% I" m1 W! N8 A( `0 I/ kname=Replace(Request.Form("name"),"'","''")
5 l( I" _& j, B6 ~, ttitle=Replace(Request.Form("title"),"'","''") ' r0 x0 F7 a, L
body=Replace(Request.Form("body"),"'","''") " X: f3 t" ?# L" u8 g5 h

, {8 K: }/ p6 Z% }: c$ y“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 4 T+ o4 c" E/ r+ P
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,   l2 p% ^4 [  Q2 l% O
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 9 |( d# U2 v3 [5 Y" g$ C6 U3 ]
就是把表单中名为name的文本框发来的数据储存在abc123变量中
& ?( V. J2 i% o; L$ A8 Y; s* K( ]. a: H9 q, q4 m
接着:if name="" or title="" or body="" then
, Y# {- Z& n' N( _+ B& x判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
4 }5 }; Q' r1 }9 `“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” & J+ u/ Q) V6 \
该语句属于html语法,大家都看得懂的! & f% C# r* p4 v% {  z
1 P% l5 ^5 i8 Y- k2 _/ }
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
: U1 I, a/ M+ l* X& w$ C“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
6 S/ C* f3 {2 V发表成功!<a href="index.asp">查看帖子</a>”
; e% P( S4 R4 V6 U3 I+ b! s
+ ^8 ~, U8 G1 W% F6 J; }"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
1 M8 E8 L" {* @+ L- ^# F5 [$ binsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
; y2 Q, O+ T) f! r/ b1 {中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") , W. W' T( M6 ~5 G* E0 |. i7 ~
values是“值”的意思 / M0 W, H7 f6 a" {5 T  i
就是插入向量name,title,body,向量用格式'"&name&"'表示
+ I+ a' U1 ?9 P. T1 c) B' v
: ^1 @- i0 S8 W7 Y/ c0 q最后:end if就是结束if……then 9 U+ n6 r: k( s% b/ D
set savebbs=nothing可以说是关闭掉: 9 v" j, [% T" @" L3 |$ k" k
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") % a  @9 f. {4 F6 b

$ e; |0 e8 A, X2 F: K
; i+ N& ]$ l- q4 l" N0 c5、index.asp
' S. d+ C) }7 f# t! s$ n1 }源代码: 8 o6 T. P6 G3 d* z4 ^1 x' e
<!--#include file="conn.asp"-->
! N' C! J; P5 o0 ^5 l3 j4 f<b><a href="say.asp">发表帖子</a></b><br><br>
1 L* y* U4 u, R, C; V4 y* ]<div align="center"> 6 L, n. S* E& \
<center>
# z5 A1 @0 }1 M2 B- O, K4 c9 |<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
0 S4 S9 V- x7 R1 T: l<tr>
+ N! h2 P% j/ [$ g# r' E9 C7 Q8 a' k<td width="17%"><b>作者</b></td> 6 w5 b, M9 z$ r2 w0 w
<td width="83%"><b>主题</b></td>
6 z0 D+ ^  u! T! |5 Z& h</tr>
9 e. t# x& N- ?* h, g1 ]</table> , Q3 L% v' E, Z* m# @+ Q
</center>
/ r, D; T$ L' R( |+ \* @& g' n</div><hr size="1">
! M7 z; K7 b4 k<%i=1 ' I4 O6 x' x7 h
set showbbs=conn.execute("select*from bbs order by id desc") - C" n& K5 A8 c; N! ~' h1 {# W" b
do while not showbbs.eof
, z: m8 J" _, N5 \+ t. ^%>
/ W( b+ {0 k+ {2 k2 e; h6 I<div align="center"> ( ^; \$ [$ t  ^$ |2 ?
<center> 0 e+ X+ l3 L3 h3 J) U/ z
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
8 H1 t2 x$ R' U/ U! a<tr> ; ?5 a5 v" b8 g  s* Y- p. M1 F
<td width="17%"><%=showbbs("name")%> </td>
4 w/ r6 O- d5 S% n2 U% T& E0 j<td width="83%"> . ~3 G* y; V/ V( }1 E1 o
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 1 v5 `: D" c! N* y; ^# \
</tr>
  Q/ g, }$ F) w3 l6 v7 _</table>
2 H9 U/ E1 ~2 P. u</center> / I0 ~3 s* `& n8 p# L# T* Q' Y6 y
</div><hr size="1">
6 p0 F1 X1 `" u<%i=i+1 5 B/ ^: n* z9 x; _
if i>50 then exit do
. E# w3 C- a" g% D2 ?showbbs.movenext # C% d# w' i9 s4 j' G
Loop
% [6 u# O! r* q8 y  `showbbs.Close ' v+ v3 |5 }+ `
set showbbs=nothing   k) a; B# M0 A  e7 V
%>
! U& I5 I' }/ P5 n$ {5 m& r- m5 M1 w& L: x7 ]3 ~5 Y
这个文件就不一句一句的讲了
/ U) h" Z$ q# h3 @主要讲精华部分: , s3 U. T1 A* {( \+ }! {
set showbbs=conn.execute("select*from bbs order by id desc")
" a( m2 k( n# n1 P5 Q; {1 {- P意思是:向数据库中的bbs数据表查询数据,并以id排顺序, & g, c# `1 f& J  k" T* d3 C
还有这么一句:<%=showbbs("name")%> 2 |8 k' @* ^; B" u1 E- t5 M- x
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
2 A$ j9 k2 @1 x! m  S+ ?6 L代码中的i=1和i=i+1 . s9 i8 [. a( q2 d3 K
if i>50 then exit do
( ~9 S0 ]1 y2 w. z/ ^3 S/ K. sshowbbs.movenext 2 t. }7 [1 j% t7 p
Loop - q1 m1 v& S: r$ {: P
showbbs.Close
! |* N7 a% B% q% b. {6 R7 }+ y$ k/ Tset showbbs=nothing 1 h; f1 `' X7 s3 j
8 ?& R; @4 w/ E" U! N4 t6 @
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
- Q& I' e' u8 N  p3 `- e1 `if i>50 then exit do中的50可以修改 , ^! u0 Y9 |9 I. ?. t
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
* p2 G  H0 V: I8 P, o还有一句很有用的:
1 A- l% O: D- Z5 N6 T) c<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 4 N" d% M$ l: X
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
5 P7 ~  R- r, _& c! J! b4 K2 T7 w等一下在show.asp文件中就有用了
: S+ N! r/ v1 c: g9 j/ K/ _4 L, X, }( i! D4 N0 L7 K1 U8 n
5、show.asp ( x: ^7 ^7 m" {8 l: `4 F2 M  U/ V
源代码: * r- t7 s0 ~1 D- }

$ L) _- l) M( Z$ L+ D<!--#include file="conn.asp"-->
$ @4 c: Z( k" Q6 ~<%id=request.querystring("id")%> - S! Q6 P; Z5 f5 \/ d* L! q
<%set show=conn.execute("select*from bbs where id="&id&"")%>
& T: [! Y/ O! }! d  g<a href="index.asp">
' `4 @6 J' @2 T- x* h0 N: Q<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
+ h" |5 h$ h. \; I3 o3 v<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 1 e" {0 o) n4 P) T% u: m& ^
<tr>
4 w9 _( b- ]! f. o$ t' N, h$ [! c. L<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
, Q/ b4 s, d- N2 d* }# H<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
% g# C! D8 C) w" f  g, v5 ~</tr> ; z+ q" s& E9 K4 E5 Q# _4 ?5 E
<tr>
# J$ t+ \+ w& Z8 n( v<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 9 o8 u/ Z" {/ y* q
</tr>
& D' E$ `% G- K" D</table><%set show=nothing%> ! I6 M3 R; G6 F1 p

9 w. V) |/ t# u! b: c劲语句---精华语句:
/ ^) B* E- x9 @% L% b. `/ vid=request.querystring("id")
+ l4 G9 K1 Y/ H1 O9 e% [在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ; q: N0 o: Q. s9 b
id=request.querystring("id")就是把地址栏中的id的值读取下来,
/ g' B4 N/ b" |* K6 E& O$ R9 \因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, $ `% D6 k" g  `, S
所以show.asp使用id=request.querystring("id")语句把数字读取下来 * \& a+ c6 K% @" o
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ) v4 C6 M, n: s) V4 p' R
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
) l# \5 }+ F% C  Z7 q最后<%set show=nothing%> + w3 e# s* f' T, [  p

0 N4 s" _. @3 h1 r, R  }好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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