直播中
作者:沙灘小子
經(jīng)過(guò)了文章的添加、保存、顯示,那么現(xiàn)在應(yīng)該來(lái)談?wù)勱P(guān)于管理程序的顯示主頁(yè)面,也就是顯示所有文章的標(biāo)題連接,以方便瀏覽者查找文章,其應(yīng)該具有的功能有:顯示所有文章的標(biāo)題連接,加入日期,瀏覽次數(shù)等信息,另外還必須提供分頁(yè)功能,要不然這么多的文章標(biāo)題在一個(gè)頁(yè)面都顯示出來(lái),那將非常的費(fèi)時(shí)且不便瀏覽,另外由于本程序在這里結(jié)合了文章分欄目搜索的功能,所以在這里也將一起介紹了。
下面就為大家詳細(xì)的介紹主頁(yè)面index.asp的這些功能的實(shí)現(xiàn)過(guò)程以及其具體功用:
"建立數(shù)據(jù)庫(kù)連接
<!--#include file="conn.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ASP專(zhuān)題欄目</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>
<%
"定義每頁(yè)最大文章標(biāo)題顯示量MaxPerPage,你可以自己修改這里的數(shù)字來(lái)達(dá)到你的最佳顯示效果
const MaxPerPage=18
dim totalPut
dim CurrentPage
dim TotalPages
dim i,j
"假如返回的頁(yè)面信息是空的,也就是如果你直接輸入index.asp,那么就用這里定義的頁(yè)數(shù)第一頁(yè)
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
"如果返回的欄目信息為空,那么就用這里定義的欄目,這里指定的是第三個(gè)欄目
if not isEmpty(request("typeid")) then
typeid=request("typeid")
else
typeid=3
end if
"通過(guò)返回的欄目typeid號(hào),打開(kāi)數(shù)據(jù)庫(kù)顯示指定的欄目,并把其值交給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>
"顯示欄目信息,當(dāng)你點(diǎn)擊了任何一個(gè)欄目,在typename的位置都會(huì)顯示相關(guān)信息,這里沒(méi)有采用欄目的自動(dòng)顯示方式是考慮了頁(yè)面的顯示效果,而采用手工添加的模式,要想采用自動(dòng)模式,就自己寫(xiě)吧:)相信你學(xué)習(xí)到現(xiàn)在,不會(huì)連這個(gè)都編不出來(lái)吧!
動(dòng)網(wǎng)ASP技巧專(zhuān)題>><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實(shí)例</a>|<a href="index.asp?typeid=5">ASP安全</a> </p>
<div align="center">
"打開(kāi)指定的記錄集article并按照文章的加入日期排序,在這里打開(kāi)有兩個(gè)條件,一個(gè)是利用like來(lái)查詢(xún)數(shù)據(jù)庫(kù)并顯示相關(guān)文章標(biāo)題,還有就是通過(guò)返回的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
"如果查詢(xún)數(shù)據(jù)庫(kù)的結(jié)果指向記錄集的開(kāi)始或者結(jié)尾,表示數(shù)據(jù)庫(kù)中沒(méi)有任何相關(guān)文章
if rs.eof and rs.bof then
response.write "<p align='center'>沒(méi)有或沒(méi)有找到任何文章</p>"
else
"如果數(shù)據(jù)庫(kù)內(nèi)有內(nèi)容,則取得數(shù)據(jù)庫(kù)內(nèi)文章數(shù)目
totalPut=rs.recordcount
"假如頁(yè)面參數(shù)currentpage小于1,則指定為1
if currentpage<1 then
currentpage=1
end if
"利用文章總數(shù)和每頁(yè)最大文章數(shù)算得分頁(yè)的頁(yè)數(shù)
if (currentpage-1)*MaxPerPage>totalput then
if (totalPut mod MaxPerPage)=0 then
currentpage= totalPut \ MaxPerPage
else
currentpage= totalPut \ MaxPerPage + 1
end if
end if
"如果分頁(yè)的頁(yè)數(shù)為1或者頁(yè)面數(shù)減1乘與頁(yè)面最大文章數(shù)小于文章總數(shù),則用已經(jīng)做好的function showpage在showContent子程序也就是顯示文章標(biāo)題部分的上面和下面顯示分頁(yè)程序
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
"定義書(shū)簽
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
"顯示文章標(biāo)題及相關(guān)數(shù)據(jù)庫(kù)內(nèi)容子程序
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號(hào)</strong></td>
<td width="381" align="center" bgcolor="#D0D0D0"><strong>文章標(biāo)題</strong></td>
<td width="98" align="center" bgcolor="#D0D0D0"><strong>加入日期</strong></td>
<td width="58" align="center" bgcolor="#D0D0D0"><strong>點(diǎn)擊</strong></td>
</tr>
<%do while not rs.eof%>
<tr>
"依次顯示文章ID號(hào),文章標(biāo)題,文章加入日期及瀏覽數(shù),這里的openarticle.asp是用來(lái)重新定向文章的,以后將為大家介紹
<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>
<%
"這里是一個(gè)循環(huán),每顯示一篇文章,則定義的變量i的值加一,當(dāng)i的值大于或等于頁(yè)面最大文章數(shù)時(shí)退出循環(huán)
i=i+1
if i>=MaxPerPage then exit do
"顯示完一篇文章以后,自動(dòng)移到記錄集的下一個(gè)記錄
rs.movenext
loop
%>
</table>
</center></div><%
end sub
"顯示分頁(yè)的function
function showpage(totalnumber,maxperpage,filename)
dim n
"利用文章數(shù)算出文章的分頁(yè)數(shù)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'>>>分頁(yè)</font> "
"如果當(dāng)前頁(yè)數(shù)小于2,則顯示的文章首頁(yè)和上一頁(yè)不顯示連接,否則用當(dāng)前頁(yè)數(shù)減去1來(lái)顯示上一頁(yè),直接用page=1來(lái)顯示首頁(yè)
if CurrentPage<2 then
response.write "<font color='#000080'>首頁(yè) 上一頁(yè)</font> "
else
response.write "<a href="&filename&"?page=1&typeid="&typeid&">首頁(yè)</a> "
response.write "<a href="&filename&"?page="&CurrentPage-1&"&typeid="&typeid&">上一頁(yè)</a> "
end if
"假如分頁(yè)頁(yè)數(shù)小于1,則直接顯示下一頁(yè)和尾頁(yè),否則用當(dāng)前頁(yè)數(shù)加上1來(lái)顯示下一頁(yè),用已經(jīng)算出的文章分頁(yè)數(shù)N顯示文章的尾頁(yè)
if n-currentpage<1 then
response.write "<font color='#000080'>下一頁(yè) 尾頁(yè)</font>"
else
response.write "<a href="&filename&"?page="&(CurrentPage+1)&"&typeid="&typeid&">"
response.write "下一頁(yè)</a> <a href="&filename&"?page="&n&">尾頁(yè)</a>"
end if
"用N和maxperpage顯示文章的分頁(yè)數(shù)和每頁(yè)的文章數(shù)
response.write "<font color='#000080'> 頁(yè)次:</font><strong><font color=red>"&CurrentPage&"</font><font color='#000080'>/"&n&"</strong>頁(yè)</font> "
response.write "<font color='#000080'> 共<b>"&totalnumber&"</b>篇文章 <b>"&maxperpage&"</b>篇文章/頁(yè)</font> "
"直接輸入文章所在頁(yè)面轉(zhuǎn)到相關(guān)頁(yè)面
response.write " <font color='#000080'>轉(zhuǎn)到:</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
%>
"文章搜索相關(guān)程序
<form name="searchtitle" method="POST" action="index.asp">
"把輸入的查詢(xún)字符賦值給txtitle,這樣在前面的顯示文章語(yǔ)句就起了作用title like '%"&request("txtitle")&"%'
<p>標(biāo)題:<input class="smallInput" type="text" name="txtitle" size="13"> <select class="smallSel" name="typeid" size="1">
<%
"顯示與文章相關(guān)的欄目信息,可以選擇一個(gè)進(jìn)行查詢(xún),這里的typeid也賦值給了typeid,以使前面的顯示文章的程序?qū)π枰@示內(nèi)容做出判斷
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="查 詢(xún)" name="title"></p>
</form>
</div></td>
</tr>
</table>
</center></div>
</body>
</html>
在這里順便介紹一下關(guān)于打開(kāi)文章的程序openarticle.asp,這個(gè)也是一個(gè)更新數(shù)據(jù)庫(kù)內(nèi)容(update瀏覽數(shù))和重定向文件。很簡(jiǎn)單,所以這里只是簡(jiǎn)單介紹一下它的程序內(nèi)容:
<%@ LANGUAGE="VBSCRIPT" %>
"打開(kāi)數(shù)據(jù)庫(kù)連接
<!--#include file="conn.asp"-->
<%response.buffer=false
dim sql
dim rs
dim articleid
"利用update從文章連接處返回的文章號(hào)ID更新指定文章的瀏覽數(shù),以及利用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
%>
好了,關(guān)于文章的顯示首頁(yè)面就完成了,它可以顯示文章的標(biāo)題,加入日期等文章相關(guān)信息,另外還結(jié)合了文章的分欄目搜索查詢(xún)功能。在這里你會(huì)發(fā)現(xiàn),利用ASP對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢(xún)并不是一件很難的事情,只要利用一個(gè)like就可以輕易實(shí)現(xiàn),文章管理的前臺(tái)程序我們已經(jīng)基本完成,下面該來(lái)介紹管理系統(tǒng)的后臺(tái)程序了。下一節(jié)我們將從管理員的密碼及密碼驗(yàn)證開(kāi)始介紹管理系統(tǒng)的后臺(tái)程序!講了這么多你是否有什么疑問(wèn)呢,要是有什么問(wèn)題可以發(fā)EMAIL給我:wodeail@etang.com,本程序的具體實(shí)例在:http://asky.on.net.cn/article
轉(zhuǎn)載請(qǐng)注明出處http://asky.on.net.cn