|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。access|asp+|教程 在网上先容怎样编写制造论坛的文章很多,但据我察看年夜多半的代码都有分歧水平的毛病,会误导人人。以是我写这篇文章的目标就是把经由我测试乐成的代码与思绪供应给人人。上面就让我们从数据库的创建入手下手:
用access创建数据库:
起首我们要创建一个寄存帖子的数据库,在这里我先容用access2000创建数据库的办法。
我们先要创建一个名为news.mdb的数据库文件,然后在个中点“新建”选择“计划视图”创建两个表,一个名为details用来寄存复兴,另外一个名为titles用来寄存主题如图:
制造历程详解:
在titles中创建以下字段,如图:
注重:
1右键单击“titleID”选择“主键”,呈现钥匙图形。2这里的“shu”不成以改成“number”不然会呈现毛病,王国容的那本《asp&web数据库》中就犯了如许的毛病。3将“日期/工夫”范例的字段的默许值都设为now()
在titles中创建以下字段,如图:
将“日期/工夫”范例的字段的默许值都设为now()。创建完成后,要设置这两个表的联系关系。点击
按钮,呈现以下对话框:
将titles中的titleID拖至details中的titleID上放手,呈现以下对话框:(如图设置)
然后保留就能够了。如许一个供应贮存的数据库就创建好了。接上去我们要编写asp程序了。起首让我们先来剖析论坛所必要的功效。也许必要以下几个功效:
1显现主题2公布主题3显现复兴4公布复兴
因而,我们依据这些功效,必要编写6个asp文件:
title.asp、titlenew.asp、titleout.asp、detail.asp、detnew.asp、detout.asp
另有一个文件是必须的(在我的程序中)adovbs.inc,它供应程序中的常数值如:“adopenstatic”。(点击这里下ADOVBS.INC载源文件)每一个文件的代码:
title.asp:
<%@LANGUAGE="VBSCRIPT"CODEPAGE="CP_ACP"%>
<!--#includevirtual="adovbs.inc"-->
<!--#includefile="titleout.asp"-->
<%
consthead="我的论坛"
dbpath=server.MapPath("news.mdb")
setconn=server.CreateObject("adodb.connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&dbpath
sql="selecttitleID,createdateas主题公布工夫,lastnewsdateas最初复兴工夫,nameas作者,shuas复兴篇数,subjectas主题fromtitlesorderbylastnewsdatedesc"
setrs=server.CreateObject("adodb.recordset")
rs.opensql,conn,adopenstatic
%>
<html>
<head>
<title><%=head%></title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<styletype="text/CSS">
<!--
body{ font-family:"宋体";font-size:12px}
table{ font-family:"宋体";font-size:12px}
a:link{ font-family:"宋体";font-size:12px;color:#000000;text-decoration:none}
a:visited{ font-family:"宋体";font-size:12px;color:#666666;text-decoration:none}
a:hover{ font-family:"宋体";font-size:12px;color:#ff3300;text-decoration:underline}
-->
</style>
</head>
<body>
<!--输入主题-->
<%
rs.pagesize=10
page=clng(request("page"))
ifpage<1thenpage=1
ifpage>rs.pagecountthenpage=rs.pagecount
%>
<formaction="title.asp"method="get">
<tableborder="0"cellpadding="0"cellspacing="0"width="90%">
<tr>
<tdalign="right"width="100%">
<%
ifpage1then
response.Write("<ahref=title.asp?page=1>第一页</a>")
response.Write("<ahref=title.asp?page="&(page-1)&">上一页</a>")
endif
ifpagers.pagecountthen
response.Write("<ahref=title.asp?page="&(page+1)&">下一页</a>")
response.Write("<ahref=title.asp?page="&rs.pagecount&">最初一页</a>")
endif
%>
转到第<inputtype="text"name="page"size="3">页
页码:<fontcolor="#FF0000"><%=page%></font>/<fontcolor="#FF0000"><%=rs.pagecount%></font>
</td>
</tr>
</table>
</form>
<center>
<tableborder="0"bgcolor="#999999"cellpadding="3"cellspacing="1"width="780">
<trbgcolor="#00FFFF">
<tdheight="18"width="150"align="center">主题公布工夫</td>
<tdheight="18"width="350"align="center">主题</td>
<tdheight="18"width="100"align="center">作者</td>
<tdheight="18"width="30"align="center">复兴</td>
<tdheight="18"width="150"align="center">最初复兴工夫</td>
</tr>
<%
OnErrorResumeNext
rs.absolutepage=page
fori=1tors.pagesize
titleoutputrs
rs.movenext
ifrs.eofthenexitfor
next
%>
</table>
</center>
<formaction="title.asp"method="get">
<tableborder="0"cellpadding="0"cellspacing="0"width="90%">
<tr>
<tdalign="right"width="100%">
<%
ifpage1then
response.Write("<ahref=title.asp?page=1>第一页</a>")
response.Write("<ahref=title.asp?page="&(page-1)&">上一页</a>")
endif
ifpagers.pagecountthen
response.Write("<ahref=title.asp?page="&(page+1)&">下一页</a>")
response.Write("<ahref=title.asp?page="&rs.pagecount&">最初一页</a>")
endif
%>
转到第<inputtype="text"name="page"size="3">页
页码:<fontcolor="#FF0000"><%=page%></font>/<fontcolor="#FF0000"><%=rs.pagecount%></font>
</td>
</tr>
</table>
</form>
<!--上面为输出表单-->
<formaction="titlenew.asp"method="post">
<center>
<tableborder="0">
<tr>
<td>姓名:</td>
<td><inputtype="hidden"size="30"name="name"value="<%=session("name")%>"><%=session("name")%></td>
</tr>
<tr>
<td>信箱:</td>
<td><inputtype="text"size="30"name="Email"value="<%=session("Email")%>"></td>
</tr>
<tr>
<td>主题:</td>
<td><inputtype="text"size="60"name="subject"></td>
</tr>
<tr>
<td>内容:</td>
<td><textareaname="words"rows="8"cols="60"></textarea></td>
</tr>
<tr>
<tdalign="center"colspan="2"><inputtype="submit"value="提交">
<inputtype="reset"value="清空"></td>
</tr>
</table>
</center>
</form>
</body>
</html>
titlenew.asp:
<%@LANGUAGE="VBSCRIPT"CODEPAGE="CP_ACP"%>
<!--#includevirtual="adovbs.inc"-->
<%
dbpath=server.MapPath("news.mdb")
setconn=server.CreateObject("adodb.connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&dbpath
name=request("name")
Email=request("Email")
subject=request("subject")
words=request("words")
ifsubject=""orwords=""orname=""orEmail=""then
outputmsg="字段不克不及为空,请填写完全信息!"
else
setrs=server.CreateObject("adodb.recordset")
rs.open"titles",conn,adopendynamic,adlockpessimistic
rs.addnew
rs("name")=name
rs("Email")=Email
rs("subject")=subject
rs("words")=words
rs("shu")=0
rs.update
outputmsg="您的主题已到场!"
session("name")=name
session("Email")=Email
endif
%>
<html>
<head>
<title>UntitledDocument</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<metahttp-equiv="refresh"content="3;URL=title.asp">
</head>
<body>
<%=outputmsg%>
</body>
</html>
titleout.asp:
<%
subtitleoutput(rs)
%>
<trbgcolor="#ffffff">
<tdvalign="top"height="18"><%=rs("主题公布工夫")%></td>
<tdvalign="top"height="18"><ahref="detail.asp?titleID=<%=rs("titleID")%>"><%=rs("主题")%></a></td>
<tdvalign="top"height="18"><%=rs("作者")%></td>
<tdvalign="top"align="right"height="18"><%=rs("复兴篇数")%></td>
<tdvalign="top"height="18"><%=rs("最初复兴工夫")%></td>
</tr>
<%
endsub
%>
detail.asp
<%@LANGUAGE="VBSCRIPT"CODEPAGE="CP_ACP"%>
<!--#includefile="detout.asp"-->
<%
ifnotsession("passed")then
response.Redirect("title.asp")
endif
%>
<%
dbpath=server.MapPath("news.mdb")
setconn=server.CreateObject("adodb.connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&dbpath
titleID=request("titleID")
setrs=conn.execute("select*fromtitleswheretitleID="&clng(titleID))
ifrs.eofthen
response.Redirect("title.asp")
else
sql="select*fromdetailswheretitleID="&clng(titleID)&"orderbydetailIDdesc"
setrsdetail=conn.execute("select*fromdetailswheretitleID="&clng(titleID)&"orderbydetailID")
endif
%>
<html>
<head>
<title>UntitledDocument</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body>
<%
words=replace(""&rs("words"),chr(13),"<br>")
Email="<ahref="""&rs("Email")&"mailto:"&rs("Email")&""">"&rs("Email")&"</a>"
%>
<center>
<table>
<tr>
<td><%=rs("name")%></td>
<td>Email:<%=Email%></td>
<td>工夫:<%=rs("createdate")%></td>
</tr>
<tr>
<tdcolspan="3">主题:<%=rs("subject")%></td>
</tr>
<tr>
<tdcolspan="3"><%=words%></td>
</tr>
</table>
</center>
<%
whilenotrsdetail.eof
detailoutputrsdetail
rsdetail.movenext
wend
%>
<center>宣布复兴</center>
<formaction="detnew.asp"method="post">
<inputtype="hidden"name="titleID"value="<%=Request("TitleID")%>">
<center>
<tableborder="0">
<tr>
<td>姓名:</td>
<td><inputtype="text"size="30"name="name"value="<%=session("name")%>"></td>
</tr>
<tr>
<td>信箱:</td>
<td><inputtype="text"size="30"name="Email"value="<%=session("Email")%>"></td>
</tr>
<tr>
<td>主题:</td>
<td><inputtype="text"size="60"name="subject"></td>
</tr>
<tr>
<td>内容:</td>
<td><textareaname="words"rows="8"cols="60"></textarea></td>
</tr>
<tr>
<tdalign="center"colspan="2"><inputtype="submit"value="提交">
<inputtype="reset"value="清空"></td>
</tr>
</table>
</center>
</form>
<center><ahref="title.asp">前往主题页</a></center>
</body>
</html>
detnew.asp
<%@LANGUAGE="VBSCRIPT"CODEPAGE="CP_ACP"%>
<!--#includevirtual="adovbs.inc"-->
<%
dbpath=server.MapPath("news.mdb")
setconn=server.CreateObject("adodb.connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&dbpath
titleID=request("titleID")
name=request("name")
Email=request("Email")
subject=request("subject")
words=request("words")
ifsubject=""orwords=""orname=""orEmail=""then
outputmsg="字段不克不及为空,请填写完全信息!"
else
setrs=server.CreateObject("adodb.recordset")
rs.open"details",conn,adopendynamic,adlockpessimistic
rs.addnew
rs("name")=name
rs("Email")=Email
rs("subject")=subject
rs("words")=words
rs("titleID")=titleID
rs.update
outputmsg="您的复兴已到场!"
session("name")=name
session("Email")=Email
sql="updatetitlessetlastnewsdate=now(),shu=shu+1wheretitleID="&clng(titleID)
conn.execute(sql)
endif
%>
<html>
<head>
<title>UntitledDocument</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<metahttp-equiv="refresh"content="1;URL=detail.asp?titleID=<%=titleID%>">
</head>
<body>
<center><%=outputmsg%></center>
</body>
</html>
detout.asp
<%
subdetailoutput(rs)
words=replace(server.HTMLEncode(""&rs("words")),chr(13),"<br>")
words=replace(words,"","")
Email="<ahref="""&rs("Email")&"mailto:"&rs("Email")&""">"&rs("Email")&"</a>"
%>
<center>
<table>
<tr>
<td><%=rs("name")%></td>
<td>Email:<%=Email%></td>
<td>工夫:<%=rs("newdate")%></td>
</tr>
<tr>
<tdcolspan="3">主题:<%=rs("subject")%></td>
</tr>
<tr>
<tdcolspan="3"><%=words%></td>
</tr>
</table>
</center>
<%
endsub
%>
这个程序只是一个复杂的典范,另有很多功效没有到场,只是给人人作为参考。
写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们) |
|