标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
3 G9 }; L1 M5 l+ D
真NB..佩服ing .....
5 ~- g1 U+ a. j
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
( K8 ?! q; z' U, l& C3 {
# F6 _2 Q5 v. u" [, a
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
& B0 v& s8 R/ `9 G% C; d9 F) W
" s* I+ W0 l% z, c d
一、建立文件!
4 V% W- W3 D8 A# F( d/ }; F0 ]
最简单的论坛也要有几个必要的文件,就是:
3 q; f$ `6 z* Y
/ m) Y3 l$ c3 F/ E
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
9 n' \2 i, V/ W) E" w7 t: g
2 g5 l7 Z9 _" i" h
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
8 k" E; j8 L+ j! I; r2 _* I) {
0 u1 g8 \' B3 X8 x. b) G6 M1 _
3、发表帖子的文件----命名为:say.asp
]) i' k' G$ |5 f, W' E1 f" \
7 B+ a8 D K3 }6 ~* x. ~
4、保存发表帖子内容的文件-----命名为:save.asp
5 B- O$ G$ s. R( }, j- `& T+ H
5 T/ s9 y- z% A' D9 h, C
5、显示帖子标题的文件------命名为:index.asp
& B8 W9 j4 W% w2 v' E2 d. w
$ \8 ~( A2 Z7 j/ o. K
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
: l' o- j6 v9 v0 \. H+ e5 X: H$ D
$ @: f% K, l. C- s* M; u D
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
; m/ f2 V6 w0 P) j }* g4 g
6 j/ M: d3 J0 n9 Q3 P! S
二、各文件的主要内容
. [% Q# ?& P' w
$ w% N# u5 c/ G% _; A
1、bbs.mdb
* `# R: S7 w% C' A. P
7 u" E c. l4 `- C; o
打开这个数据库,建立一个表,命名为bbs
; |* Z2 T- C7 L0 ^6 l' l/ x
/ @( L$ Q0 d+ c3 [0 A; d
该表中有几个字段:
, G6 `8 D% V9 }- W. D0 e$ y
2 @1 v+ v, z( `
id(自动给帖子编号),他的数据类型设为“自动编号”
1 K! l7 s% A' x1 R1 [2 [7 w
& M% a" _4 J) i6 m# A4 t9 z: ^
name(用来储存发表的作者),数据类型为“文本”
7 [( u$ }3 s, \% y% s
# R+ B0 U8 p; L
title(用来储存帖子的主题),数据类型为“文本”
7 _$ u/ b6 S# o* k( R/ [% H' {, r
% a3 n; a% E: [$ r; _# ?6 \ @5 y
body(用来储存帖子的内容),数据类型为“备注”
; ~* t0 K$ {% q3 ?6 V; J
6 R, q. p' i+ j* G2 X
2、conn.asp
" j, f% i; u3 q+ x/ s' ?4 \9 e" }/ s
源代码为:
/ t9 R% z8 L( G( [2 ?: ]4 g$ I: f1 P( f
<%
) I8 b2 d: V$ r& ?: i" }! c# Q
Server.scriptTimeout="10"
0 z }4 N/ j) t0 n7 L
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
: T, d9 U- r, x9 M! Q
set conn=Server.CreateObject("ADODB.connection")
' V$ B4 p. Q+ V; q% B3 M2 u+ P! J
conn.open connstr
6 C% g# k4 V$ H
%>
7 z6 `/ m. e3 t9 P: A+ B
6 z, i1 A) |( q2 }
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
0 P, C( K; e; W+ `! L/ C3 Y
# B! m) u0 M0 i- E; T- F3 g
3、say.asp
- t. r# ]8 V; e
, G5 w& A, |( A) u8 s. y0 P
源代码为:
5 m- s: [* f" w
<form method="POST" action="save.asp">
* i, t* z: }3 s2 X* ^; [, j5 t- n2 [
<p>大名:<input type="text" name="name" size="20"></p>
) q5 V7 s! s7 {3 S9 W! B, n
<p>标题:<input type="text" name="title" size="91"></p>
- c/ e+ k% S: ?* X
<p>内容:</p>
+ y& x8 d7 p/ K4 Q# q; M
<p><textarea rows="11" name="body" cols="97"></textarea></p>
. D7 D) m) u! q( u- _" G6 M. q/ q
<p> </p>
. ?( J' ]" j4 Z( n& @9 {
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
4 j- J5 A" O9 \8 m+ s
</form>
/ G( _ V; j) B( h3 u
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
% e& c/ K' q0 d* i, ?$ P% Y
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
6 i5 @( `" K; v- f z% W9 Z
9 n( w2 \/ i- g& @6 [! {
4、save.asp
, D. F- W1 Q& l- [
# n+ b* l; a" T7 Z5 I; ~9 m0 M, K
源代码:
# {: a$ Y! p2 `- j4 O2 w
<!--#include file="conn.asp"-->
6 @! D. y! b9 V- h z& p' H, _
<%name=Replace(Request.Form("name"),"'","''")
, S0 Q9 v# Q- B: o- o( W7 m
title=Replace(Request.Form("title"),"'","''")
- p9 @7 V/ Q5 h# j, `
body=Replace(Request.Form("body"),"'","''")
# p! V0 s" ^9 S7 y! Z$ j% A
%>
' l' n8 O; m" |* Z
<%if name="" or title="" or body="" then%>
+ @, x. i7 \; e t) T( w
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
# S3 Y1 @. T1 u) w6 H) @" t5 O
<%else%>
: K! w0 \" N# Z q& O+ g' ?
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
5 Y& T) v! h% v3 ?& _
发表成功!<a href="index.asp">查看帖子</a>
6 i8 h% e5 b! Y* E8 X7 I+ q9 {
<%end if
- w# R* a8 z# B* `
set savebbs=nothing
8 B4 J6 Y2 L) S: X* B
%>
/ b: [" _7 w' j' @
& K: g; i8 }! N$ ^
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
/ {& U9 u( t: R- c' D
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
) y% x1 G& t* w0 b( g" R: ]
接下来几句:
! u2 k* y _$ i! W0 ^) x+ Q6 N
name=Replace(Request.Form("name"),"'","''")
+ a, W; q0 d$ q1 j4 P [
title=Replace(Request.Form("title"),"'","''")
( |- r3 v# \, J1 Y# b% h' H
body=Replace(Request.Form("body"),"'","''")
. ~- p Y. B' U
& U/ u. C& u+ J4 ?, \' O
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
3 J: d. V( p5 `
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
9 X2 @/ A2 \4 f7 `7 |$ o6 C
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
: z! K+ z2 Z/ j' u) E& d/ h1 Y
就是把表单中名为name的文本框发来的数据储存在abc123变量中
k* L+ d$ i% J3 ~
2 f5 F6 v$ ?: T3 L T5 Y q
接着:if name="" or title="" or body="" then
! F) O& ?. }5 f1 T+ S2 i8 K
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
+ T, g: ^4 n6 t9 z6 R) B
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
! [9 O+ C! Y# r, c
该语句属于html语法,大家都看得懂的!
v# r. o* e# f l* `# f
9 W. N7 c( [- N2 P6 ~2 R) D
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
2 o9 S& v; H5 k+ {! K
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
! a; K3 O& K, M# ^8 s
发表成功!<a href="index.asp">查看帖子</a>”
2 Y: r8 C5 k7 J# I
. S$ Z' j* q! u
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
# n/ ^ ?3 |% g0 G( g1 c. w: m
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
+ y1 p8 M- B. t% _
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
; U# v2 Q. x8 Q7 f; j* A1 e
values是“值”的意思
! d8 E+ U( e( m' P
就是插入向量name,title,body,向量用格式'"&name&"'表示
+ ^" v- H' l4 \# ~, t9 j. n
6 x0 b: F% x6 w4 N
最后:end if就是结束if……then
2 s' c; ^8 ?' x( ]' p
set savebbs=nothing可以说是关闭掉:
; N1 x2 ? u7 a/ j0 \
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
3 L- K, h9 ?& y, g9 v& c3 W: \
W; O; N& G) L; V
) H$ a# R- ~; Q) j$ M$ P9 B$ v
5、index.asp
2 O4 T- c3 K' ^) h# J- G/ F) h+ T
源代码:
# O# U$ [7 ?& @! u3 P
<!--#include file="conn.asp"-->
! f1 M" N6 u( C: ?
<b><a href="say.asp">发表帖子</a></b><br><br>
: x- Z( \; U- |! z i
<div align="center">
2 N5 X% |0 D3 X, G, x% G
<center>
2 y, G- i* G6 {. C$ D; X9 |# N
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
+ K, y2 q7 C7 j7 g5 _* x( ]7 q
<tr>
" X; a, y. x2 q2 {
<td width="17%"><b>作者</b></td>
+ z- s) i% J) Z' G* @
<td width="83%"><b>主题</b></td>
3 a) G& k$ Q/ i) q6 ^
</tr>
, o+ E) d7 I9 R! O6 R$ s5 E5 M' B
</table>
5 R" l: r3 a6 L9 b* c
</center>
5 s& @" j1 _0 j" x _) K+ {
</div><hr size="1">
% J* f y. J, _5 T5 r+ a
<%i=1
! v9 W* E3 v0 a
set showbbs=conn.execute("select*from bbs order by id desc")
7 Z6 V6 k* S( K6 E' b5 j: T
do while not showbbs.eof
1 J2 U& G3 _( F4 @ r( Y
%>
$ r" K' t/ z( `* D$ a. j
<div align="center">
% n& ~% E6 G8 X" w9 n
<center>
. g+ S* S2 c( Y' O9 J
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
7 e5 Z% \% }+ S9 @. [1 @: V8 X9 u" t
<tr>
2 u3 ^& G$ s$ }6 r& i* ]
<td width="17%"><%=showbbs("name")%> </td>
( n8 L2 e( \# q& l
<td width="83%">
9 E( P9 b6 L; q/ [% T
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
* k& g4 x; b" h
</tr>
0 V) N: Z* k% d6 x
</table>
, o. u' e" i& _$ J; v" V
</center>
- v, q l' g: f( N! _: s" P
</div><hr size="1">
# a, w' v) O* ^) `4 \# ^
<%i=i+1
3 g& Z8 g; q# r7 \4 w! m
if i>50 then exit do
+ M/ g' x! C/ M6 }% i5 x# L* D
showbbs.movenext
6 \! T4 E. R/ t- T# ?" J
Loop
+ c6 w* V. N. ]! j1 b& M" T
showbbs.Close
2 T# B6 m/ K5 a! u
set showbbs=nothing
7 e4 V j5 ]1 i. o% s
%>
! C9 p! a) ~1 a2 T$ z, d3 E
/ E9 B" _( N2 g5 ]) [$ G
这个文件就不一句一句的讲了
& \' Y9 |- X0 z# R8 r
主要讲精华部分:
' u B7 D' b; U. V0 Z) v
set showbbs=conn.execute("select*from bbs order by id desc")
, m x" E; t) \2 Y0 m6 m# H
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
; D0 \# i+ ?6 M7 k! X
还有这么一句:<%=showbbs("name")%>
% Z4 I& n+ Q* o1 y) b8 }- {
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
5 J# N1 R! M# r+ j% Q+ d+ T" G
代码中的i=1和i=i+1
5 u& d4 z; Q& \! S6 P
if i>50 then exit do
$ \! h }; B; M. ?" S. [ ]2 `
showbbs.movenext
6 i& b: _( z7 c! {5 V
Loop
, |9 e' `' t* w- J
showbbs.Close
* |- D/ @- S3 U! e
set showbbs=nothing
4 I& H' H( } @; W+ V2 _
: `$ @' E! U# T4 Q* a
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
+ M4 Y5 K0 T; H h2 D2 f1 M, N( C7 O
if i>50 then exit do中的50可以修改
6 H8 G! {. R: \% W
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
' x$ w4 ~& t$ V* T
还有一句很有用的:
6 ]: H* ~" O( o. X' S4 ^
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
9 e9 X' ]; v) F ]- E" p
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
: N' F' u% i# n! z" W& B6 x2 _
等一下在show.asp文件中就有用了
" e" G, t7 P& m
; E' q1 J& E+ Z6 i, y3 @
5、show.asp
2 N* x- R8 ?7 V( d/ o) _5 Z
源代码:
: |: | K! Z c* _
/ E e$ l! ]! x3 G" [/ e9 u, Y. i5 q
<!--#include file="conn.asp"-->
9 D* x& m1 z. Q, p- W
<%id=request.querystring("id")%>
1 U2 O3 J* C9 X# |
<%set show=conn.execute("select*from bbs where id="&id&"")%>
7 j# i& L# L, ?" o5 {) U4 U
<a href="index.asp">
T$ N8 d$ u/ {0 S, b9 I
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
$ Q7 E; ~7 {- a* i- N, L* w$ J
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
# W, a. X% U) o, W$ w S( J
<tr>
2 y2 L. }- `4 g; v% c0 u+ P4 O
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
/ x d0 W' U/ t* [
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
6 [6 E% \8 j% ]9 @( M# a5 g0 |
</tr>
5 u7 `- |: ]+ V7 z$ E! h+ ~0 o
<tr>
5 \1 |" T9 r" @; R; q+ c
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
% o4 p4 @3 G% c3 }. U7 T% o: z
</tr>
; @ F5 B3 t1 @+ V
</table><%set show=nothing%>
1 [: ]3 K @: g! o6 l% t/ J
: w5 o% r9 E" y. u$ r' N7 B% k
劲语句---精华语句:
$ S/ p- v6 I8 Y2 J) f
id=request.querystring("id")
5 R" ^& i+ Q2 m+ P7 ^0 {. I
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
; j$ f" Q$ V- y1 _0 I% X
id=request.querystring("id")就是把地址栏中的id的值读取下来,
+ l, t) n4 y5 L" Y/ ^# w& i* ]
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
( c5 E! s+ a9 d& x9 z0 t
所以show.asp使用id=request.querystring("id")语句把数字读取下来
0 M' V) A( j$ u* Z% ]! }
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
/ d( g5 W9 E, Y, z0 k
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
" j* O7 h& U9 }1 {* f0 `: D
最后<%set show=nothing%>
6 u& F1 i4 S- R' D9 u: [
( ]4 O9 d6 ]7 A8 ~% T3 Z. ?
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://89w.org/)
Powered by Discuz! 7.2