仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3085|回复: 20
打印 上一主题 下一主题

[学习教程] ASP网页设计ASP进阶之文章在线办理更新(8)

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:31:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
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="&currentpage&">"
   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系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;
第二个灵魂 该用户已被删除
沙发
发表于 2015-2-4 01:13:47 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
飘飘悠悠 该用户已被删除
板凳
 楼主| 发表于 2015-2-5 00:35:26 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
蒙在股里 该用户已被删除
地板
发表于 2015-2-6 20:29:19 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
兰色精灵 该用户已被删除
5#
发表于 2015-2-18 14:42:51 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-6 06:50:48 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-9 20:19:01 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
乐观 该用户已被删除
8#
发表于 2015-3-17 00:26:35 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-20 02:24:43 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
小女巫 该用户已被删除
10#
发表于 2015-3-31 00:28:29 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
谁可相欹 该用户已被删除
11#
发表于 2015-4-1 04:44:42 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
变相怪杰 该用户已被删除
12#
发表于 2015-4-3 23:58:50 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
再现理想 该用户已被删除
13#
发表于 2015-4-6 06:45:43 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
冷月葬花魂 该用户已被删除
14#
发表于 2015-4-7 14:05:34 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
若相依 该用户已被删除
15#
发表于 2015-4-7 15:47:26 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
16#
发表于 2015-4-9 09:43:44 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
爱飞 该用户已被删除
17#
发表于 2015-4-17 08:44:18 | 只看该作者
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。
飘灵儿 该用户已被删除
18#
发表于 2015-4-18 15:47:48 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
简单生活 该用户已被删除
19#
发表于 2015-4-20 10:22:30 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
admin 该用户已被删除
20#
发表于 2015-5-5 22:41:21 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 05:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表