返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西/ g, V+ ?1 Z4 e9 v' q$ Y
真NB..佩服ing .....
* o. }1 I6 }' o大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
/ x$ N: k- D3 f+ ^
' S7 ^2 D+ v& Z' Z' K同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
! n- }' X' W( B$ @' w% r, ]' t+ A2 F; a# {6 K3 N, E
一、建立文件! " B* y  \: v: k3 @* H7 q" L, T
最简单的论坛也要有几个必要的文件,就是:   p5 L! T3 D/ F. x4 I; e
2 Q. k/ u$ E4 y" \  `. `
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
1 I& L8 b- f* V$ ], e5 c5 c1 x' B6 ]- s' w
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp / v9 Q* T% I: s) q

# H9 @5 O# ^) e2 H6 k, K9 j8 J% I3、发表帖子的文件----命名为:say.asp $ g4 e3 q9 `) U& k! L
, r3 g! a4 [+ L( U2 w7 `3 {: O
4、保存发表帖子内容的文件-----命名为:save.asp 7 a( i$ u( j$ Q3 t! i

+ x1 w0 s8 j6 }0 \. e5、显示帖子标题的文件------命名为:index.asp
% B/ X8 m$ w" L% B
8 z2 k) a6 Q# _2 n" E9 L8 ]6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
5 F. F9 M+ b9 m$ H6 ~+ Q, C9 R0 p) F3 D, H. m$ [* d- r( @1 E
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
/ q5 G' h& O# {- |) u
( f6 _, E0 g! h0 V5 p1 _二、各文件的主要内容 + ?; Y% X" S" M! ?! w" `4 Q' n

5 A( I8 x- h2 j* k  t8 C8 M1、bbs.mdb & S" j: c( u& Q+ Y1 C5 m# M* q% S

' H5 C) ?0 K/ F! M- L打开这个数据库,建立一个表,命名为bbs 5 t' R7 J$ `* ^$ ]3 @/ `3 q

; N2 P8 c3 E3 j1 E$ ]8 q3 k. ~该表中有几个字段: & n6 H# `# K" o8 r

- `5 l" f+ G1 b: }9 f1 wid(自动给帖子编号),他的数据类型设为“自动编号” # J$ y2 v# ^& i- F$ ?
7 r8 w5 J! o* h9 \- R
name(用来储存发表的作者),数据类型为“文本” : \' z1 K3 T$ ]& V1 P2 _; V% V" M

1 B# V& O3 @' Otitle(用来储存帖子的主题),数据类型为“文本”
. c: k' m2 S; P- K+ _* \* n$ a" k9 ?. e6 t
body(用来储存帖子的内容),数据类型为“备注”
4 |; r- R0 k/ C/ A1 j6 w5 y- G# D! Z5 \" `4 w
2、conn.asp
6 Z3 R  I) v3 r: Z3 @7 x源代码为:
( h1 Q! K/ j( S<% ( S; b4 D3 J# V3 A" e9 a
Server.scriptTimeout="10" 7 p! k" u2 M/ m/ {
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 3 E- A- z9 A, ]1 u
set conn=Server.CreateObject("ADODB.connection")
  q  A0 M1 X1 i6 u  T+ W5 d) tconn.open connstr
* V/ X& l6 f. e" {3 M2 {%>
- b+ d/ `9 u1 ?$ a5 v1 j0 c
6 M7 w% C& e1 D9 R6 i; ?' _这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
5 Z' Z: n2 Z8 Z3 [) I4 C
2 n* w' T, e4 F* h3、say.asp
) I( w/ h/ V# p5 L% {. N( S$ y2 `
* O% O' M9 \5 @- }# a$ \: q源代码为:   ~9 }, b6 \  P& P3 j
<form method="POST" action="save.asp"> ) T% m# K- E( E, C( R1 y
<p>大名:<input type="text" name="name" size="20"></p> 0 B& P( u. ~1 n+ s8 o' _1 h3 F5 R  f
<p>标题:<input type="text" name="title" size="91"></p> 2 s: m9 E9 K1 X- `1 d& U
<p>内容:</p>
/ \3 l8 Z8 L( g8 ?' v3 f<p><textarea rows="11" name="body" cols="97"></textarea></p>
* j( X& }/ R3 G  j- S<p> </p>
; j, ?) i9 ~$ l% P! ]- |<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
5 Z, j+ O/ @( h% l( S</form>
$ M% }: h  U; B/ j大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面 / S" s- U3 N5 M; [
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! / w* \. Y5 n2 D, g  O
7 Z* q5 h( Q+ e0 ^
4、save.asp
3 M! P# u) |$ b3 z; w7 f( I, o! b9 L5 O3 l, y% X
源代码:
& M" `/ k0 Y; ~, q5 |! P<!--#include file="conn.asp"--> / M  U- B" p, W- ~8 A' }
<%name=Replace(Request.Form("name"),"'","''") ) y2 ?9 y- Y  P7 K
title=Replace(Request.Form("title"),"'","''")
3 z1 o, j1 _1 `" ]body=Replace(Request.Form("body"),"'","''") ' h4 G: ^* I( `0 |8 C  c
%> $ a+ Z8 w" X$ q, C/ C& v4 B
<%if name="" or title="" or body="" then%> 0 y* `5 q5 B$ ?, h* E
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
. ~' J; u; e( x% j( e<%else%>
0 d0 ]2 j5 B, c9 g: y$ b<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%> 9 r& K- }- x* m6 t. H% q+ {. t' R  R
发表成功!<a href="index.asp">查看帖子</a> / y% {1 p/ A8 o; L& b4 U
<%end if
5 m& ~/ L) S+ M  Q2 gset savebbs=nothing
0 L. p8 N3 B$ u! F%> $ O1 A8 I1 k& J3 F( z

/ |$ ^3 z: B4 m第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
5 h) K8 C9 k9 j  D8 Easp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
, h5 X6 s: u$ q2 ]' `4 {接下来几句:
: G9 k4 @- ?3 e2 G( n1 wname=Replace(Request.Form("name"),"'","''")
& N" ?& G* E# C1 ?7 i! otitle=Replace(Request.Form("title"),"'","''")
) h0 M: D; r: V, K4 M0 Mbody=Replace(Request.Form("body"),"'","''") % I$ ?2 R! s( p6 H8 ~7 H
/ U" [8 j7 X0 C1 q# b0 R
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ( E0 [! W1 M0 g
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
8 B: n7 f  }( k2 W1 U2 y如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” + E+ g$ Q! m$ P6 U, e  p+ l8 ]" q
就是把表单中名为name的文本框发来的数据储存在abc123变量中
( R( q5 W' W8 }9 P+ h% z0 W8 h) V: U: p( X( D
接着:if name="" or title="" or body="" then ( i( g- P5 [' `7 I6 x( {8 y
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: ! z* q2 \6 B* @- L6 Q
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” 7 F, ~; }9 r  \6 @4 Q4 `% z& Q
该语句属于html语法,大家都看得懂的! , ~- X7 N' [# a

  F- i+ x6 P% b9 q"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
8 i" r3 H% O" U; |. [“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ( W7 h, p3 Q; [5 ^0 D
发表成功!<a href="index.asp">查看帖子</a>” % V5 C' F) h) U; p- l5 j2 P# h
4 x; P. ?4 p) f" E! q& y9 p( q
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
% Y/ {, m- e1 `- ]$ ?1 m( qinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) 4 n- @; t$ M2 ?1 l' K, x1 E3 {- V
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
! |% C4 O* @7 c$ P; _! Pvalues是“值”的意思
8 I) A- N0 G9 E1 j就是插入向量name,title,body,向量用格式'"&name&"'表示
0 N/ s% g  J( v) Q- h
# p) q6 ?' p! K/ }1 M5 l0 f! |最后:end if就是结束if……then ( A7 o2 R# x# w9 g# E$ \
set savebbs=nothing可以说是关闭掉:   U  N4 b3 p9 x1 O1 G; Z, S; u
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
, I' q4 D) V# T( n9 U7 Q! x  X" @2 O# q! Z3 T
) }+ M2 A8 ]7 z5 U
5、index.asp 2 j4 i/ J" P& a6 d; f) v1 X
源代码:
  V& q0 o4 ?+ m/ a<!--#include file="conn.asp"-->
0 f; E/ w  z9 ^. }) J) w<b><a href="say.asp">发表帖子</a></b><br><br> ; G, b) q6 q+ x! J! U3 y
<div align="center"> & @( e: g- P& V5 X& K0 p
<center>
# h  f% S- _3 u2 y7 u<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
8 ?  s- e) `9 L0 V$ W' m% ^<tr> " n2 H  t. E+ x% o  d9 b4 J
<td width="17%"><b>作者</b></td>
3 a, _1 Q9 \' [( Y<td width="83%"><b>主题</b></td>
$ h% B6 v' D( T</tr>
6 R' P& J# c6 n</table>
& h1 T/ G& |* F& C</center>
# M6 Y4 c7 u; T  ?2 P, Y% F4 B</div><hr size="1">   z/ t" j! l! N, |1 Z, u4 P
<%i=1 ( Q1 }3 s7 e9 C5 [& O" Y
set showbbs=conn.execute("select*from bbs order by id desc") " t# v) Q1 B4 Y/ \0 c/ f
do while not showbbs.eof
& T8 U( M, {/ i3 {; |%> / W; t1 E7 F6 }, g/ c
<div align="center">
; I5 G4 G$ \  h) t9 `" T4 s& d" @* t<center>
* M, y3 `- ?: O9 j* _4 A<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> - S; }) E- O( v
<tr> 5 A! c8 N# i  `6 @; P4 Z' E
<td width="17%"><%=showbbs("name")%> </td> ; u: J; w3 ?* u3 I4 s! }. ?
<td width="83%"> . t& Q* Y6 Z! @9 s1 }: V
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
( u; ~) N$ O4 e; W9 F, @</tr>
: N3 N$ {1 R& x' {</table> # D% P& k' S5 B7 _* L0 r$ R! f, f
</center> . L4 M3 c/ E0 o, {! @% \1 L  o
</div><hr size="1">
- \9 A6 o2 u& n0 B<%i=i+1
  ^, F) h3 C2 }! cif i>50 then exit do
3 ?' c2 R% D, `# ~+ u: e+ i% ?( ]showbbs.movenext   G: D6 j+ K9 @. Q* q
Loop
. h( i" |' d4 W2 E% K# [! ^' Kshowbbs.Close
3 T; e8 f3 u  J6 ^2 V0 o# Iset showbbs=nothing " a! d* k/ |5 R2 R$ |4 o
%>
. a3 w/ {/ Z# x( R3 E1 S# P* |1 j8 E7 J( s: c3 L/ ?2 N
这个文件就不一句一句的讲了 ! t" p  R5 n$ L# q
主要讲精华部分: : D6 M$ w1 N  p' [5 P3 c7 g, {
set showbbs=conn.execute("select*from bbs order by id desc")
# K4 @$ Y1 T2 E$ j  ?意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
; Q: x% m  e; S! i! C还有这么一句:<%=showbbs("name")%>
- P9 r$ E4 C, }4 j0 M  f9 d, V  z就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 3 N8 P& d+ N1 E) u
代码中的i=1和i=i+1
( x$ i$ m! @7 I' K$ R0 @2 q" f2 Dif i>50 then exit do
  g7 K+ E1 J! ?showbbs.movenext % r) A+ K: o0 P. O5 f
Loop
! S0 r* o5 C7 V! ?showbbs.Close 5 d; l5 e! F" o9 @- T  V) W; I
set showbbs=nothing / [$ J& g& G  W, s: `( [

$ T0 ^, V6 }5 C' S0 j这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
) D. k7 Z+ B) d4 Qif i>50 then exit do中的50可以修改 % s: P1 u1 w9 r* u( d; q+ f6 n
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 8 j! `3 A, O& u' r  m
还有一句很有用的: + L1 I  {1 ]/ c: o5 s
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 4 r3 f; @- H: a8 l( ^/ T( b
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
+ \' R  q+ O) W# h等一下在show.asp文件中就有用了 ; Z# \9 i) e! E  e

( r1 R4 y% c- ~" j8 x* h9 k; b: e5、show.asp
- r5 v5 N% `% B源代码:   O' S' @+ P* K; ?

: K. R. S" V  J( c! @5 G9 }# r<!--#include file="conn.asp"-->
- R: ]9 l, y9 l$ X2 U<%id=request.querystring("id")%>
3 Z' ?7 B/ K: E( E% [) p3 O9 V<%set show=conn.execute("select*from bbs where id="&id&"")%>
& ?3 w5 j2 j5 W6 T<a href="index.asp">
" M- u: z0 L4 q7 e3 V; M; {8 l<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> % h+ x" P9 w) Y6 X: s. i
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
  I9 y0 u4 V. T9 B8 T<tr> 9 S* s8 I# ]6 B. N. `6 C4 |, V
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ) e# E4 E2 E1 L
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
& ^2 a2 n5 g9 a$ E# x! @5 D</tr> % b* P2 @' I$ Q; D" E) ?3 j3 n. ?1 u
<tr>
" w# H0 \9 F/ R' n9 s6 o<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> 5 H* o9 O( D+ [! k
</tr> # y7 y1 s7 O& a0 {
</table><%set show=nothing%> " }+ f  _! |2 u3 i1 c& a
0 }# r" p/ p  p  v- z" D
劲语句---精华语句:   ^1 b/ G1 X$ Y
id=request.querystring("id") : w3 `  o" G- t5 [
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
& \  V$ Z% p; y+ Qid=request.querystring("id")就是把地址栏中的id的值读取下来,
$ k& V0 G/ W( e" h' z因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
& o" q, n, a7 I# u5 R: Z所以show.asp使用id=request.querystring("id")语句把数字读取下来
9 ?( s4 w1 \! P2 D& W( R5 E于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") ' M" O$ s; X2 k# B: V  v, V. n
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 4 A: \9 B+ Q, U" r  d8 D
最后<%set show=nothing%> * g" L+ o+ j5 j' {$ b8 b

7 c  \; ^) t" T6 O% m; j( u: R" S好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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