ASP网页设计ASP进阶之文章在线办理更新(8)
Active Server Page技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。 经由了文章的添加、保留、显示,那末如今应当来谈谈关于办理法式的显示主页面,也就是显示一切文章的题目毗连,以便利阅读者查找文章,其应当具有的功效有:显示一切文章的题目毗连,到场日期,阅读次数等信息,别的还必需供应分页功效,要否则这么多的文章题目在一个页面都显示出来,那将十分的费时且方便阅读,别的因为本法式在这里联合了文章分栏目搜刮的功效,所以在这里也将一同引见了。上面就为人人具体的引见主页面index.asp的这些功效的完成进程和其详细功用:
"创立数据库毗连
<!--#include file="conn.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ASP专题栏目</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<link rel="stylesheet" type="text/css" href="style.css">
<script language="javascript">
function popwin2(path)
{ window.open(path,"","height=450,width=600,resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no");
}
</script>
</head>
<%
"界说每页最大文章题目显示量MaxPerPage,你可以本人修正这里的数字来到达你的最好显示后果
const MaxPerPage=18
dim totalPut
dim CurrentPage
dim TotalPages
dim i,j
"假设前往的页面信息是空的,也就是假如你直接输出index.asp,那末就用这里界说的页数第一页
if not isempty(request("page")) then
currentPage=cint(request("page"))
else
currentPage=1
end if
dim sql
dim rs
dim rstype
dim typesql
dim typeid,typename
"假如前往的栏目信息为空,那末就用这里界说的栏目,这里指定的是第三个栏目
if not isEmpty(request("typeid")) then
typeid=request("typeid")
else
typeid=3
end if
"经由过程前往的栏目typeid号,翻开数据库显示指定的栏目,并把其值交给typename
set rstype=server.createobject("adodb.recordset")
typesql="select * from type where typeID="&cstr(typeid)
rstype.open typesql,conn,1,1
typename=rstype("type")
rstype.close
%>
<body>
<div align="center"><center>
<table border="0" width="95%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" style="border-left: thin dotted rgb(0,128,0); border-right: thin dotted rgb(0,128,0)"><p align="center"><br>
"显示栏目信息,当你点击了任何一个栏目,在typename的地位城市显示相干信息,这里没有采取栏目标主动显示体例是思索了页面的显示后果,而采取手工添加的形式,要想采取主动形式,就本人写吧:)信任你进修到如今,不会连这个都编不出来吧!
动网ASP技能专题>><font color="#FF0000"><%response.write ""&typename&""%></font><br>
<a href="index.asp?typeid=1">ASP FAQ</a>|<a href="index.asp?typeid=2">ASP组件</a> |<a href="index.asp?typeid=3">ASP文摘</a>|<a href="index.asp?typeid=4">ASP实例</a>|<a href="index.asp?typeid=5">ASP平安</a> </p>
<div align="center">
"翻开指定的纪录集article并依照文章的到场日期排序,在这里翻开有两个前提,一个是使用like来查询数据库并显示相干文章题目,还有就是经由过程前往的typeid显示指定栏目标文章
<%
sql="select * from article where title like '%"&request("txtitle")&"%' and typeid="+cstr(typeid)+" order by date desc"
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,1
"假如查询数据库的了局指向纪录集的入手下手或开头,暗示数据库中没有任何相干文章
if rs.eof and rs.bof then
response.write "<p align='center'>没有或没有找就任何文章</p>"
else
"假如数据库内有内容,则获得数据库内文章数量
totalPut=rs.recordcount
"假设页面参数currentpage小于1,则指定为1
if currentpage<1 then
currentpage=1
end if
"使用文章总数和每页最大文章数算得分页的页数
if (currentpage-1)*MaxPerPage>totalput then
if (totalPut mod MaxPerPage)=0 then
currentpage= totalPut \ MaxPerPage
else
currentpage= totalPut \ MaxPerPage + 1
end if
end if
"假如分页的页数为1或页面数减1乘与页面最大文章数小于文章总数,则用已做好的function showpage在showContent子法式也就是显示文章题目局部的下面和上面显示分页法式
if currentPage=1 then
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
else
if (currentPage-1)*MaxPerPage<totalPut then
rs.move(currentPage-1)*MaxPerPage
"界说书签
dim bookmark
bookmark=rs.bookmark
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
else
currentPage=1
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
end if
end if
rs.close
end if
set rs=nothing
"显示文章题目及相干数据库内容子法式
sub showContent
dim i
i=0
%>
<div align="center"><center><table border="1" cellspacing="0" width="589" bordercolorlight="#000000" bordercolordark="#FFFFFF" cellpadding="0">
<tr>
<td width="46" align="center" bgcolor="#D0D0D0" height="20"><strong>ID号</strong></td>
<td width="381" align="center" bgcolor="#D0D0D0"><strong>文章题目</strong></td>
<td width="98" align="center" bgcolor="#D0D0D0"><strong>到场日期</strong></td>
<td width="58" align="center" bgcolor="#D0D0D0"><strong>点击</strong></td>
</tr>
<%do while not rs.eof%>
<tr>
"顺次显示文章ID号,文章题目,文章到场日期及阅读数,这里的openarticle.asp是用来从头定向文章的,今后将为人人引见
<td height="23" width="46"><p align="center"><%=rs("articleid")%></td>
<td width="381"><p align="center"><a href="javascript:popwin2('openarticle.asp?id=<%=rs("articleid")%>&typeid=<%=cstr(typeid)%>')"><%=rs("title")%></a></td>
<td width="98"><p align="center"><font color="red"><i><%=rs("date")%></i></font></td>
<td width="58"><p align="center"><%=rs("hits")%></td>
</tr>
<%
"这里是一个轮回,每显示一篇文章,则界说的变量i的值加一,当i的值大于或等于页面最大文章数时加入轮回
i=i+1
if i>=MaxPerPage then exit do
"显示完一篇文章今后,主动移到纪录集的下一个纪录
rs.movenext
loop
%>
</table>
</center></div><%
end sub
"显示分页的function
function showpage(totalnumber,maxperpage,filename)
dim n
"使用文章数算出文章的分页数N
if totalnumber mod maxperpage=0 then
n= totalnumber \ maxperpage
else
n= totalnumber \ maxperpage+1
end if
response.write "<form method=Post action="&filename&"?typeid="&typeid&">"
response.write "<p align='center'><font color='#000080'>>>分页</font> "
"假如以后页数小于2,则显示的文章首页和上一页不显示毗连,不然用以后页数减去1来显示上一页,直接用page=1来显示首页
if CurrentPage<2 then
response.write "<font color='#000080'>首页 上一页</font> "
else
response.write "<a href="&filename&"?page=1&typeid="&typeid&">首页</a> "
response.write "<a href="&filename&"?page="&CurrentPage-1&"&typeid="&typeid&">上一页</a> "
end if
"假设分页页数小于1,则直接显示下一页和尾页,不然用以后页数加上1来显示下一页,用已算出的文章分页数N显示文章的尾页
if n-currentpage<1 then
response.write "<font color='#000080'>下一页 尾页</font>"
else
response.write "<a href="&filename&"?page="&(CurrentPage+1)&"&typeid="&typeid&">"
response.write "下一页</a> <a href="&filename&"?page="&n&">尾页</a>"
end if
"用N和maxperpage显示文章的分页数和每页的文章数
response.write "<font color='#000080'> 页次:</font><strong><font color=red>"&CurrentPage&"</font><font color='#000080'>/"&n&"</strong>页</font> "
response.write "<font color='#000080'> 共<b>"&totalnumber&"</b>篇文章 <b>"&maxperpage&"</b>篇文章/页</font> "
"直接输出文章地点页面转到相干页面
response.write " <font color='#000080'>转到:</font><input type='text' name='page' size=4 maxlength=10 class=smallInput value="¤tpage&">"
response.write "<input class=buttonface type='submit'value=' Goto 'name='cndok'></span></p></form>"
end function
%>
"文章搜刮相干法式
<form name="searchtitle" method="POST" action="index.asp">
"把输出的查询字符赋值给txtitle,如许在后面的显示文章语句就起了感化title like '%"&request("txtitle")&"%'
<p>题目:<input class="smallInput" type="text" name="txtitle" size="13"> <select class="smallSel" name="typeid" size="1">
<%
"显示与文章相干的栏目信息,可以选择一个停止查询,这里的typeid也赋值给了typeid,以使后面的显示文章的法式对需求显示内容做出判别
typesql="select * from type"
rstype.open typesql,conn,1,1
do while not rstype.eof
sel="selected"
response.write "<option " & sel & " value='"+CStr(rstype("typeID"))+"' name=typeid>"+rstype("type")+"</option>"+chr(13)+chr(10)
rstype.movenext
loop
rstype.close
set conn=nothing
%> </select><input class="buttonface" type="submit" value="查 询" name="title"></p>
</form>
</div></td>
</tr>
</table>
</center></div>
</body>
</html>
在这里特地引见一下关于翻开文章的法式openarticle.asp,这个也是一个更新数据库内容(update阅读数)和重定向文件。很复杂,所以这里只是复杂引见一下它的法式内容:
<%@ LANGUAGE="VBSCRIPT" %>
"翻开数据库毗连
<!--#include file="conn.asp"-->
<%response.buffer=false
dim sql
dim rs
dim articleid
"使用update从文章毗连处前往的文章号ID更新指定文章的阅读数,和使用response.redirect重定向文章的毗连
articleid=request("id")
set rs=server.createobject("adodb.recordset")
sql="update article set hits=hits+1 where articleID="&articleid
rs.open sql,conn,1,1
rs.close
conn.close
response.redirect "list.asp?id="&articleid
%>
好了,关于文章的显示首页面就完成了,它可以显示文章的题目,到场日期等文章相干信息,别的还联合了文章的分栏目搜刮查询功效。在这里你会发明,使用ASP对数据库停止查询并非一件很难的工作,只需使用一个like就能够等闲完成,文章办理的前台法式咱们已根基完成,上面该来引见办理体系的后台法式了。ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失; 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
页:
[1]
2