返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
% P, D% z* Z7 t& ?真NB..佩服ing .....
1 ^( z% _* h/ I2 d0 c2 L大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。2 c, K2 \- n$ x4 M, t$ Z  o$ v; P
5 @! l3 s; Z* e7 L% k: [
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。 7 O' D* Z, L' S+ z" x; T: d

$ |8 \. T- L, j8 v一、建立文件! * n, Y2 k0 a+ w/ p. d9 f, K2 z
最简单的论坛也要有几个必要的文件,就是: 1 w+ A6 T& T0 i+ `( Q/ B* Y

" |' l/ i1 l& R/ p1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ( i7 I0 j3 J+ E8 z; t7 ~

4 ~" B5 d" q- O( {4 t2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp / X/ z4 f& ]$ ]3 F4 E
& q+ d, ?+ S9 u% n. ]
3、发表帖子的文件----命名为:say.asp
3 [+ K- Z9 h: f+ C' S* [0 q2 ?7 |4 A5 ^' e5 D; V7 R6 E+ b
4、保存发表帖子内容的文件-----命名为:save.asp   }/ f6 }) Z0 ?( a- e

0 M. F% x" f- |7 A. E$ m$ @( m5、显示帖子标题的文件------命名为:index.asp $ f/ U3 `6 [- D

. r8 B: G7 N/ y* N: ^! Z6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
4 p5 W9 T4 t+ u2 O; `6 }0 [! P9 o* i1 Q1 h/ [) x$ @$ J
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
) e" P1 u8 ~( v/ L- ^; P# n0 q; \
二、各文件的主要内容 4 h' `5 u5 L& L1 I  z: u

. x1 D9 s: _5 h1、bbs.mdb
6 i9 A- p; G1 @- W8 k+ y8 Q+ N( ^
. B& q# [; i# x" Y$ s打开这个数据库,建立一个表,命名为bbs . N* I7 j5 L3 Y- G+ e) d
% }0 v! ?2 M% ?1 X2 b/ R7 D
该表中有几个字段: % g9 H8 ?) t# r4 v/ F6 ^

  @0 b8 A( h2 bid(自动给帖子编号),他的数据类型设为“自动编号” , V+ \/ i4 e8 p3 F% M+ E' n

# X6 x% n% \4 ^# D- [name(用来储存发表的作者),数据类型为“文本”
% ~& C" ?4 i; b4 d9 n" D5 K" n% u* h( b8 k2 ], C
title(用来储存帖子的主题),数据类型为“文本” - _# \! v. i! ^0 O

/ I/ ]1 e4 _& C9 [# t9 bbody(用来储存帖子的内容),数据类型为“备注” 3 k4 I  N0 H/ c" [

3 N" u. @: a: v8 N# }3 y! ?2、conn.asp ) E- t# ?( h2 C& u- w: I
源代码为: " r5 i' M6 r, D
<%
: G' ?& F) M3 h: F) q, TServer.scriptTimeout="10" ' n, V8 e% d& ^& s
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
! s- [/ f* i# ]5 j# `! vset conn=Server.CreateObject("ADODB.connection")
; m/ ^" N- Y" l. c0 e; ?* Iconn.open connstr 0 d  L, J& Y! C- \8 Q9 `" ]' c: p
%>
' {9 U3 _  D, f' j8 E0 ^
+ G4 e7 V$ M6 Z9 n这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! ' [) T+ `  ~- e1 \  u
! R0 p$ ?. L) E; W7 b9 l
3、say.asp , j$ e/ d: z) c

9 q, j& n7 |: o2 l源代码为:
, E/ B! O* R- y/ c<form method="POST" action="save.asp"> $ _0 J+ c( N% I! W; G3 L
<p>大名:<input type="text" name="name" size="20"></p>
& [2 d* F& G2 o' A3 h<p>标题:<input type="text" name="title" size="91"></p>
7 Y, m2 z2 T+ r0 u3 v* [, Z<p>内容:</p>
9 d, N! |6 s9 n1 B" a& H5 z7 {4 F<p><textarea rows="11" name="body" cols="97"></textarea></p> " _) E  r+ Z$ M- l+ Z
<p> </p>
% ^1 m3 X# H8 u<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> . |1 Z3 G. }% ]1 n/ X1 E( T% o
</form> 9 q6 g0 `" d9 H: W
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 ) S; J! D" ?  c0 h
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
! B( U  O" x8 T2 F( z$ s5 i) y9 l6 L0 I! K+ Z  X3 [6 |* `
4、save.asp
" F6 K& `+ ~! L( K
1 W1 |2 p6 T% l源代码:
% L) x! y. D- A* w' K<!--#include file="conn.asp"-->
: E9 j/ W* Z2 _- _( d# _  \- q) m<%name=Replace(Request.Form("name"),"'","''")
$ i& ?( R: f9 K; o/ Ltitle=Replace(Request.Form("title"),"'","''")
. `9 P* y  P. l  c: Cbody=Replace(Request.Form("body"),"'","''")
! [# f5 b1 z) K  f* d2 d%>
& c; P; J7 O# z/ g" d/ \<%if name="" or title="" or body="" then%>
: ]! o  k8 `( a- r2 u* z2 `, u4 n请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! + R+ p) e4 w( W8 Q
<%else%>
% u) [/ _6 J% i, T, Q) @<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
) j- [; u- H+ e% q发表成功!<a href="index.asp">查看帖子</a>
. x7 F& @% O. S( r6 V4 i1 z<%end if   ?* b& G, z, L' P, ?( \3 n8 U
set savebbs=nothing
5 c9 e% c3 ]( b%>
& ?: l: S6 E7 B3 b
0 E$ e" Z6 v0 X! c- M! O第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
( X8 K9 q0 d  p3 r9 Wasp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, : q. E* k6 Z7 M) m
接下来几句:
4 P$ F% S0 x2 i7 F7 {7 e; Iname=Replace(Request.Form("name"),"'","''")
5 _, p& b/ `& ]3 e8 U; htitle=Replace(Request.Form("title"),"'","''") ; v5 A+ @0 x* p& ]) r6 E/ X( D2 C
body=Replace(Request.Form("body"),"'","''") 0 D; x$ j% |& K* u8 H

& h1 z/ z2 t/ ]) M9 j0 Q& o“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 0 C5 g+ `7 @: z' n
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, : O& ^! T' r. U8 \3 U
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 7 S: t! C( Z) W
就是把表单中名为name的文本框发来的数据储存在abc123变量中
8 F3 j& `' r% Z) E* q2 a" l. h; y' F
接着:if name="" or title="" or body="" then , D: y9 U1 M7 \
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
: d! C  e* S% g: `( E5 X“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
0 j1 s# G  `, ?. k& m$ c/ ~该语句属于html语法,大家都看得懂的!
- x$ G, O, H/ r( `% P& }2 s( U0 G# Z5 \3 K2 p2 \
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: 2 b, H5 m+ s) e9 J5 W$ i
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
( p+ M) K' D) T发表成功!<a href="index.asp">查看帖子</a>” 2 I& W- ^( M* L" H' @. R1 U
* R" B: j% o+ A
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
: |" A. T) y1 Yinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 6 a2 ?; g: j4 \9 K$ y
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") ( X! ~  ~: ^, {: `9 E' ?9 g
values是“值”的意思
2 H& E7 R9 w% Q/ ~. O8 f( s3 l就是插入向量name,title,body,向量用格式'"&name&"'表示 1 v* v3 [( L/ O0 q6 t5 q

; g) x2 J  }8 l, w' I, K最后:end if就是结束if……then 0 A/ w9 p4 t3 `; L+ @
set savebbs=nothing可以说是关闭掉: , J4 \; D# m8 i& a- c
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
7 B3 D7 s9 I1 p) J$ M5 Y- u8 r- O2 v6 ?+ W. m
0 D9 H8 k/ K" d0 p* P: l; I
5、index.asp / ~+ }; A4 x$ h+ h) g5 J
源代码: 1 l7 h% C0 g) D4 d9 d8 |2 L6 ^
<!--#include file="conn.asp"-->
% |# n( X: G1 W$ @8 y+ g<b><a href="say.asp">发表帖子</a></b><br><br> 5 p% e! X. Q0 D4 G8 Y3 g" ?
<div align="center">
& R, \, E* M! v$ x: A- H( x<center> 9 F  z+ M$ B  A: v3 u; S8 u
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
4 j; e* B$ X7 E+ S/ E<tr>
/ S; t% `2 k: Y+ R<td width="17%"><b>作者</b></td> 2 z/ e% B3 B7 p* t9 ^' s
<td width="83%"><b>主题</b></td> . X, H. |7 Z( T# `0 o
</tr> # w- r. s1 b, F# I* \5 C3 O
</table>
1 V7 W( ]1 X9 D  a- d) H& P; `</center> ' v8 A" j0 h- R, p$ g
</div><hr size="1">
% t3 Z0 ]# a" r% Q<%i=1 * W! n( C+ [" N2 S
set showbbs=conn.execute("select*from bbs order by id desc") ) |' v9 n5 j, J( w9 z" v1 K3 D
do while not showbbs.eof ( b4 S, @/ c2 Z0 m2 i
%>
! ?% W6 w8 F' L<div align="center">   J  G) Y6 |# d+ |
<center> 7 y8 z  c2 R, W/ a
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> 1 P5 K% q2 b* k) J/ z
<tr> 0 Z8 }7 c; z  j4 H4 P
<td width="17%"><%=showbbs("name")%> </td>
5 }2 N/ _7 u$ }; B( n8 w% O+ h$ y<td width="83%"> 9 S/ p7 t7 u3 ]# o: e
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> 6 K2 @2 c: i- R1 _! C
</tr>
3 o( o8 @2 _4 u0 s  E</table>
. O2 x4 t+ C& s4 U5 i) G</center>
6 C& A9 M: M+ G) r0 Q$ O' b. a& L</div><hr size="1">
" q( t6 E9 x9 P5 o# w! u5 P<%i=i+1
* P7 s3 p" G3 Jif i>50 then exit do * L3 X1 E  U3 w9 ~
showbbs.movenext
" {+ }6 t! M( n% RLoop
# U: E6 T: r8 U/ p8 `! Gshowbbs.Close
( j2 B3 k+ d& d) j) jset showbbs=nothing
0 W: q- U  {* J%> $ k3 @. q$ y. ?3 `
: E$ S$ \+ Z' E4 R- g: f# ~' C
这个文件就不一句一句的讲了 & e) C8 d; q" y. R" ^# e
主要讲精华部分:
; U! T9 h. }4 S7 X9 gset showbbs=conn.execute("select*from bbs order by id desc")
7 T& v6 _  p* a6 c  ~意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
5 i! B1 ~6 a( j: k! i还有这么一句:<%=showbbs("name")%> 0 b% l, `$ j$ x
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
! j- v! [% P1 k! w3 r+ Q代码中的i=1和i=i+1 ; k/ ]& h6 |" j
if i>50 then exit do
6 c  J* T3 F! p3 r2 I0 z2 Eshowbbs.movenext 4 o: n3 Y3 p. P$ Y# t1 s
Loop
1 n$ ]! s# i; J: x/ \showbbs.Close
; O. b4 B8 ~4 M  s, m4 Uset showbbs=nothing & ~$ {" \0 T2 ~& q! Y. T1 ]  I% i3 K
! u! z5 G& E2 L6 {4 x0 ~- h3 C) b
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! ; ?* r. A+ z) \7 J9 n6 V1 x( I0 g
if i>50 then exit do中的50可以修改
' w; t8 L( G; X! n( m7 Y" b但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 6 \  X0 d8 y' f4 Z, `
还有一句很有用的:
/ u( \/ G8 N; D% a& ^8 G) m( p<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
# N, O/ C5 H5 D  w1 U; H- k里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, * ?2 L3 I( H: O- d- _% f
等一下在show.asp文件中就有用了 6 W1 J$ w# y3 s2 r

" R5 ~9 j9 X$ v/ A4 R" x* j5、show.asp
& J9 K, l! t* Y, X; ~/ o  I3 O) }$ q! Y源代码: - E7 P: k. h5 ]# O# H* b/ R- ]

5 L  \: I: \% ~& s9 {! O<!--#include file="conn.asp"-->
& Q4 U& H3 ]. m9 A# h2 y4 ?8 U<%id=request.querystring("id")%>
( \1 _7 ?; t7 {4 }<%set show=conn.execute("select*from bbs where id="&id&"")%> 7 ~( p; f& d% H9 A
<a href="index.asp"> + C; r1 k2 y+ ]/ o6 ?, d
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
- q& ]# d& e$ b/ g) o: P9 v( w<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
3 o9 o+ S& n4 Y( K5 U: a5 x5 F<tr>
; e7 g# U" X1 f/ b+ {- p# t<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>   b( C7 P) t5 l8 j! |
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 2 A8 L& P' Q' j; _
</tr> " V* E8 f2 }6 X# C* q+ j; |) b; o" p& D
<tr> - U* p# z8 x0 g4 p# X, R
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 5 I0 \, ^7 |; V) v; u
</tr>
9 p9 p6 [( _" u$ a+ q% K* F1 D  @</table><%set show=nothing%> ; e. ?9 {3 F2 H4 W- l; e* V- \

! e* R* ^$ e& s* Z4 ?- Q# ^2 K. I劲语句---精华语句:   c% Y; ~3 _* q
id=request.querystring("id")
( h3 R8 K  ]* E4 O在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, : [+ q+ P. c( H) y7 K& F% _
id=request.querystring("id")就是把地址栏中的id的值读取下来, ! |% k% d& u& t5 j- w. B% w
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, 0 {- B3 O0 t& F- d, V" M) Z
所以show.asp使用id=request.querystring("id")语句把数字读取下来 5 l) `$ J, q- s0 ]# \# S% A+ V
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
/ D# V6 v% I) ]( F+ F/ k( C向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" # {8 U2 a0 T7 _. \# f$ D0 {! U' _
最后<%set show=nothing%>
6 t: ?; r5 C3 N" P) D' x7 o, ~) s5 O4 {& B. h; r+ e5 v5 E
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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