返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西! a6 y! j5 z8 b8 ], t* W
真NB..佩服ing .....
4 w) M9 e/ f2 _大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
0 H+ j  T. I7 v+ T# @% j! K6 R( O$ S% i7 g+ b# K, r
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
% {$ b" {' G- _# H( ~3 h; d4 Z; w- O' h. N9 r+ Z
一、建立文件! ' s# @4 L- o* L3 H# t+ k) P& y% j
最简单的论坛也要有几个必要的文件,就是: 0 b- ]" G! D  l3 M9 K1 Q2 c
2 s  G" c1 s$ N3 M0 P, ~6 ^/ D# u' z1 d
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb ) m8 l3 R$ k  m, [
$ k( R' v6 f4 ^/ h& c$ W
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp - x+ t6 y) ^; i# @

& |2 l& Y; {6 z! Y* N+ f# o3 _3、发表帖子的文件----命名为:say.asp
8 x% ~: c4 B( r) Y4 i6 I2 d9 Y6 P0 a8 m# o: m# a& K* D( s
4、保存发表帖子内容的文件-----命名为:save.asp - n- v" r; _! K+ f- w" e7 }2 B
, `3 r6 d& @+ w9 T; F7 ~- d7 N
5、显示帖子标题的文件------命名为:index.asp : f; d" r. G, m' U6 i

  k/ O# i4 T1 Z$ t# j7 v# E6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 4 _5 D" T8 X1 U% r0 h
1 W2 W% o' }1 D5 N( J
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" ; [" H/ ?* u+ E

+ @& x9 M. E: q' p* J% u  L二、各文件的主要内容 . I( Z5 Q4 ?  P0 X( o: p, ?6 a$ x
7 A; c( j$ U$ o8 _* p: ^' I. _
1、bbs.mdb 7 T( V7 l' h4 \
6 [# T$ Z" s' d  k$ f
打开这个数据库,建立一个表,命名为bbs
) g; `! h$ ?" g* l  F' K; C! d3 z! L: x7 X7 s8 ~% ~& p
该表中有几个字段:
5 {. r" T: a  K( q9 H6 E" k) y& U( Z8 |" H  W
id(自动给帖子编号),他的数据类型设为“自动编号”
* r3 ?. U- m8 ?9 d- ]. t! @
" m( ^7 n' q" H# S8 A, Nname(用来储存发表的作者),数据类型为“文本” " n( |* z* H8 m3 G1 F; J1 P
  D6 A6 d/ R7 F8 \3 V% V
title(用来储存帖子的主题),数据类型为“文本” 7 o. I3 E1 o7 H8 S) U7 M

3 \( M. ]1 j4 c, e7 n: Abody(用来储存帖子的内容),数据类型为“备注”
5 Y/ y9 j& `' S
: Z- L0 z* x  |* |2、conn.asp
0 [1 ~' M1 g' H: _' E3 j源代码为: % f: s, ]9 n3 o% X; [
<% 6 ?7 ^$ ^- f" k4 o0 W
Server.scriptTimeout="10" ) P3 ]* P- M$ N. h
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  r* \# o' v$ [6 h# x7 f( s& y% Xset conn=Server.CreateObject("ADODB.connection") ) ]$ ]+ l( f3 K$ b
conn.open connstr 9 N' y; u, d. B! I1 q6 G
%>
8 }: Q2 g& D5 \8 C: G! B* Q! w4 r( Y+ P2 R0 Q; {( V5 p
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! , x, M9 j+ h7 J9 i5 T: U5 @( j" i

! f# X# p; u0 k5 V' s( C5 h3、say.asp
9 v- H5 F' o- H/ r0 z9 p
) T% f/ K* P7 T* c源代码为: ! ~: Y0 t. {9 ^- O# g# y
<form method="POST" action="save.asp"> 1 V* c5 l8 \6 p7 A6 e# M9 q* J) {
<p>大名:<input type="text" name="name" size="20"></p>
7 N$ M5 U+ @9 B7 E& ?2 E<p>标题:<input type="text" name="title" size="91"></p> " w& r" W# p9 d# M9 U' e2 V) S
<p>内容:</p> ) G* s- U% ^* |; p. f6 ^* n
<p><textarea rows="11" name="body" cols="97"></textarea></p> " o8 U; j! h& @) A0 z/ D
<p> </p>   t. Z/ l+ T* ^+ |! \+ [* A/ E
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>   S3 @+ g" n. M- E: @" U0 m
</form> $ f/ _) u2 b: c/ c+ C
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
$ l/ Z6 Z% ?- x4 a4 {不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
3 r3 G- Q5 p% g& R, P5 o1 T& j, z6 m" a5 v
4、save.asp
, z. ~- l) m) d/ Q; L! ?2 B
$ k$ g' ?( M% U0 r- ^" N源代码: ; k8 S& b' _5 P* K+ U" l
<!--#include file="conn.asp"--> ' H6 N2 `0 Q- X+ Z! r7 m
<%name=Replace(Request.Form("name"),"'","''") & V" t$ x9 @( _  X* l& O
title=Replace(Request.Form("title"),"'","''") * W' Z# O9 g5 M' P/ w. R2 `
body=Replace(Request.Form("body"),"'","''") " K' S7 I& ^4 H( Y: l% x1 L% }0 N
%> 3 l2 N" [: O2 N* K; }* x
<%if name="" or title="" or body="" then%> , p0 S4 {7 s" z" ~5 q6 U2 t
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 2 D7 y8 v3 n& X* [* \& D
<%else%>
4 }: R; K! X6 R3 V$ m<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
4 F. y1 _0 p8 Y发表成功!<a href="index.asp">查看帖子</a> 7 Y: y0 C5 m( _7 K
<%end if 7 T) u  e! U4 M2 f
set savebbs=nothing ; f; n% @! A( G% Z
%> ( q" ]2 O' M# F0 G# @. ]8 I
9 ]- x7 I# o, D& i$ Q
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! + @( \9 H1 l4 ~! U: r# g
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, & U6 O* T; r" b# w& W6 K0 \
接下来几句: . ^* U" L7 u8 g8 D. {6 c8 |' u
name=Replace(Request.Form("name"),"'","''") 8 q/ Y! M# K# T4 h! ?1 K
title=Replace(Request.Form("title"),"'","''")
. h4 o/ Y: ]/ a% X5 {2 ^body=Replace(Request.Form("body"),"'","''")
2 d! L+ w; Q5 |: \; z. M% G: l9 P# h- f+ A1 J. Y6 W" s/ `, h; H2 N4 O
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, $ `! D. E5 Y8 i4 e/ |
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
" j$ u9 Z" r1 k如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” 1 X* @, H1 v2 M* c  _
就是把表单中名为name的文本框发来的数据储存在abc123变量中
; J4 @0 Y& W4 a) `& k/ W) Y( M7 `3 Q' \  M, \) M% M8 ]; U9 R
接着:if name="" or title="" or body="" then
8 r5 U+ `# O2 b! G! E. i判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
0 ]+ Q9 S' I4 a“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
9 C: g: S  o" g/ Y- p4 E: O. u该语句属于html语法,大家都看得懂的!
9 L. b+ `  x% u; q1 L8 V& S- o' `1 e
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
# ~, e: i: w7 A! Z$ ~“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>   T; R4 v3 o3 ?. M$ R/ X$ l
发表成功!<a href="index.asp">查看帖子</a>” 2 E5 f3 v2 p" }$ ~& i5 _5 |& v

7 x7 ^7 G& ]! g8 S( r"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
. r9 e, j( T* y3 binsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) : e' G; l1 C( |0 {9 J+ b/ ^+ B
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") : R4 {8 ^( A' B& I3 }1 h5 k
values是“值”的意思
9 F$ v8 ^( p/ R  s* d% z0 D- g% w就是插入向量name,title,body,向量用格式'"&name&"'表示
3 c! `# ~$ Z# V" D) L0 j1 S3 m) s8 Z! D" T# {* ~
最后:end if就是结束if……then , F; n7 p7 c. [1 {5 v* ^
set savebbs=nothing可以说是关闭掉:
& U& f2 y/ E* i# D1 f0 Vset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ; w/ R4 K8 S: ]% L$ F. p

1 K* q% W" o) C. I
. n" J2 N; w9 h4 P" |5 ?" i5、index.asp
  m* Z5 M9 o5 h# b源代码:
- |6 ]" j/ ]$ d) r$ T<!--#include file="conn.asp"--> 9 G" a4 y6 [- x6 P
<b><a href="say.asp">发表帖子</a></b><br><br> 7 t. R5 O5 D8 G
<div align="center">
# A0 o! O$ F9 F# p3 H; e<center>
  {# s8 w$ q6 }, O' V<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ) U) g: `1 c5 }/ _% Q
<tr>
7 n2 [: \3 i) h$ @<td width="17%"><b>作者</b></td>
. M9 }4 A: f; ]' C5 C9 T: [6 }<td width="83%"><b>主题</b></td>
4 Y% k$ s. B. u* J7 S3 b# I! |</tr>
: K8 [$ `8 J& x# b4 M7 l" \</table>
& Q+ Y( Z# S) G! x2 k+ l</center>
; e) h0 C; W( M/ ]8 \</div><hr size="1"> . f, C0 E2 s8 k2 t
<%i=1 ' Z% S: ^7 {. i( A3 C' z& r
set showbbs=conn.execute("select*from bbs order by id desc")
* t: m& C  O6 W+ f# \do while not showbbs.eof
& O8 f" h/ c( l1 n! a* c5 m; f/ I/ N9 a%> " D6 v; R' A! K" f" {
<div align="center">
. A$ _, A0 A# j+ `9 ]5 V<center>   ^: _, a- f2 r2 a& k% C( A
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> * O* @$ H& F+ x% v8 C: E* P; H
<tr>
  o2 |( Q# J* f4 [1 t2 ^<td width="17%"><%=showbbs("name")%> </td>
. a7 g' R9 ?; V* R* z4 O' T, G; v<td width="83%"> 2 E' G3 H' U3 s6 l
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td> & y$ J5 F6 C& _! z6 i) i$ ]
</tr> 7 R! a; G  c/ r$ r/ d
</table> : h: x0 a' j. x! J1 B- v
</center>
7 H5 w' p3 P" _$ X. D</div><hr size="1"> + Z$ `- m) S( J2 r; o5 o
<%i=i+1 " q1 ~* d) p) |" F5 U+ ^
if i>50 then exit do 3 Q$ v# E7 P  H( K! U. r. E$ Q
showbbs.movenext   k, c7 ?! h- a, r7 P0 N7 {( \
Loop - {0 i, W& A  M! I5 l
showbbs.Close / D! R. H8 X7 j3 N$ X
set showbbs=nothing % Y: X' @; B* v- z  v2 p# M+ Q, L
%> ; u, U" |& s0 R1 S
' J" A& [; m  X. ?/ ~
这个文件就不一句一句的讲了 8 Q3 r* F% E% v: i! ~/ W9 ]0 {
主要讲精华部分: ' `3 C* C7 w/ {$ H8 I6 Y5 M! `
set showbbs=conn.execute("select*from bbs order by id desc") " y/ }7 s0 |# M+ r3 w
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
- q# s: D0 [9 u. D* B还有这么一句:<%=showbbs("name")%> : y, [4 A. A: M  n9 Z' n
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
3 J! U0 A5 _- ^: f1 `) ~0 o) J代码中的i=1和i=i+1 - w- ]9 W+ X) ]- s
if i>50 then exit do . `- T+ e% t! L
showbbs.movenext 1 E9 w% l* B# e" S; N% z
Loop
" t  @2 N# H9 N' H: V, eshowbbs.Close
, w( r2 q7 p  o! i" Eset showbbs=nothing * U) L1 `7 A1 p

8 q! ]- \' V# ]: G  E  k这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
! K: H( L9 s% C9 m% cif i>50 then exit do中的50可以修改
4 y. q5 H" V: {3 e5 S0 _1 m但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 " V1 {# G1 T' q( @9 j, a( S8 H/ c
还有一句很有用的:
% i1 H, a( R$ d<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 0 G/ i+ z- y) Q# A1 w
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, / A5 a5 O. j6 P, g% m
等一下在show.asp文件中就有用了
( R/ x- L" c8 r- Z" Y
5 D$ S; ]/ X& F. G, f8 C5 ?; ]5、show.asp
+ U% X6 D& ^9 ~8 _3 C0 W源代码: $ f5 ?  F5 \) f5 w0 V4 @# J

3 [0 r. G* }* R/ J9 H( U$ P; h2 ?<!--#include file="conn.asp"--> & d3 u/ n# \) C$ m7 i" Z+ |2 q
<%id=request.querystring("id")%>
% @3 z( y' {! p( ]' x<%set show=conn.execute("select*from bbs where id="&id&"")%>   ^$ q& [3 S  [* p& w" o( C) o8 k
<a href="index.asp"> ( _& ]5 x, r2 Z3 O
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> $ [* ?7 F4 _/ H: Q# ~0 c
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> 0 q+ L4 B* {. u7 i6 D: B1 W4 L- @3 p
<tr> % n5 g/ [* E! s9 z7 n+ i5 N. P
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> 5 E) r2 j) i5 h! e0 |8 k
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> - J  \' ?: `3 F& a3 P# z
</tr>   V, P% f3 }! Y7 J$ X4 O
<tr>
; Y* d( u; Y0 `( I<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
) ]4 ~, u" `9 M6 A1 e2 g+ @</tr> 4 a7 M. I& J+ v
</table><%set show=nothing%>
- J8 x; d. d9 P, l. C6 I0 h
' N' a8 f) u( [- M1 E$ C' y) Z劲语句---精华语句: 4 O2 |3 Y! e0 I- d7 Q3 [
id=request.querystring("id") 7 @( p; M0 \7 M& R
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, / _- w" [% O7 D6 k0 @& C) C; V$ }
id=request.querystring("id")就是把地址栏中的id的值读取下来,
4 S3 l+ E* a* ^因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, + c. W. E( H% K, N6 u7 E
所以show.asp使用id=request.querystring("id")语句把数字读取下来
; {, _$ f) C0 c6 h* O2 t于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
  U1 t( s  z' T8 O! ]向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 3 _) V) P2 w5 M) F, @+ n3 g: f
最后<%set show=nothing%> % A( |0 N3 L  B+ s

" Z+ {7 r' Y) l好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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