返回列表 发帖

5分钟编写一个ASP论坛

学ASP朋友的。。给大家分享个好东西
  r: i# r' [8 @! ]# X3 Q真NB..佩服ing .....
% Y+ F1 t2 h, w, k# R, }大家在网上看到各种各样的ASP论坛是不是觉的做论坛很难呢,其实我们用简单的ASP语句就完全可以完成一个属于自己的论坛。下面我教大家如何用ASP来打造一个属于自己的论坛,自己的东西毕竟用起来爽吗。% p8 z* B! S; r" O$ h: `1 n, R

, f9 p3 C  n5 D- U: ]同时,再复杂的论坛的写成也离不开下面的基本步骤,大家仔细看了。
: X% Y" l/ c  P. c: H2 ^0 u, M9 D# l; ?; L2 e9 N! {6 N6 h
一、建立文件! 4 }, F+ Q4 e+ q- i$ x; t: O) E
最简单的论坛也要有几个必要的文件,就是:
/ U4 F& C/ G0 [' O7 d+ W7 `0 o+ O6 A, W6 n6 w% `, j( Y0 ^
1、数据库,用来储存发表的帖子!-------命名为:bbs.mdb
( K" I  S) }( O
4 S! h; @& u; O9 a: t2、有数据库就必须连接数据库,该文件用来连接数据库:----命名为:conn.asp 6 h8 B7 n" W  Q9 F* B& H- U# e8 C

* a7 w; M. v: X# Z5 g3、发表帖子的文件----命名为:say.asp
, |  y, d# A7 b0 z" {' F
) z+ A$ H' _& C6 x4、保存发表帖子内容的文件-----命名为:save.asp
- S/ s. t7 U4 n* U8 _! a) J3 A
0 i4 P) P( u1 q8 z5、显示帖子标题的文件------命名为:index.asp
7 ^( P3 {9 _$ w! n# C1 O# Y9 x2 _3 K' \. y0 W
6、显示帖子内容的文件,即点击标题后所进入的页面-----命名为:show.asp 9 a; `( ?7 z! z- j4 x% x3 y, N7 d

$ _' B  E  U" L: u% n( N建立文件是可以先建立文本文档,他的格式为"文件名.txt",我们只需把它改为"文件名.asp"
3 w. V, m3 [) E: k8 X2 t0 x) ~/ c' Y, a5 m* n0 q5 g) L1 i  r
二、各文件的主要内容
- U) v6 J& `+ ~* r2 g% h! v; t# s0 Z8 T* ]" j$ }
1、bbs.mdb
$ V7 Z% B+ T6 ], j, y' [: q" J" f' i
打开这个数据库,建立一个表,命名为bbs 5 ~9 S0 I6 @" z

/ E3 i9 B, u' ?- j/ |* w1 S# s该表中有几个字段: / D3 f/ V9 ?) W( t! ^$ b

! V( |. R" ^2 q% Fid(自动给帖子编号),他的数据类型设为“自动编号”
) g& f- D- j$ R. i; j1 q* B! j0 F9 q( n
name(用来储存发表的作者),数据类型为“文本”
2 V. }9 o8 R; Z; q0 [; ?7 a! e0 s8 b3 f8 A  m4 \  m+ E
title(用来储存帖子的主题),数据类型为“文本” ; A. r$ l' O6 t9 O

3 Y$ [! I, u% s; c7 B) sbody(用来储存帖子的内容),数据类型为“备注” / {/ q) {2 t6 h) P- E

( p& A- x# p  W+ y  V2、conn.asp
5 P3 |$ U, f+ B2 B源代码为:
: h; G! f$ G* `4 w' h<%   v, V  t+ ^6 W
Server.scriptTimeout="10"
$ c2 V; E5 A2 e. ?' b. g8 Gc+server.mappath("═bbs═.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
1 f; K" k! c& K& {& F+ c) V9 [8 G8 g/ {1 xset conn=Server.CreateObject("ADODB.connection") + I5 r5 U4 l2 T
conn.open connstr
3 F1 H0 F- H/ G+ O%> ( I, n2 u) a5 O% B0 W- D" y5 Q' u4 u
- m! L( q# k4 i
这个文件就是这样,代码内容大家就自己研究,这个我也不知道怎么说才好!   K+ T8 L5 v. h1 Q7 o. X

. f2 E) S# X9 ?8 j% h! o; u3 e3、say.asp * k) [" l' C1 x, |8 A/ _$ t

) J* K! r) e! V源代码为:
; S: L. P- n% K<form method="POST" action="save.asp"> * R7 T4 ~: u7 O" Q* k
<p>大名:<input type="text" name="name" size="20"></p> ; X2 x/ G7 S& M& L" Y8 t3 G  J
<p>标题:<input type="text" name="title" size="91"></p> : i( _2 W4 q/ B1 Z+ w; e3 T
<p>内容:</p>
( a1 p! D4 D, ~/ X( S4 |5 \<p><textarea rows="11" name="body" cols="97"></textarea></p>
# T  C' ?1 r' P5 D" V<p> </p> 9 [; n5 O1 H9 e- B& K& I
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p> 0 p, L. v$ K; K& b" K5 N
</form>
! h0 U8 ~) b8 t: H. v& _大家应该看得懂的,这个根本就是html语法,对的,根本就是,这个只是发表的界面
' F% C" X) l6 }* ?; S" Q& T& C不过要注意这一句<form method="POST" action="save.asp">,他把用户所填的内容发送至save.asp这个文件,下面就看save.asp这个文件吧!
) U2 ?6 h, x( F7 D& I
/ W9 R2 c# K- N8 s$ Z5 l4、save.asp
" i5 M; T4 X* U8 C
$ \9 _8 U$ F1 N4 t- q% @源代码:
: J( o( f% Q& i$ n& f8 G" K1 y! H- j<!--#include file="conn.asp"-->
/ B$ C- q$ W  G+ L3 u: U; u<%name=Replace(Request.Form("name"),"'","''") * O1 d8 ^$ D0 u$ z
title=Replace(Request.Form("title"),"'","''") : z; V5 b, [! K: `
body=Replace(Request.Form("body"),"'","''") " }1 v8 t3 g: |
%>
% J/ f3 j; M$ R9 E+ b& J<%if name="" or title="" or body="" then%> . c! f9 W/ ^5 O* C
请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子! ! m& z; l* n1 L8 k7 v- u2 y
<%else%>
. N: ~3 H7 j, C! v<%set savebbs=conn.execute("insert into bbs(name,title,body)values('"&name&"','"&title&"','"&body&"')")%>
+ R' Y0 B9 h% }1 m2 E发表成功!<a href="index.asp">查看帖子</a> 9 H2 F/ o* q: p5 X) \
<%end if ' M# ?3 \; {2 o3 i+ p, M
set savebbs=nothing
( o+ n/ i$ A6 |6 b- W( Y& h%>
$ g, o+ E" l3 r" {  U5 A, C& G7 |) A( C7 l
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即与数据库进行连接! 2 v+ @6 p+ P* Z2 c' A( ?6 f
asp语句必须用<% %>这个格式包含起来,而插入文件的语句就不用, + o8 a3 \' V4 ~, H! ?
接下来几句:
: v9 q2 z. a; d( vname=Replace(Request.Form("name"),"'","''")
( ?9 \* [) z) z" V- X3 i( \/ }9 h; ?title=Replace(Request.Form("title"),"'","''") ( ^0 C0 N* Q0 J5 B9 F
body=Replace(Request.Form("body"),"'","''")
6 K0 j5 \% `' c: H" T% [' @6 b+ w2 N% r
“Replace(Request.Form("name"),"'","''")”意思是接收表单中名为name的文本框发来的数据, ; P' {- p! U4 T7 R( F; _
而“name=Replace(Request.Form("name"),"'","''")”则是把发来的数据储存在name变量中,
- e. r  c  ?% h7 M+ [/ W8 n! l如果你这样:“abc123=Replace(Request.Form("name"),"'","''")”
# u5 I: s$ d, v: U$ U" I4 G# ~就是把表单中名为name的文本框发来的数据储存在abc123变量中 , d1 i3 e0 F/ Z( u

& }2 t5 R6 y  c' l; P3 O2 @2 B0 V接着:if name="" or title="" or body="" then ! y) p& S/ I" W8 t* z
判断name、title和body变量中是否没有填写内容,即为"",如果这样,就执行这一语句: + F: z# J! r- m
“请<a href="****:history.go(-1)">后退</a>填写完整资料,你才能发表帖子!” ; U' L6 P0 a1 P' ^2 V  [7 W
该语句属于html语法,大家都看得懂的! 8 Y( U! i0 [0 {4 I1 w
* I8 ^8 D! w! I. K
"<%else%>"就是说“当if……then不成立(即是说所有内容都已经填写)”,就执行语句:
2 p. L1 \/ {4 Q1 c" ^5 u: |! h“<%set savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")%>
6 T6 h- z6 V2 x; m) L  D9 B发表成功!<a href="index.asp">查看帖子</a>” 4 y$ k. r9 q) K

" M7 q2 t8 f  y, d* G0 U7 T"set save=conn.execute"属于固定的语句,不过savebbs可以自己修改,"="后面的就难解释了:
! p- N' {3 W6 x0 d# t& Dinsert into bbs(name,title,body)意思是向名为bbs的表(在建立数据库时已经建立的表)
. a! E! N/ [8 R中的name,title,body字段插入,插入什么呢?看接下的values('"&name&"','"&title&"','"&body&"')")
( M3 l3 \" h/ h1 g2 Z: d) pvalues是“值”的意思
% n5 r3 T5 e% C* l, [( L& y7 o; J0 ~就是插入向量name,title,body,向量用格式'"&name&"'表示
8 h" g0 x7 f" D  ~% H7 `* A3 l5 f/ I  f, }2 n7 z) G3 Z5 Y
最后:end if就是结束if……then
/ M" X1 p9 P2 v5 t% N) Q% K! T6 nset savebbs=nothing可以说是关闭掉:
+ d0 p1 n: [, r* Rset savebbs=conn.execute("insert into bbs(name,title,body) values('"&name&"','"&title&"','"&body&"')")
% L6 D6 z- K4 ^2 k+ e& @
) H9 ]$ x3 X+ M7 K2 [# X( H5 V( m  O  u1 `5 c
5、index.asp
9 ?* J" t9 p1 p源代码: ) @" N, i6 ~% i' n0 ]3 [2 v3 v
<!--#include file="conn.asp"--> ( D" t2 [0 u, |$ F2 q
<b><a href="say.asp">发表帖子</a></b><br><br>
2 a6 O( k7 ~5 g3 x<div align="center">
" g; O4 d# X9 I5 U2 C; O  }3 v<center> 0 a; E/ |9 A1 v
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26"> + }% t' B; b* u
<tr> # |- k4 P- [. [6 C  K
<td width="17%"><b>作者</b></td> 1 d9 u5 i1 N0 }
<td width="83%"><b>主题</b></td>
: k& V/ a+ l1 t) J# p</tr>
& T, ~, x0 O" g% G% C</table>
7 n* p4 a# |, `</center> 6 B0 c, I1 k$ v$ `  m
</div><hr size="1"> % s# v4 V! R: I" m' M5 \# Q0 o
<%i=1
* y7 e  v" l: U) R, V- u4 zset showbbs=conn.execute("select*from bbs order by id desc") ( |! ~7 w& p$ A; z
do while not showbbs.eof
" |8 Z: T! W4 c( F8 d%> 7 y5 R" e0 I) \6 g6 a) _
<div align="center">
7 ~/ ?" z5 q' j) w3 B& B9 X<center>
( h9 \' |9 n- N6 {- H<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20"> % w0 n$ {6 n# v3 T1 |2 j
<tr>
, Z0 U$ Y* U, H7 Q4 \<td width="17%"><%=showbbs("name")%> </td>
" ?$ X% P2 ?8 L; f, T  k<td width="83%">
% j: f% ?& a. {8 n3 e<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a></td>
4 P1 _6 E8 v* R. D2 ]</tr>
: |, Z) }, P. ]9 w1 x  E</table> - Y! V( T/ H+ N' H, g+ Q
</center> , F; a3 }& m( M6 ~, m! E& ~
</div><hr size="1">
: O3 i# C' v+ A<%i=i+1
. }  H; u2 ~0 x& a5 f% }if i>50 then exit do $ n7 {4 N  F& B5 Z# r
showbbs.movenext # S% @# w% u: Y1 q' `
Loop $ |' ^8 K. p, W% Y. A
showbbs.Close
: H- _3 F' M( t# v; V7 ^' t2 bset showbbs=nothing
, ?/ }9 L0 f3 C%> 4 o# T1 C) U; b* _- D/ a

% w; g' U. \  @6 A6 c这个文件就不一句一句的讲了 ! w' ]+ b# j) e
主要讲精华部分:
: A0 Y2 f# c8 a! Lset showbbs=conn.execute("select*from bbs order by id desc") ( J  R2 Y  ?; o
意思是:向数据库中的bbs数据表查询数据,并以id排顺序,
4 [7 ]4 p! w: I  S2 I, [% g还有这么一句:<%=showbbs("name")%> 4 F) Q1 @8 L+ _) f) Y9 R. z
就是显示数据表中的name字段的数据,这里的showbbs就是set showbbs=……中的showbbs 4 b7 V: o# |# s; d. R7 q
代码中的i=1和i=i+1 % {% y3 W' }5 r3 w& [1 K1 y
if i>50 then exit do 0 s* {$ G3 s, }* d
showbbs.movenext
1 V$ m: g: X( r8 J3 TLoop
) r) ]7 P! t. U% P# V# a. cshowbbs.Close 9 O+ L4 Y: N8 _7 s- h
set showbbs=nothing 3 E' ~; p4 i+ R* g- Y+ n* V

+ [$ P9 `6 i9 L这几句属于循环语句,这里就不理他,理解了也不太好用,因为他只显示50张贴子! $ z; R! B6 s/ r( F
if i>50 then exit do中的50可以修改
% {1 S/ V' c% X) o& I但我们做论坛必须把帖子分页,又因为分页这个语句太复杂,我想就不讲了,等这一个弄懂了才来弄 - Y3 [# c' x% u
还有一句很有用的: + M* v: B4 j# s4 [6 C; q
<a href="show.asp?id=<%=showbbs("id")%>"><%=showbbs("title")%></a> ; \4 i- ~( X$ R' v! e2 H) K4 m
里面的超连接:show.asp?id=<%=showbbs("id")%>,注意:这里的超连接把帖子的id包含了, ' `: _/ s* C9 Z9 i
等一下在show.asp文件中就有用了
& l% V! s+ b; T6 p/ W9 u
# ^, [; Q: i6 [, ]1 y+ [5、show.asp 7 V9 [8 c3 i; r
源代码:
5 w8 o5 e' S6 I7 I  g  ]% s& O3 v4 k/ @8 _- y3 U
<!--#include file="conn.asp"-->
/ q9 t; i2 ^# L* }<%id=request.querystring("id")%> 6 ^0 x! S$ x6 e4 v1 ~
<%set show=conn.execute("select*from bbs where id="&id&"")%>
0 t3 R% W2 r; L, u<a href="index.asp">
( |9 g* R5 y4 E* x3 V<b>回到首页</b></a><br><b><a href="say.asp">发表帖子</a></b><br><hr size="1"> + x+ i5 k5 W* ?' ^' J4 ~" g
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180"> % e: i- i5 g& \0 [
<tr>
  o7 c/ k7 M. E/ s  v& h' c3 U<td width="21%" height="22"><b>作者:</b><%=show("name")%></td> ) D5 D4 G( b% O8 ^' E
<td width="79%" height="22"><b>主题:</b><%=show("title")%></td> 8 Y( Z1 {1 u6 `
</tr>
2 b. Q' G# ?! T  K2 h0 P/ R<tr>
- z' u5 Y5 C9 J3 e/ R<td width="100%" colspan="2" height="158" valign="top"><b><br>内容:</b><%=show("body")%></td>
; q7 l1 h* I5 l, C. X</tr>
7 n7 u$ f: U6 N+ D1 I  z3 O</table><%set show=nothing%> 0 A8 q% o0 a( h( L; i; u

) E# B) c* U/ C: C劲语句---精华语句:
3 K. ]& k# P5 Z8 x' y) a% xid=request.querystring("id")
* M3 e9 b5 B4 }) F3 h. Y; c在讲解index.asp文件的后面已经说到:show.asp?id=<%=showbbs("id")这一句, ! e! Z! s. ]6 ^- f
id=request.querystring("id")就是把地址栏中的id的值读取下来,
$ v/ N' G# ^# r4 z& t. i. O因为index.asp文件中的超连接点击后,地址栏就为http://…………/show.asp?id=数字,
( A+ y8 k2 J9 Q4 k所以show.asp使用id=request.querystring("id")语句把数字读取下来 ) J- v% P/ w! d5 a7 ^
于是接着使用:set show=conn.execute("select*from bbs where id="&id&"") + k( i4 H9 U% l* G, B# b# `5 U' @
向数据表查询id为这时读取下来的数字的帖子,即where id="&id&" 5 i. t0 I: Z/ A6 n. K5 [' D% P
最后<%set show=nothing%> 5 ]9 w! G8 [; G4 f' [: Z
, \: r/ b- F7 T+ x& z% n
好了,一个简单的论坛就这样完成了,挂在我们自己的ASP空间上去试试

好厉害啊

TOP

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