返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
/ A! v3 V7 i0 M9 g$ F真NB..佩服ing ...../ W/ _, q4 t9 {* e
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
' y+ |7 I/ @/ {5 |; m# C) d7 K$ y$ T( y( \, j% Q
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
! Y& H) o8 {( T/ S; o% ^
# U. l) j% N1 ]1 s; _( B3 S$ b一、建立文件!
9 Y& X" ^0 z1 p$ W* |  e最简单的论坛也要有几个必要的文件,就是: % T' w+ Z. i; F7 |2 w( o

* h2 U# g3 {9 j& r; V8 y1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
1 u/ f, t" Z  x. L$ K" J3 V9 h9 |, F- ]' \6 S7 l- L1 N4 L
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
% ^2 ~/ }& f3 r2 ~3 l' f; G$ _
: p6 J9 g4 K, {8 e3、发表帖子的文件----命名为:say.asp
+ S  S( q, ^/ \# t. w. {: l7 Y& ?% j* I( x" J. A; ^1 I0 [
4、保存发表帖子内容的文件-----命名为:save.asp ; [6 E' P) _, s2 y/ h# O# s

$ Z  C( C6 Z( h* G5、显示帖子标题的文件------命名为:index.asp " X/ p  |, s: g+ Q) m) B8 _
, R) S; q4 m$ w' o: P
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp " r& H2 |0 t2 z) \0 e8 g

3 Y3 i  l" \, b- [- z4 V; ^4 u建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
  X/ O1 F' {, N5 `/ x; G+ T5 d- _* Q/ _
二、各文件的主要内容 ! ~0 s( r& w8 x0 a  B* A9 W6 W/ z

' N$ r* Y* Q4 G# F: q' X  F1、bbs.mdb
1 d2 A: o3 _8 D5 ^* a' w0 Q: M' o4 Z/ v
打开这个数据库,建立一个表,命名为bbs
1 e6 ~$ z: @5 O& v1 \, Z9 v5 q! u% S# B, y" ~2 z
该表中有几个字段:
$ ^) Z" D2 E4 s8 n( Z' B  j& @6 m4 C/ u
id(自动给帖子编号),他的数据类型设为“自动编号”
- r) L) e( C/ y) U
* h* E- z! N5 f6 |name(用来储存发表的作者),数据类型为“文本” , F; H8 n! V$ b7 h0 G  Y6 w
6 f  R, W0 H5 k% y
title(用来储存帖子的主题),数据类型为“文本”
" X& U5 N/ s. `2 F. N" q. l7 X4 W# Z7 ~( W, K2 a/ C  c" s
body(用来储存帖子的内容),数据类型为“备注” ) B; `! f4 ]# \5 ^
: E% ^3 ?3 S' R# X6 ?  E
2、conn.asp
& M# `) {: `, I源代码为: / T! h5 A9 I4 U. J8 N2 y0 W
<% ' w% n! H8 }2 z7 b; I# Z
Server.scriptTimeout="10" $ Z  x4 x( y" Y9 o
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
# r: L! Q/ \) p+ fset conn=Server.CreateObject("ADODB.connection") ! c* i" Q# }' Z5 W1 F2 Y
conn.open connstr
& a% H) E' K* c' K" K* E%> " z2 e( n7 n& T, h
" u0 L3 U0 z! _0 A$ Y7 a0 w( B" b
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好! 2 |) ?  }, A3 G) x2 x0 r: e
8 n0 ^2 n6 J$ n) x( e
3、say.asp ; Y2 b. V* s4 C8 i% b' T; q
7 a$ D1 U) M. Z' V! q& D
源代码为:
( L( q4 l5 P+ T3 m) q# ~3 c<form method="POST" action="save.asp"> ! |1 Q% D6 f3 o: {6 C. u
<p>大名:<input type="text" name="name" size="20"></p> + N5 A" t* U+ Y+ _4 A6 D7 j
<p>标题:<input type="text" name="title" size="91"></p>
  q+ J/ j2 c+ a1 S<p>内容:</p>
- X5 ~& b1 W/ T$ a# y<p><textarea rows="11" name="body" cols="97"></textarea></p> 5 x5 {9 G1 e. y# t, x7 Y% h' {, R
<p> </p> 6 C" a" U) K+ y1 |* x
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> . G' X8 A# E% S/ p
</form>
1 x( d4 o, [+ q3 J5 z2 P大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
  ]5 X+ F5 |9 M不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧! $ d  M- k  d2 R. _' t5 R; r

+ m/ Y' b) S) d9 K! l4、save.asp 2 z5 V' S( J# X
& ~/ z$ ^) |  A% L9 A& L8 ^) e; T
源代码: * E$ I; u0 B9 N
<!--#include file="conn.asp"--> 5 R2 i# k( R$ U0 J* n% S
<%name=Replace(Request.Form("name"),"'","''")
2 \9 p* h- t2 Y$ M' l, T3 G$ ]title=Replace(Request.Form("title"),"'","''")
5 A* w$ C, X0 {9 ]/ ^body=Replace(Request.Form("body"),"'","''") * Q7 g3 Y" p3 \7 V' X, B8 s
%> ' n5 U/ o; J- D; q; c+ c
<%if name="" or title="" or body="" then%>
, P0 A0 \. \; O6 y请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
- t6 Z% W, c1 ^- y& @<%else%> - {  S& f$ x; q
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
: _. y% U9 S0 ~$ H发表成功!<a href="index.asp">查看帖子</a>
1 _$ c  v% {! S& D9 d$ m<%end if : U0 _# Z: w5 Z* G. k4 `" @
set savebbs=nothing
; f) T) j$ \9 b/ f" W( n6 o9 O%>
& ]1 H) E: v# q  h# j, E9 j
& h  o0 ~$ W) k$ |6 [第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! ! S. i0 E/ S( @+ i. X
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
" }5 @6 s( B9 y7 A接下来几句:
/ ^+ R( Z, |/ R/ U/ Aname=Replace(Request.Form("name"),"'","''")
+ `+ `6 S3 N8 O% J/ Q0 w+ S2 V+ p4 D9 T0 Htitle=Replace(Request.Form("title"),"'","''")
& ~& C/ N8 Y, o% o0 `body=Replace(Request.Form("body"),"'","''") 7 k6 j( c/ [$ f6 f9 S
* D7 S; H1 D4 _2 P, E' r2 |+ ^
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
4 O3 W. p2 K! o而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, % ~8 x# G; E3 f8 E2 e
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")” ! a( B( S; H5 h, L2 \2 R2 o0 m
就是把表单中名为name的文本框发来的数据储存在abc123变量中 . \6 d* H" h) H

% h% ^) G/ _9 |6 |接着:if name="" or title="" or body="" then " r$ Z% u) x! b% ]! Y$ }: R) V
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
- F6 D1 Y6 h$ N# V( v% J' Q; ~“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
9 X& E) |2 N, I: K; L+ U该语句属于html语法,大家都看得懂的!
* k  j/ F9 G; `; q8 B/ [# R) V9 |* z
( V* S& t* h  t0 S3 u- {"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句: ' K$ }9 @; F/ k7 N7 U
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
- \+ y3 k! R1 ]  e+ }0 P& @3 T发表成功!<a href="index.asp">查看帖子</a>”
1 l: P& m' x( R0 Z, N' I3 v- S+ i# s8 L- {5 K, t: j; M
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: 2 z$ y; L3 Z4 x$ d: s2 ]
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
) g7 |2 A: N9 s中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
3 ?2 m1 q- X9 ^& y( ]4 Pvalues是“值”的意思 / ?! A9 x- Y, i8 M' C1 D
就是插入向量name,title,body,向量用格式'"&name&"'表示
0 f5 L9 d" {( H* O" d/ Y# Z5 [: M
最后:end if就是结束if……then 7 d" m" D6 k% }
set savebbs=nothing可以说是关闭掉: . Z+ G2 C0 X- l, B
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')") ' z5 l$ Q5 \, {+ ?. H

' y/ F, U" o  ?& t$ n+ U# X5 F) Q  l: ?$ k
5、index.asp
$ t- e* }3 D$ }$ w; C源代码: , e4 z+ i4 D& r# @/ |% s0 M
<!--#include file="conn.asp"--> , ^! a5 K3 D) _  i. u
<b><a href="say.asp">发表帖子</a></b><br><br>
2 }  E2 r) Y& f# t8 I<div align="center"> 9 h4 g  `% V+ M8 I
<center>
$ V9 w1 ~9 _6 O8 M9 K2 Y<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> : s& R3 d4 ~6 I' l& _' {+ f( x
<tr> ( E' K. J9 [' n  W, {4 a% S
<td width="17%"><b>作者</b></td> % m8 B' Y- {, d$ Q# ], T
<td width="83%"><b>主题</b></td>
: p  M; J. Y" u6 n</tr> $ @+ P* a# O8 l* {. o0 R
</table> / R' k5 Y! m$ M$ j) D! ^
</center> ) ^5 G9 j# W# h: S; s
</div><hr size="1"> ( ?# N1 K" p4 \" T
<%i=1 3 p" }& l3 J, K3 h7 y7 U4 U
set showbbs=conn.execute("select*from bbs order by id desc")
, S$ f. ?/ D! F; U) k0 V7 U" Edo while not showbbs.eof
" R* w: _2 [5 i% a) J7 N%>
+ d/ d3 v) Z, o( m9 m<div align="center">
) K2 w( q+ Z8 r! G/ \8 x( h) q<center> : C5 V  Z) ^8 ~& \) G# _+ I
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
  S5 `5 }4 X' t! |* Z' j<tr>   @* z' Z6 ~' \- z" ?. I8 O  ^
<td width="17%"><%=showbbs("name")%> </td> , R8 C  f3 H7 G
<td width="83%"> + e# b8 T: ]% B' b
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
* L# n( |1 t& G: U</tr> + U* N; t. H8 P" i' c
</table>
0 e" w1 J( a0 M6 B0 b</center> 9 g/ k) l7 _. I! O
</div><hr size="1"> ! d- Z* w( ]# }* o
<%i=i+1
0 Y2 q) K) y, w" e/ J8 bif i>50 then exit do
2 @/ v  @3 B; v) m7 t8 \: j7 lshowbbs.movenext
9 V/ U" C: ]; {Loop
9 Y# a& v- u# e& Y# D* `showbbs.Close
  ?, {% q  j2 X! a. N2 n) Zset showbbs=nothing
" f$ S# l3 S. D. d%> . C1 ?0 A7 |$ Z
" B& i" C  ?2 p: _
这个文件就不一句一句的讲了
  a7 J) S' `8 L主要讲精华部分:
; Q8 r3 i+ H$ vset showbbs=conn.execute("select*from bbs order by id desc")
7 g* I" b1 T' t( S意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
, N8 k; M- y; z# q; U! R+ v. {) Y, ~还有这么一句:<%=showbbs("name")%> / t2 `8 o( [# |1 M" `
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
# H; [, I7 {4 h- }# c$ h9 e代码中的i=1和i=i+1
( B; J% L1 ?/ }if i>50 then exit do
! v0 a' [+ F1 ^showbbs.movenext ) }+ k+ R: P/ P
Loop
( ?! `2 K1 n2 P% o2 |9 y# `showbbs.Close 6 D7 i) l! x# N1 e
set showbbs=nothing
+ a, @4 Z: g% @
0 l6 i& z. ~  q5 m& m这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! 0 v, r2 H! F) |
if i>50 then exit do中的50可以修改 & Q+ n% t6 ^# I; H9 O/ _# y1 q7 d
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 8 ^, G5 ^8 L% \6 {1 `- |5 `
还有一句很有用的:   F. F8 _8 b9 F& A; ]  D
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 7 Y* x. J7 w8 g3 Y
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
1 b$ V; t9 U. X7 h$ O等一下在show.asp文件中就有用了
% d3 P) \: H' `1 H2 u8 V, u( H9 h/ c) k+ ^
5、show.asp
! H% s( c. j7 f源代码:
7 L: p2 B; i6 L' O1 w' D- Q. u0 e+ Q
% e, s2 x) O8 s3 Z8 Q; F( y/ u<!--#include file="conn.asp"-->
8 ^+ G# ^  f8 c$ C4 m+ Q<%id=request.querystring("id")%> ; W+ D4 j. m3 G3 F
<%set show=conn.execute("select*from bbs where id="&id&"")%> ) l9 m7 k4 Z* X" i( ?
<a href="index.asp">
, e1 u& H  l4 C4 _$ I/ P<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
2 }# b0 J5 K% ]/ O' Y" t  _/ P<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
+ e. b* O3 O7 W<tr>
: j3 }# n7 t9 B<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
5 t- {' a0 ~3 }) Z& U<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
* Q# I# ]% F, U" y/ W</tr> - h0 J; @7 x' L2 \
<tr>
0 u$ @) i& V% s9 C<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> ) H2 h# B; n( F
</tr>
( V2 Q" X( J* G* T" n</table><%set show=nothing%>
( F, f1 s% c& O! f3 T# {: P) q
/ J& L+ u5 Y2 q. H3 I劲语句---精华语句: 3 V! X" j* G- t, ^7 `
id=request.querystring("id")
0 F. O. B3 B+ S% ]在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
4 U+ X9 B/ Q; I- S5 O' O# Wid=request.querystring("id")就是把地址栏中的id的值读取下来, 0 o2 y9 E0 h9 b  \& L; \
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字, / v( J- j$ S( u, h3 x# C7 J# b# O* a" m
所以show.asp使用id=request.querystring("id")语句把数字读取下来
5 v" H8 w$ U% w" X6 S2 }( f于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") $ f$ ^8 P: s" M4 g- V
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
" X- W8 S1 Z! t4 c8 e$ j$ n+ O最后<%set show=nothing%> / e: a+ z" M. g5 K; h* z6 ^
7 i3 x9 a, V9 ~* e$ Q
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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