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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
& R% k- G( U- W3 b6 i* M* D+ ?真NB..佩服ing .....
5 i  c( }! o) Y& P大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。; P9 a& Z$ u6 c) W" _- _' E

# d$ i5 w/ V1 E8 m1 v- V; s同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 ) W% }  [! w; n2 g
  X( e" A$ b2 `5 ?, h
一、建立文件! $ v6 r6 z. V# ]/ ]; D( T
最简单的论坛也要有几个必要的文件,就是:
5 z; i! W( Y4 z" ]" e! c
! i. [; _- K* `* B1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
/ N0 t7 P+ V8 M+ @& ?- b: w, |
! G" a5 d* S. J2 H; H2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp   q* Z3 h; _! z* ^9 v  z

9 |8 A8 c0 T- Z0 p8 {3、发表帖子的文件----命名为:say.asp ' c- q$ z5 |) y. p7 D# M
9 P- |$ f. ~8 U+ J
4、保存发表帖子内容的文件-----命名为:save.asp
& s6 O2 v3 n: S3 B# a; ?
; Z6 e+ D% S+ \; s& s5、显示帖子标题的文件------命名为:index.asp
) n3 m) @1 \- B/ A& |" U
2 b6 Y# O; k" \: ^7 @: T6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
* @5 E( J$ F* b. ], O
2 d& ?" e6 r$ S7 m' A5 C% ^- `, ~% G建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
) B$ p5 R+ n) P6 J* _! r, D
  H) f- I& M6 @( p7 G3 B3 K$ h; ]二、各文件的主要内容
6 E0 J! a5 V; K. Z
- ]) v) z2 h7 r1 M1、bbs.mdb 9 S# S- j& ?( g: y! V
! N' m% |( t- H( r/ m0 o8 x* t
打开这个数据库,建立一个表,命名为bbs 2 m3 m$ {) C5 C, l) T' {0 D9 J

3 x( e+ i, l  p1 N/ y0 k! w该表中有几个字段: 5 e* E1 W: c0 c" T

/ e$ D% w' `+ X& q* X$ Q9 y2 r6 ^id(自动给帖子编号),他的数据类型设为“自动编号”
2 b0 k+ p8 `# o7 S1 ~2 _$ B6 w, Y; B& R! i! u6 e" {
name(用来储存发表的作者),数据类型为“文本”
7 ]8 b5 ^0 p( A5 F  u1 s" {0 d* [
title(用来储存帖子的主题),数据类型为“文本” # V( X9 y) O* B1 ^: `

" O* C0 F2 c/ x9 }* x& xbody(用来储存帖子的内容),数据类型为“备注”
8 r' E+ r$ }' m& R3 W6 i7 c+ l/ ]; }# s& l& t7 @
2、conn.asp % j. _' u5 b# H' q: {" b7 u8 ]
源代码为:
# B- ]. d/ ^% `. E2 g. ]# \7 ?<%
, }5 L3 a/ g. q, l. fServer.scriptTimeout="10"
$ W- f) P" {+ \9 f$ Cc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" % S# T1 ?. K% L5 f! ?5 Y3 p
set conn=Server.CreateObject("ADODB.connection")
  z4 F9 w3 o/ r) R& ]! gconn.open connstr
& R! p7 p: D' T# ^7 E+ U% L5 m%>
5 Y5 Z8 o1 |0 O5 `9 a
! W" |- W; R7 y" K2 c这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
, i. @: I( {$ |  K1 ]
8 H- Y* k1 P( @7 \( u9 j( b3、say.asp 9 ?  ?/ D# s% @( T+ X
! Q; z3 d) }/ x  c& D* J0 `( O
源代码为: / W$ a" s4 M( S9 _! A1 E2 t
<form method="POST" action="save.asp"> + @# v) b/ n4 j5 D
<p>大名:<input type="text" name="name" size="20"></p>
" p& a1 @+ c4 E$ p3 F; a% X<p>标题:<input type="text" name="title" size="91"></p> - v+ P1 k- [  }; [& b0 ?" S
<p>内容:</p> 8 n9 C  v3 I& |  N3 Y) O. p0 H
<p><textarea rows="11" name="body" cols="97"></textarea></p>
4 J' g  ?* ~0 a% S<p> </p> 3 S/ a+ P6 S5 ^2 Y3 x4 P
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
" E3 F! w* e! R0 U6 _* h0 H</form>
' t1 d. @$ S1 p* R" l" Q* \大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 ! e( R4 c' m& Z3 M( H" \) S
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! , g- F9 I5 q  f: b3 |% C, z
1 o% G3 Q% v' n( O- Z
4、save.asp " Q7 b4 L4 n0 m+ v
5 S; {! g& V2 [4 J5 s
源代码:
' V+ h1 m9 _7 k<!--#include file="conn.asp"-->
# _- ]" w$ U; d! x<%name=Replace(Request.Form("name"),"'","''")
: S1 o: f$ ^' u' \' b# B) }" \6 @title=Replace(Request.Form("title"),"'","''") * O: W' Z" L( |
body=Replace(Request.Form("body"),"'","''")
. z( a) w5 d; k% W1 i5 e%>
: B. {" g% C# M# v+ z9 `/ }2 M* E<%if name="" or title="" or body="" then%>
% j8 _4 @) J- G请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ! n; b" R0 |2 x; O5 F) t
<%else%> 3 |# y# @4 ~* I' w$ V
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> " o( u+ G6 V( ]' M6 W' d$ T
发表成功!<a href="index.asp">查看帖子</a>
9 L# I( t' @: b" v# Z: r  z4 u<%end if
( I. N2 S9 C: M( J% W% a8 S6 W- aset savebbs=nothing
3 @- V7 t/ W& ^2 e%> 7 U  |$ q: X& g
8 a+ C! L8 W6 E
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! " B3 [! z% V" ~- Z- o' v6 d
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
" d$ A$ B1 b' k' h, b0 n2 `接下来几句: 9 T$ r( d% {! Q* c
name=Replace(Request.Form("name"),"'","''") 4 T+ z7 `& V1 }4 N4 V
title=Replace(Request.Form("title"),"'","''")
& I9 j" x( m& b( Ebody=Replace(Request.Form("body"),"'","''") 4 K. j2 A& N# ~/ C9 t2 y4 N

0 G# U0 c1 E- h9 J  U' F$ W“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,   t' }7 R3 ]  W( H  O/ h
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
) V* m1 X, C# _2 h+ z: L如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” " ?2 {  p% D) K; t' w# Z- V
就是把表单中名为name的文本框发来的数据储存在abc123变量中 & Y$ n9 t; @1 ?+ e4 v  w+ M4 D

' J- }) k( e! m# u! {; z接着:if name="" or title="" or body="" then 4 F2 [/ [& y, x6 E2 r
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
4 z/ n7 U4 Y; x% L7 n“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” * n9 o! R& S. j1 u7 }$ v: k
该语句属于html语法,大家都看得懂的!
* w: S: k6 Y  J! j3 B$ y& b& C' ]0 z$ w3 A
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 4 s. A! _; E8 v, X5 B* w
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> & r, @4 M- E+ d. D6 k4 n3 U1 X  G# S" X
发表成功!<a href="index.asp">查看帖子</a>” 4 C! {# l: Q, H( H: P
: H% ?$ K& e2 K8 j
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: ( x% K3 \& ~" ~$ ]8 j
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
8 _, x7 W  p' D中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 0 h& o2 q2 H8 L- }% k
values是“值”的意思 . C& Y/ \; U4 |+ @7 d
就是插入向量name,title,body,向量用格式'"&name&"'表示
( W5 r$ r0 s/ }/ b5 e  J& u
- a' d& k2 ?4 C5 B$ O. X最后:end if就是结束if……then
9 C1 {. W/ h! Q- w+ pset savebbs=nothing可以说是关闭掉: 9 U' t  P' r+ U: f* ^3 N" Q
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
" j- m  U6 V5 ]% }
) `- y4 ~9 g* \+ h- x
. p9 w6 _# N# G- ]! g, ^8 ]5、index.asp ) }9 ^9 A. |( u. i/ v
源代码:
, y  e6 d8 }! o! N, s) v<!--#include file="conn.asp"--> ! i3 F% v" i4 o& {" i$ E# ~$ O
<b><a href="say.asp">发表帖子</a></b><br><br>
' b9 }/ L# s! a, R" U, B<div align="center">
! ?& Z& D, J( p; Y! G9 I4 A<center>
! {" D: D+ z- r" E# @  v) C$ h<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
" V6 {: V+ r4 o4 X% @5 s# E<tr> ) e+ Q8 H" H6 Z. }- i2 W' ^
<td width="17%"><b>作者</b></td> + r) ~1 v1 k/ s/ W* H
<td width="83%"><b>主题</b></td>
& Y& G* L0 E/ x! O7 Y</tr>
; A8 y) V9 G: e3 r</table>
7 m/ X( n2 G0 x7 n0 y+ S</center>
! X! M8 f* J8 T& [3 T. L</div><hr size="1"> $ G, v- L; ]8 b
<%i=1
2 Y7 S. v- I3 Q3 t. ]4 sset showbbs=conn.execute("select*from bbs order by id desc")
! ]% v* L' |. K7 ]do while not showbbs.eof
9 t5 }) Q7 F3 K1 {%>   r8 J% M6 T: v7 r$ T
<div align="center"> + K$ E2 u" I: R% C( k3 ^
<center>   v, ?) F5 D6 p6 n) E( U, j! }5 y
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> . e. ]! @, R* W# [! b) k1 ]. J& q
<tr>
1 N* i" c# I: Y<td width="17%"><%=showbbs("name")%> </td> ' h! Q1 u/ z0 P. k7 m9 ~, K! G
<td width="83%"> . k% Z! j; ^0 V2 l. d/ [2 ^; I- ~
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> ' I) v1 T1 X2 P
</tr>
+ J1 u- [- x, e</table> 8 y( ]# x9 x6 k& ^
</center> & G8 _: x# y: i: I" v: u
</div><hr size="1">
( o' ?% U6 ~9 g$ J0 y& u, Q6 G<%i=i+1 " ^' c6 H7 H4 Q+ C0 d9 y9 n2 q1 m
if i>50 then exit do $ J  ~+ Z( I) W. W
showbbs.movenext : J( G  l9 q- \* b. |1 L! x9 ~1 S
Loop
- N6 Y  O+ n# H" o% d/ {showbbs.Close % C8 r8 ^0 J3 y) Q
set showbbs=nothing 5 S0 w  o5 R, B+ I
%> / f) d$ O1 _$ T) K. |. ^2 Y/ e$ F

: I; {7 h9 b/ O' ?& R5 m! M这个文件就不一句一句的讲了 % D  t7 O0 ?% L0 J3 J- s1 M
主要讲精华部分: ; T) }, s, r: \9 K
set showbbs=conn.execute("select*from bbs order by id desc")
+ k: Y) U4 c$ ]: ?  T+ ^9 y意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
& O5 z1 B% Z9 g1 W# z; ]还有这么一句:<%=showbbs("name")%> 5 Y  x6 x' H+ y- @' w7 C' [  g
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs * U' e8 x& y$ k$ U
代码中的i=1和i=i+1 5 |6 M" Q4 f& t4 c$ ]" p4 e, `
if i>50 then exit do
) Q# j: b& t, U% B' Jshowbbs.movenext # e4 V- A( O5 ~( J
Loop
" t1 t- h) |7 \. ~9 D! J( f; _# cshowbbs.Close
; ^5 B  _1 _; q6 F, A5 Q8 Eset showbbs=nothing . v( J' F5 L( p" a
1 L$ s( Z7 J& W" f$ C7 L% M" L
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
9 t* ~9 g3 g' V. m5 s1 sif i>50 then exit do中的50可以修改 2 ]  o& z$ E. X; O) G5 t% y: ]
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 . n4 f: W! E! A* ^! G# c# {/ J9 B  m
还有一句很有用的:
* g% j' Y8 T; Y  j<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
1 Z7 U8 w( S/ J) z7 V" l4 S. z里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
0 Q9 a+ E& N4 j# F9 ~. N2 b等一下在show.asp文件中就有用了
& X1 x# Y+ J/ s6 R2 U& b+ }9 ?2 }4 ^: x: X" w
5、show.asp + c6 y. ?' S4 U0 h! k
源代码:
' m" ?! \" x7 O+ i2 _
5 _! f- f2 b2 \7 K<!--#include file="conn.asp"--> 5 W, }8 V& k6 e) q( k, |( Z; w7 T* l
<%id=request.querystring("id")%> ' @' K4 K- V3 b1 m
<%set show=conn.execute("select*from bbs where id="&id&"")%>
! A8 B' E4 P! R% q( L# E, h<a href="index.asp">   J6 [$ i! d2 U; r; \$ D
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> # b4 M( r% |; T; e& {* j/ y
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> / ]3 g* [0 Q/ s* v
<tr>
  M2 _" F1 y+ s" J- @7 F<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
4 T: j6 P) ^( |6 X6 Y/ A, a<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> % n- l0 k3 t/ s
</tr>
/ p6 x2 h3 C" x<tr>
- U  L2 d8 B' C<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 1 D( R3 i, o) z* ?- I3 g
</tr>   d% X, v9 ~! [; U! Q
</table><%set show=nothing%>
$ H  R" Y# ]/ C) t3 Y! Q  Z- f  B1 p2 y3 p( l+ n: c6 l) H9 r
劲语句---精华语句:
8 C- m7 I/ Y/ i1 y0 `: oid=request.querystring("id") 7 F2 U: s! A5 ^/ M% _
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, 8 j! K; ?- Z0 F# x4 P
id=request.querystring("id")就是把地址栏中的id的值读取下来,
$ \. u4 m- a4 v0 b" f因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 1 q0 P& I( ~( C+ I: c2 y
所以show.asp使用id=request.querystring("id")语句把数字读取下来
0 W# k. P' k' I) Q7 ?" R0 \: g) e于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") - d0 q3 Y7 h8 Z
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 7 h- {  U$ b" ~5 w* s4 E3 d- `" C
最后<%set show=nothing%> * P8 Q, @$ \* V/ f8 O8 h0 @" \& t

  w0 |5 b* d' y- u2 v- k2 a好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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