ASP网页设计用ASP+Access制造论坛教程
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。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.(一般企业里,跟你们交付软件接触得最多的是她们) 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页:
[1]