ASP进阶之文章在线管理更新(8)

 经过了文章的添加、保存、显示,那么现在应该来谈谈关于管理程序的显示主页面,也就是显示所有文章的标题连接,以方便浏览者查找文章,其应该具有的功能有:显示所有文章的标题连接,加入日期,浏览次数等信息,另外还必须提供分页功能,要不然这么多的文章标题在一个页面都显示出来,那将非常的费时且不便浏览,另外由于本程序在这里结合了文章分栏目搜索的功能,所以在这里也将一起介绍了。

   下面就为大家详细的介绍主页面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就可以轻易实现,文章管理的前台程序我们已经基本完成,下面该来介绍管理系统的后台程序了。

时间: 2024-09-17 02:52:27

ASP进阶之文章在线管理更新(8)的相关文章

ASP进阶之文章在线管理更新(十)

在线 ASP进阶之文章在线管理更新--文章删除篇 作者:沙滩小子 上一节我们介绍了文章管理的主页面,而这里的主页面只是显示了相关的连接而已,要是没有相关的程序来执行,那么也只是空连接而已,并不会显示出它的具体功用,而文章的在线删除是本系统不可缺少的一部分,虽然它的程序很简单,但是还是有必要为大家介绍一下. 在ASP中,对数据库的操作有更新(update).删除(delete)等操作,在本系统中对文章的删除就是利用了DELETE来进行文章的删除操作的,下面就为大家介绍本删除程序(delete.as

ASP进阶之文章在线管理更新(八)

在线 ASP进阶之文章在线管理更新--管理者登陆及验证篇 作者:沙滩小子 前面已经介绍了文章管理系统的前台程序,其前台程序主要就是提供给大家浏览的页面,主要是文章浏览.文章搜索.转发EMAIL等程序,其实开始介绍的文章添加和保存实际上是本系统的后台程序,但是文章的显示的具体内容是和文章的搜集.添加.保存是分不开的,要不然何来文章显示?我们现在开始介绍的文章管理系统的后台程序将具有以下功能:管理员登陆验证.文章在线添加(前面已经介绍过).文章在线修改删除.管理员密码修改.文章栏目修改添加及删除等主

ASP进阶之文章在线管理更新(九)

在线 ASP进阶之文章在线管理更新--管理页面篇 作者:沙滩小子 前面讲述了关于文章管理系统的密码及密码验证,通过密码验证可以限制一般浏览者所能进入的页面,这里所要限制的就是普通用户所不能进入的页面,也就是包括管理页面.删除文章页面.修改文章页面以及修改用户信息和修改栏目信息的页面.其实这里的主管理页面就是和文章管理系统的主页面类似的页面,只是在里面添加了一些有关管理内容的连接,以方便管理者对文章进行在线的修改删除等操作. 下面就为大家介绍这一页面的主要程序内容,由于它和文章管理的主页面差不多,

ASP进阶之文章在线管理更新(十一)

在线 ASP进阶之文章在线管理更新--文章修改篇 作者:沙滩小子 上一节我们讲了文章的在线删除的具体实现方法,在这里我将为大家介绍关于文章管理系统的在线修改.在本系统中,提供在线修改是一项必不可少的内容,因为当大家在网上更新文章的时候,总会碰上这样那样的问题,一个不小心就会造成添加的失误,有时候是内容不全,也有可能是文章的栏目原来添加的时候选错了,同时也就是这样那样的错误才显得这个程序的必要性. 文章的在线修改保存的程序其实和文章的添加和保存程序差不多,只是这里是对数据库进行更新,而文章添加则是

ASP进阶之文章在线管理更新(十二)

在线 ASP进阶之文章在线管理更新--管理员&栏目管理篇 作者:沙滩小子 前面的章节已经基本实现了文章管理系统的大部分功能,但是在本系统中,管理员姓名和密码以及栏目的更新都要自己在数据库中操作,这样并没有完全实现系统的完全在线管理更新,所以我最近对管理系统进行了进一步的完善,对其增加了相关功能,实现的真正意义上的文章管理系统在线管理更新! 实现这些功能也是通过对数据库的更新甚至新增内容来实现的,在这里活用数据库操作命令updata和addnew是关键,那些地方该用UPDATA,那些地方该用ADD

ASP进阶之文章在线管理更新(一)

在线 ASP进阶之文章在线管理更新--数据库连接篇 作者:沙滩小子 上一节为大家介绍了文章管理系统的数据库结构,建立了数据库以后,就要用ASP建立与数据库相关的程序,包括连接数据库.显示数据库内容.更新数据库等与之相关的程序,所以本篇将为大家讲述在管理系统中怎样与数据库进行连接,并打开数据库.在ASP程序中,一般都将建立数据库连接的程序单独放到一个文件中,以后就直接用<!--include file="xxx.asp"-->来调用就可以了,这样即省去了以后在需要建立数据库连

ASP进阶之文章在线管理更新(二)

在线 ASP进阶之文章在线管理更新--文章的添加篇 作者:沙滩小子 上一节已经介绍了关于文章管理的数据库连接,本篇将讲述文章的在线添加,当你找到了一篇很好的资料,并且想尽快放到你的网站上面,如果你首先想到的是快点做好一个页面,并且赶快用FTP把它上传,那么在这里这些都显得没有必要了,在这里你可以通过进入管理页面的添加文章,然后直接把文章粘贴复制过来就可以了,这也是本篇将要讲述的重点--文章的在线添加. 另外通过下面的一步步讲解,相信你可以领会到其中的意义,在这里对HTM代码将不做讲述. 新建一A

ASP进阶之文章在线管理更新(三)

在线 ASP进阶之文章在线管理更新--文章的保存篇 作者:沙滩小子 经过了文章的添加过程,我想大家更想知道ASP代码是怎样将页面上的信息保存到数据库里面的呢?而且这一功能还必须由另外一个页面来实现,由于ASP对数据库支持的完好性,由ASP来实现对数据库的操作是非常简单的,很容易对数据库进行新增.更新.修改.删除等操作,而我们的程序正好对这些方面都有一定的要求,下面就来介绍本程序中的文章保存页面! 新建一ASP文件savearticle.asp,以下注明其主要代码的具体含义: "插入数据库连接文件

ASP进阶之文章在线管理更新(四)

在线 ASP进阶之文章在线管理更新--对HTM代码的转化篇 作者:沙滩小子 前面为大家介绍了文章的在线添加以及保存,但如果仅仅是这样还不够的,因为有很多的文章本身带有的HTM代码必须完整的显示出来,而不是显示出它的效果来,这也就是说必须转化HTM代码以使它能具体显示出它的代码,比如:<a href="">你好</a>你并不想在页面上显示出它是一个连接,而是显示其代码,这就象FRONTPAGE里面的直接在编辑页面写代码,只不过FRONTPAGE提供了转化的功能而已

ASP进阶之文章在线管理更新(五)

在线 ASP进阶之文章在线管理更新--文章显示篇 作者:沙滩小子 前面已经为大家介绍了文章的添加保存,接下来就应该讲讲文章的显示了.在这里,你更加可以看出ASP的简单易用性,仅仅是通过一个文件,就可以对数据库内的所有文章进行显示.它主要是通过从连接返回的文章号(articleid)和栏目的信息(typeid)来打开数据库中指定的记录以及指定显示所需要的内容. 以下是文章显示页面(list.asp)的详细代码以及注解: "打开数据库连接<!--#include file="conn