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

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西* `: ~4 c3 }+ m2 @$ `3 A* |
真NB..佩服ing .....
/ c8 W/ i) e2 F4 R! J大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
  J7 h1 y; O; f+ e1 F, e
' Z* m4 w$ `( F( L同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
, i$ r: y, T; i+ p( T: m' w4 `0 D$ t+ L  ~
一、建立文件! , D& G1 e3 a, p0 }. Z) d* X
最简单的论坛也要有几个必要的文件,就是: ( z% f2 ?  j7 s( P$ g3 K5 E" Q
* T; E* I1 a( p! r/ @4 W5 _
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb 9 T, p0 i' x6 u" u' S& Z+ x
, W% }0 F- p/ G9 ^
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 8 w' a; S" }2 o: d8 b+ X% N4 l0 V

. {6 V1 B* A1 T1 s+ g4 [3、发表帖子的文件----命名为:say.asp
% s. a& f+ O) u6 T2 ]. S
2 C- R* E: n3 B9 j# O8 X% p4 e4、保存发表帖子内容的文件-----命名为:save.asp
5 e0 L- l' ~5 ~9 Y: E# G$ n# D: {+ b/ a6 g- T  ~% y: W
5、显示帖子标题的文件------命名为:index.asp
1 v$ `) m5 ?2 o+ Z' q. i
& T& S( l5 S# P  v, d" Q6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp , i' m! I" j- z+ L* x

: o( A7 K: _' v6 Y* V! F3 Z( b建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp" + P5 Y" ^  k& U) G/ ?
7 d" X9 I) D* W. l6 [$ l
二、各文件的主要内容 $ F& y; E* L: X% M4 N. @, D
- h  T: \, R4 P" [# M- o( E+ I( S
1、bbs.mdb . ^! C3 a$ A( |: v( q$ }3 E/ X
3 x- n7 t$ X4 r3 k
打开这个数据库,建立一个表,命名为bbs # {9 j* I# A/ l! b5 U) ?& F& H" H4 `

/ q( e  P% w- }该表中有几个字段:
9 v( C/ _" V, P9 h' N/ m3 k. j! J% b* q3 T
id(自动给帖子编号),他的数据类型设为“自动编号” 2 a/ F: k+ g1 ?: ]
5 n& b+ C& p1 Z
name(用来储存发表的作者),数据类型为“文本”
7 `6 D/ K2 i8 h; E" G$ K- B4 |: Z8 k
title(用来储存帖子的主题),数据类型为“文本” 9 ]" I9 m5 V# I# N* c
$ k0 l8 M8 Z; O* E/ L6 x
body(用来储存帖子的内容),数据类型为“备注”
# D/ V9 ]: X+ o2 O9 P/ l  g) C( @) F/ _: K; X3 }& g
2、conn.asp 4 `" Y2 \; G; s& t, }
源代码为:
7 D, M0 J: [) ~7 v$ [$ Y<% ) {8 `- e5 e6 n7 x4 e5 Z& N- E% K
Server.scriptTimeout="10"
: U% b+ j& y# D* B8 h) L, }+ [c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  y/ K* g. z1 G* A# Kset conn=Server.CreateObject("ADODB.connection") ; R, e# Z+ Q" S7 x0 {* F
conn.open connstr
  P$ K. e9 y! i# n% x& U%> * z: r% @& e; X, d1 p7 h# ?

( u/ S' J7 F9 K$ ~这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
$ I5 \/ h# u1 K0 M  }, e; H! q4 h4 e
3、say.asp
# T' N/ a* d0 d5 a( G  l* C" J
2 h7 Y1 h$ a" t源代码为:
& \; E3 A& U# k: i* Q! D<form method="POST" action="save.asp"> " y: F  l9 u! ?4 K6 E0 x
<p>大名:<input type="text" name="name" size="20"></p>
) G* g5 h6 ?7 p: u9 |0 U' L3 F<p>标题:<input type="text" name="title" size="91"></p> ' n: \' Q% h# [6 y2 h" O- e  [3 ]( ~
<p>内容:</p> + q6 u# T/ i- L6 V
<p><textarea rows="11" name="body" cols="97"></textarea></p>
9 ?- }1 R( _% T7 z" J: H<p> </p> ( g5 O4 d- A: n
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 2 J' p# P1 z) b9 ~& \
</form> - r) Z- J# o+ N9 y8 [& \4 n
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
9 ~, q# O7 ]" ~8 q, c7 A: Q. K% R5 X不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!   U& b* @( o) s- H( M* r
( {$ Y, t4 p1 J
4、save.asp
( b1 p- k& H1 o7 N( S! A4 H" ~8 b$ U7 F0 }( f3 v" z" D: t
源代码:
! ]; a4 i) d, f8 A. ]3 f<!--#include file="conn.asp"-->
5 f3 c* L! d! j/ }) S<%name=Replace(Request.Form("name"),"'","''")   K  z" {! m$ X* |5 j
title=Replace(Request.Form("title"),"'","''")
; @) T7 X& O1 h- Q* d: M; C5 x% Ybody=Replace(Request.Form("body"),"'","''")
0 S  D0 \0 M: `/ O3 o%> / z' F' h. L" p) t* e2 V
<%if name="" or title="" or body="" then%>
2 I  G, D7 p8 N1 Q& o! g( v7 ]# v* i/ t3 U请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! 1 s: }& m" r; x- X( z# N
<%else%>
' Z' s2 V# m& s, U; @<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
  u3 a( w. y1 ~+ L8 {2 S发表成功!<a href="index.asp">查看帖子</a> . ]3 D+ X* n# o5 i
<%end if # F0 [8 y7 Y- J+ M1 ~+ H$ A) z8 S  Y
set savebbs=nothing
  Z1 r. T+ K4 q7 j%>
4 U0 u: u5 T7 k" g! A" y: E" J6 {0 O! g! l, `3 x( e0 w/ a+ E
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 7 v4 e. Z% K6 R# X/ O7 J
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, ; c1 O9 o8 i) s! E( \% V
接下来几句:
8 |$ @" T( C' e/ o! Nname=Replace(Request.Form("name"),"'","''") 5 P, h6 I$ d) A' g! J
title=Replace(Request.Form("title"),"'","''")
! l1 h4 N8 c  H- X1 F: v8 rbody=Replace(Request.Form("body"),"'","''")
5 x- |# Q: v0 [9 c7 e8 O' d
4 Y; r- r/ |1 [' g“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, 6 p% w" z1 j5 @
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中, + n, M! B" |$ M( ^7 H% x
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
. n+ k" }5 ~! z! b+ j就是把表单中名为name的文本框发来的数据储存在abc123变量中 . [( O! N3 v- R7 |
& B4 W" E/ ~0 a3 }* b' @
接着:if name="" or title="" or body="" then
, A8 c$ J! p/ U1 X判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
( w! x6 ~1 j1 P“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
9 L/ x; Q) c  k该语句属于html语法,大家都看得懂的!
# X( ]) f) {  D4 l
% f2 [( C, {. r9 a) C1 k7 V"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
) ]3 K* I1 J, e8 h6 G“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%> ' M( H% Z3 g; D" v0 Y! E
发表成功!<a href="index.asp">查看帖子</a>” : g% k* d0 O/ I6 g
; r, e! t+ k7 @$ s9 w# w7 {2 Q6 F
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了: & E6 x3 j* _9 l' Z# Q
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表) $ E& ]+ S  G- \, h
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')") 8 X" J$ [1 n7 w3 N' D( @% H
values是“值”的意思 / ^% t; r) P; T/ P% g" D
就是插入向量name,title,body,向量用格式'"&name&"'表示   ]& ?4 y) `; V3 u3 r1 F, N2 G

0 B1 g) Y# k& Y1 D( P; O! \2 A7 J最后:end if就是结束if……then * G$ f( j0 {$ w+ \& N% K
set savebbs=nothing可以说是关闭掉:
2 E) y/ _; n  c3 i+ d3 x, ~set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
" k, ?/ h" O1 D3 l: k( x6 [$ R/ e# H% d
( s9 z& N- c7 k. v5 p; A9 k
5、index.asp
9 N: I% q( o' k. U& U源代码:
4 I) o, ]9 {. q1 E<!--#include file="conn.asp"-->
: F( ]; ^+ k* t+ s5 y<b><a href="say.asp">发表帖子</a></b><br><br>
. s5 T) }" Y; P<div align="center">
. |0 M! x8 _2 D  p+ t<center>   q% I2 Q7 x- I
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> ) m" @- D/ f2 J% C' h4 G( W; M
<tr>
) Q! g! G1 Q. u( {<td width="17%"><b>作者</b></td>
% Z! j( @$ i6 l% h  y  H. x<td width="83%"><b>主题</b></td> 7 T* M0 M: T$ r! [( {7 t* E
</tr> . d3 h' {, h% z8 S$ E$ ~9 @
</table> ' Z! F9 P0 O( N) i: [! V! t7 |
</center> 5 @  f0 C$ m  c
</div><hr size="1"> $ Z& q& G. b" r/ ^8 U
<%i=1
; j2 O1 s* P4 L7 `0 j# Z# i. vset showbbs=conn.execute("select*from bbs order by id desc") ) Z4 m  J- h- P
do while not showbbs.eof
" g3 H) z" \( Q0 G# @) D%> 4 B- h2 X! L. `$ S
<div align="center">
0 i) Z$ z: Z9 b: S. E+ h0 ^6 s<center>
, g' t* g4 `' \# M1 n/ T4 m<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
; F. T- Q* h: X) N<tr>
. H8 J3 g9 h! b" Q<td width="17%"><%=showbbs("name")%> </td>
, T: i& n! Q. n7 Z. t' x<td width="83%">
; A0 v7 Z% O5 R9 ]( b( h<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
. @6 `  P- P8 z+ E9 b</tr>
- }  @8 c0 e8 @; |- g+ O8 r</table>   j( ?7 H9 y9 z, w2 M8 O  d
</center>
2 o- }: i' A! {8 B, o1 R</div><hr size="1"> 7 _/ G8 i8 m7 n
<%i=i+1 * O3 F! b* c# O4 h, o, x, a8 c* x2 |
if i>50 then exit do 4 Q6 V; p, f* F/ U
showbbs.movenext * J. u3 M# K* s/ ~5 I
Loop 5 M! h4 |1 u; t* B* {' U# Y2 @. z
showbbs.Close * `  Y1 q5 s+ P. \  i! }- Z6 X
set showbbs=nothing $ N9 k% |5 B1 q
%>
$ d; z" }2 }/ i9 N- j
1 Z7 ~& q; I0 Y& N' B: R这个文件就不一句一句的讲了
. G) _/ @- q2 f2 g+ n主要讲精华部分:
' Z  m0 l: z# k% w0 Jset showbbs=conn.execute("select*from bbs order by id desc")
, n( a: C2 Q/ E; w意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
5 d% V$ |8 w. D, ^& G. ^* L* F还有这么一句:<%=showbbs("name")%>
2 t9 @8 ~8 ~9 a6 [就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
. K3 m5 K6 X7 w$ a代码中的i=1和i=i+1 ' ?3 @, V4 `) V) i" X0 W8 s
if i>50 then exit do
# D7 O1 V* u; l6 W8 {- D0 o6 kshowbbs.movenext
4 _" ^( s, Y5 z- Q7 y. jLoop 2 g( N- j) E; c" W' t1 N
showbbs.Close
* G2 H$ i* k2 ]# S8 }set showbbs=nothing 1 ]" L; C6 ^! P; Z+ Z0 y, D% b# {* Q
+ q7 u$ h2 o% T  }
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
: J6 n0 X  O( I2 R; Zif i>50 then exit do中的50可以修改 8 a) X. Z! i- R
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
7 u. j9 J) ^6 {' R% p* \# O' }还有一句很有用的:
+ w) [" s% y! n) h/ g<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> 2 k9 s; b6 V/ f2 f
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, 0 G% e2 T3 u2 A$ ?
等一下在show.asp文件中就有用了 - g. z) @. ?( ]+ t' b  e8 x

: F& o9 V% m5 r- Q: R0 ]5、show.asp
" ~  R! I5 j, [1 U9 S源代码: 2 I$ a! Q  k* `
" C3 D# H( _+ g! H5 G0 K; ^% @2 u
<!--#include file="conn.asp"-->
8 t' C8 a. s( P% W5 ^6 N- B<%id=request.querystring("id")%> " E) _( {6 V% M2 o2 K7 h
<%set show=conn.execute("select*from bbs where id="&id&"")%> 9 {7 P+ h. `9 ~! H. J! `% v
<a href="index.asp"> 6 M# n: u9 b1 R* J* s/ H
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
4 Q0 x6 k- t8 A" [7 N$ K" G# [<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> % K$ v; |, C6 f' @. B' k
<tr> 5 n  U. u( Z7 d9 y1 j8 l$ @
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
5 z3 C% n1 L6 n* P; P<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
- D2 p. q  Q" n) v$ f+ _</tr>
, E2 E' M6 u+ x<tr>
2 R4 `& ^- m" |; q+ Q<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td> - P  s3 q( g& B
</tr>
1 N# h0 K) j4 q/ n* m3 a</table><%set show=nothing%>
5 D4 j$ i; B/ I7 N; @% \& A" `$ J8 |# \. L' o1 w/ ~2 N, d5 u
劲语句---精华语句:
/ W4 e8 a2 D. p; U5 ]8 W+ aid=request.querystring("id")
3 k: C& J  E  a& D在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
2 n+ {$ k9 E6 @0 h* Kid=request.querystring("id")就是把地址栏中的id的值读取下来, 9 H% O" b5 K8 P9 I/ p
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
" P! n% q, p! k7 l' n+ b3 E所以show.asp使用id=request.querystring("id")语句把数字读取下来 7 a( E4 d. f( m1 e5 _8 V6 g
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") . \$ R9 o" G0 e& U! d
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" ; _* g/ y: T/ m9 ~+ v
最后<%set show=nothing%>
% u  }% U3 \$ \& b  ^  U- J  j
! @2 r5 f7 H0 Q% o, t9 a好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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