标题:
5分钟编写一个ASP论坛
[打印本页]
作者:
admin
时间:
2007-12-4 13:24
标题:
5分钟编写一个ASP论坛
学ASP朋友的。。给大家分享个好东西
{$ U* C, M ^8 m3 N D5 N
真NB..佩服ing .....
- |2 X* _- S' h! d& @9 N
大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。
8 L2 d! \. t* A6 @* k9 [6 J
; Q' N4 n: O; c5 w) T
同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
7 k8 u: e4 f4 Q8 x
" U" F$ Q7 o" ]! w
一、建立文件!
* v* }/ o) t8 W. K* @+ M
最简单的论坛也要有几个必要的文件,就是:
" ~( p0 N) z9 J+ A. L$ k( ^
. P- s% N* v& B ]& l) u; \
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
; b/ o& j9 w/ `! ?& \
1 X, U9 f3 D0 ~. S( f' ]
2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp
9 N. `6 S! |8 v3 n
5 N$ ~* _4 m6 @& `6 B$ k, X
3、发表帖子的文件----命名为:say.asp
- |3 O9 P% F! O( i5 v( n! t
: Y; R* D% F9 h
4、保存发表帖子内容的文件-----命名为:save.asp
, q! N( C( e4 z* t# U
& x( w$ B( {* q6 {
5、显示帖子标题的文件------命名为:index.asp
& I2 Q$ r* [/ K j. Z1 U
! J. m9 F- |1 W* V8 J8 b
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp
& a: Z& z% ~# S* p% _# D4 l
' l) ^( L+ h' u! _* n. I
建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
) F1 b6 y. H0 Q( N4 [6 V
& p: ~! a/ e2 }, h: k
二、各文件的主要内容
# b5 |6 h( U, j9 g3 x. V
d" x2 e+ c3 b0 h9 d3 b
1、bbs.mdb
. L5 E m9 z8 Z' Q" d5 E% O
( b" w% M' s P0 Q% Y% ~+ L
打开这个数据库,建立一个表,命名为bbs
# V1 _, \- K, j- [* j5 l% P3 P
* k8 g7 ^( h) k5 L) Q% B8 r' H
该表中有几个字段:
; E4 S( X5 J6 s; T4 k; i
, b8 j! x. o) ?. t2 t/ c; `
id(自动给帖子编号),他的数据类型设为“自动编号”
! U- a1 L7 A7 q; ~; { n
) Z( Y% E: O1 `' i. B
name(用来储存发表的作者),数据类型为“文本”
" X# h3 e8 e2 s6 J2 y8 ~
2 ^9 S) |! Q4 ^& c: W
title(用来储存帖子的主题),数据类型为“文本”
' ~ N# g- N1 T8 L
- d2 l1 [3 N& B% T
body(用来储存帖子的内容),数据类型为“备注”
) C S% o( y1 M. J
' u' W" [5 E- b+ ]5 A
2、conn.asp
0 d9 B5 ~1 n2 D" N% J
源代码为:
' K2 G7 V& J8 i5 [
<%
: F P$ E% v8 O' h9 [. C3 L8 I
Server.scriptTimeout="10"
$ g8 v3 x" |4 w% F3 `- g
c+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
# ?: W* N9 D8 w; a
set conn=Server.CreateObject("ADODB.connection")
% g: S* q" W" Y2 @. C& M i8 `
conn.open connstr
( y; S: P9 g* B7 x# a: }4 y
%>
' ?( X( _: h6 T( L- P/ D' F/ R
* C$ H5 k8 x3 W; |
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!
; e5 W6 h0 p7 Q8 J/ W9 o* R# d/ n9 z
8 @( A1 a+ o3 B4 s
3、say.asp
, v) h- W* E' z1 j/ h K) J) V
f" d! z* x/ _: T9 e2 y% {) A
源代码为:
o( |. q3 }7 P: ]8 m
<form method="POST" action="save.asp">
) X5 x* @2 ^* n2 Z
<p>大名:<input type="text" name="name" size="20"></p>
+ C7 r! W _$ W5 ~+ ?0 e6 \: z( O
<p>标题:<input type="text" name="title" size="91"></p>
0 E7 ?3 x' i6 m) h7 K
<p>内容:</p>
- P* W" y2 C% |
<p><textarea rows="11" name="body" cols="97"></textarea></p>
" s* J/ y7 q; V; T* J/ U
<p> </p>
0 Z! j! w* i4 g, d9 N0 F
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
, X) A2 ~2 E! x3 `
</form>
; T1 R% G1 X. X8 e( }- j D0 c5 R( Q
大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
9 |* L; ?( I$ D- V( ^
不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
+ ?8 y [+ ^. f, V# k
& {7 L1 z% K2 r/ s4 e
4、save.asp
* B7 P7 W6 i6 ?6 d$ Y( H
' m% Q$ \8 L* K
源代码:
5 f3 b0 @0 v" `1 a2 e. F
<!--#include file="conn.asp"-->
% K3 \) u7 \4 o0 n5 z
<%name=Replace(Request.Form("name"),"'","''")
. L' \1 C& f& d/ n: k1 t0 f
title=Replace(Request.Form("title"),"'","''")
. o5 V( g% V1 m
body=Replace(Request.Form("body"),"'","''")
4 k% x- I8 h8 u) c
%>
/ z% X9 u, x% K8 x& w. A
<%if name="" or title="" or body="" then%>
5 s- B; C5 q" v w# w
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!
! Q2 D9 H6 Q& k- K$ f, k7 v
<%else%>
7 g6 y; L* W0 K
<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
0 c2 {, D/ R! n) {/ c+ v# A+ p5 O
发表成功!<a href="index.asp">查看帖子</a>
, m5 ]2 \2 T. y
<%end if
0 B' g# \, H6 a5 F+ u# d- X
set savebbs=nothing
) h, L- N! K7 e# _' {% _
%>
% H! x/ s; ]; z9 g
& n8 ]) k; y: N9 B# O9 ]1 |" g! l. U
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接!
) j* d& Y8 ]( @2 n
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用,
. Q' F1 f% d9 e6 Q6 ^- U1 N1 _- i5 j
接下来几句:
6 ]" m! ?' i4 I2 Z5 R7 ~! ]
name=Replace(Request.Form("name"),"'","''")
# i7 l/ M M% P4 Y: t
title=Replace(Request.Form("title"),"'","''")
/ a& L2 ` Q8 i% U, O5 Z. X
body=Replace(Request.Form("body"),"'","''")
2 h0 \7 y/ V- ^( ?: j
% K+ c3 i4 `" Q
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据,
, v, [3 n9 X9 L8 q: E: K0 O4 V) f
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
. n. \9 d+ V3 U N& K F) R1 }
如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
( L# ?$ G0 X; k2 b6 Y
就是把表单中名为name的文本框发来的数据储存在abc123变量中
; _9 [! s/ p1 E# P7 E! A
. C8 l+ \9 ^1 @* t
接着:if name="" or title="" or body="" then
9 l8 B4 P4 ?! b4 \
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句:
$ y& o' _ Z3 t5 J) l* Y( W4 X* ?% s2 n
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!”
, x- \/ D( f- t, r$ r# R7 g& R
该语句属于html语法,大家都看得懂的!
+ c3 R1 k; @" `$ E( B+ s# q
) e; o, Z$ M5 y" y# e
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
6 U/ j# `! {2 A* n, B& b
“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
2 h1 r; `# I% j; L6 ~
发表成功!<a href="index.asp">查看帖子</a>”
: x4 v0 O* `# u0 N* O" }
# b- c' Y" O+ [! [5 b; J1 z
"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
- j, S; e/ N% J, s x% F- k9 z
insert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
5 O* B: `0 y9 _4 A g
中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
. x6 l P' Q# H1 ~5 ~9 j o* S O
values是“值”的意思
9 c8 [& g% i$ M( f Z$ o- q5 y& ^
就是插入向量name,title,body,向量用格式'"&name&"'表示
) t! {' w# t( m! |
8 B# A3 l: j, e: }
最后:end if就是结束if……then
" y# f3 U) A7 }! \; J' a
set savebbs=nothing可以说是关闭掉:
: r- X1 j+ p% E5 F1 Z% j+ x; |
set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
* ~. c3 q7 c$ [ ^, u: Q o; g V& p
4 M' |0 j" P ]4 ?5 x
8 Y" g! S$ A: r4 X* s. ` m
5、index.asp
; q0 J( I8 ], X a. a: o
源代码:
/ F9 d6 J* D6 w, N3 n+ C
<!--#include file="conn.asp"-->
p: b, g1 t% _1 b, U2 z9 M% N
<b><a href="say.asp">发表帖子</a></b><br><br>
0 G' u, A5 d7 s; q
<div align="center">
' p3 O& Z# |; S( a/ F, b: k6 l
<center>
& T& d# x6 l. U0 r) M
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
# T3 S6 g0 v+ {* m
<tr>
3 M( S" Y" G6 Q
<td width="17%"><b>作者</b></td>
. _& @% H# a# I
<td width="83%"><b>主题</b></td>
2 B) s( G% X6 l1 `6 }9 l& x6 T
</tr>
9 s( t- o, W& `; b; e
</table>
# k3 g6 y' y) g
</center>
" x$ b5 e! `: C0 J- H( ]( Q
</div><hr size="1">
$ I, g& f4 e8 k8 B2 S4 f2 L4 ]
<%i=1
: E- j) w7 m8 o
set showbbs=conn.execute("select*from bbs order by id desc")
9 } O, C$ \/ E0 p: e
do while not showbbs.eof
& ~3 @% I! p% b* S4 w
%>
1 ?- ?, F3 c1 \- e/ ~
<div align="center">
" D6 W) ?! h+ f x9 I7 u$ ?
<center>
6 a5 f& D, K( F6 ?7 ~
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
" S4 W' I1 B4 d) s, s
<tr>
( @0 _6 H3 J: u* g/ g& {
<td width="17%"><%=showbbs("name")%> </td>
( k, ]& @; M- v* x, X/ _: X. U
<td width="83%">
1 s" R4 k8 Z G, J$ k$ H% A
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
4 q2 z: G: i, z+ O4 F! S; X& ~
</tr>
1 _+ M, a9 Z3 f! A( m4 C* t) Z
</table>
, J; m- Y$ E1 E s
</center>
# I2 ^2 V" W( v& ~* q6 R
</div><hr size="1">
( R: L) f( j; D" l3 _7 E
<%i=i+1
% [6 ]0 Z& e, E* X, k! u
if i>50 then exit do
1 ~ K1 x4 `: f3 u& r- J- H
showbbs.movenext
: I6 S0 g3 A1 E: }
Loop
% E! ?! o0 p8 J- {9 P" ^/ I( K
showbbs.Close
" R9 q) M9 M% P
set showbbs=nothing
, q4 m* ?& }8 I
%>
/ u. S" s; h! [! N5 ]/ n9 N! ~9 F
8 o( w1 c1 B! s( p; y* s
这个文件就不一句一句的讲了
/ v' t. H4 Y9 k/ L
主要讲精华部分:
8 x& G. b- A" n( \# {4 t
set showbbs=conn.execute("select*from bbs order by id desc")
9 j9 I/ l) L- f. a! |
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
8 _9 s, F$ Z! X
还有这么一句:<%=showbbs("name")%>
: Y% d2 B0 O" G1 a4 h j
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs
" `) J. s2 o8 F i9 }! m
代码中的i=1和i=i+1
6 V' I# f+ v6 g$ ]
if i>50 then exit do
/ I% g. o$ ^5 l
showbbs.movenext
# n+ T! _6 Y) o& ^' F
Loop
& D- C7 ] T' e. ~3 S
showbbs.Close
- j% O( b2 ~( W; O2 P) Y
set showbbs=nothing
' m _6 T9 B5 C$ R! y
, ~! Z. v* W5 ], Q$ Q
这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子!
# o* M" J; r# X, o! x9 L! k
if i>50 then exit do中的50可以修改
* j2 |6 k7 Y$ e1 A F5 k w
但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄
1 B m$ \- n; n( C" Y! j
还有一句很有用的:
3 \: J( X$ m/ u
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a>
% O$ s3 y7 o* `3 g) g0 N* k' [/ C
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了,
1 Z7 t) T% u- T; H# T2 P2 x
等一下在show.asp文件中就有用了
$ H0 W5 Q) ~2 l4 q
8 U8 T$ j3 V2 p. R' p+ B# X
5、show.asp
1 X- Z+ G4 O" Y9 G! ?9 k- C
源代码:
; g+ P, m. }: ~# {0 l( [- `
4 ~# ~; y2 t& Z2 b; E5 O, K# k
<!--#include file="conn.asp"-->
( ^/ u: u8 Y _" ?% P
<%id=request.querystring("id")%>
6 D" f. [9 `; v
<%set show=conn.execute("select*from bbs where id="&id&"")%>
. p1 Q# C8 l% Q! G( x* z
<a href="index.asp">
4 I: y, O7 G, ~5 r4 `, B8 e' a
<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1">
7 j+ C* r! x j, \% d! L" e
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
$ X/ t' y5 r' s: S: V% ~2 c0 i1 w
<tr>
# Q( S, @4 N7 P0 }( j) X
<td width="21%" height="22"><b>作者:</b><%=show("name")%></td>
" k+ X- c& Q1 x
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td>
; |) P6 {& T5 L* ~6 a+ k: B' ^
</tr>
0 R8 D, _3 P1 H
<tr>
' S1 w# R* ~1 y( u3 }) D! q2 _
<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
p+ I. _+ z, W1 O# r' j
</tr>
/ C6 M! b8 x. C/ E7 c X7 [
</table><%set show=nothing%>
. g- J1 ?# f6 j* n0 p4 {* X
. c) d5 T1 e4 x/ d; r
劲语句---精华语句:
3 Z" ]% Y/ J3 O& G" o- D
id=request.querystring("id")
, I m! h- C! ?) g& m
在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句,
2 F- P' D F& d! \4 B
id=request.querystring("id")就是把地址栏中的id的值读取下来,
4 ] ` |: C+ J3 F8 o
因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
6 u% o% P1 e# k" b8 b5 v7 w
所以show.asp使用id=request.querystring("id")语句把数字读取下来
/ T$ b8 Z' n2 X0 Y2 A9 V; J
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"")
8 q6 s6 f7 e, Q: E/ C* _& [
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&"
: j" ^6 F( e* t' T7 h# X2 C9 `
最后<%set show=nothing%>
4 q m. E) I a
$ m" b; x" H/ h; g. v
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试
作者:
紫藤花
时间:
2007-12-25 18:07
好厉害啊
欢迎光临 捌玖网络工作室 (http://www.89w.org/)
Powered by Discuz! 7.2