📄 admin_classordern.asp
字号:
<%@language=vbscript codepage=936 %>
<%
option explicit
response.buffer=true
Const PurviewLevel=2 '操作权限
%>
<!--#include file="Admin_ChkPurview.asp"-->
<!--#include file="inc/conn.asp"-->
<!--#include file="inc/function.asp"-->
<%
sub UpOrder()
dim sqlOrder,rsOrder,MoveNum,ClassID,i
dim ParentID,OrderID,ParentPath,Child,PrevID,NextID
ClassID=Trim(request("ClassID"))
MoveNum=trim(request("MoveNum"))
if ClassID="" then
FoundErr=true
ErrMsg=ErrMsg & "<br><li>错误参数!</li>"
else
ClassID=CLng(ClassID)
end if
if MoveNum="" then
FoundErr=true
ErrMsg=ErrMsg & "<br><li>错误参数!</li>"
else
MoveNum=Cint(MoveNum)
if MoveNum=0 then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>请选择要提升的数字!</li>"
end if
end if
if FoundErr=True then
exit sub
end if
dim sql,rs,oldorders,ii,trs,tOrderID
'要移动的栏目信息
set rs=conn.execute("select ParentID,OrderID,ParentPath,child,PrevID,NextID From ArticleClass where ClassID="&ClassID)
ParentID=rs(0)
OrderID=rs(1)
ParentPath=rs(2) & "," & ClassID
child=rs(3)
PrevID=rs(4)
NextID=rs(5)
rs.close
set rs=nothing
if child>0 then
set rs=conn.execute("select count(*) From ArticleClass where ParentPath like '%"&ParentPath&"%'")
oldorders=rs(0)
rs.close
set rs=nothing
else
oldorders=0
end if
'先修改上一栏目的NextID和下一栏目的PrevID
if PrevID>0 then
conn.execute "update ArticleClass set NextID=" & NextID & " where ClassID=" & PrevID
end if
if NextID>0 then
conn.execute "update ArticleClass set PrevID=" & PrevID & " where ClassID=" & NextID
end if
'和该栏目同级且排序在其之上的栏目------更新其排序,范围为要提升的数字
sql="select ClassID,OrderID,child,ParentPath,PrevID,NextID From ArticleClass where ParentID="&ParentID&" and OrderID<"&OrderID&" order by OrderID desc"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3
i=1
do while not rs.eof
tOrderID=rs(1)
conn.execute("update ArticleClass set OrderID="&tOrderID+oldorders+i&" where ClassID="&rs(0))
if rs(2)>0 then
ii=i+1
set trs=conn.execute("select ClassID,OrderID From ArticleClass where ParentPath like '%"&rs(3)&","&rs(0)&"%' order by OrderID")
if not (trs.eof and trs.bof) then
do while not trs.eof
conn.execute("update ArticleClass set OrderID="&tOrderID+oldorders+ii&" where ClassID="&trs(0))
ii=ii+1
trs.movenext
loop
end if
trs.close
set trs=nothing
end if
i=i+1
if i>MoveNum then
rs(4)=ClassID
rs.update
conn.execute("update ArticleClass set NextID=" & rs(0) & " where ClassID=" & ClassID)
exit do
end if
rs.movenext
loop
rs.movenext
if rs.eof then
conn.execute("update ArticleClass set PrevID=0 where ClassID=" & ClassID)
else
rs(5)=ClassID
rs.update
conn.execute("update ArticleClass set PrevID=" & rs(0) & " where ClassID=" & ClassID)
end if
rs.close
set rs=nothing
'更新所要排序的栏目的序号
conn.execute("update ArticleClass set OrderID="&tOrderID&" where ClassID="&ClassID)
'如果有下属栏目,则更新其下属栏目排序
if child>0 then
i=1
set rs=conn.execute("select ClassID From ArticleClass where ParentPath like '%"&ParentPath&"%' order by OrderID")
do while not rs.eof
conn.execute("update ArticleClass set OrderID="&tOrderID+i&" where ClassID="&rs(0))
i=i+1
rs.movenext
loop
rs.close
set rs=nothing
end if
end sub
sub DownOrder()
dim sqlOrder,rsOrder,MoveNum,ClassID,i
dim ParentID,OrderID,ParentPath,Child,PrevID,NextID
ClassID=Trim(request("ClassID"))
MoveNum=trim(request("MoveNum"))
if ClassID="" then
FoundErr=true
ErrMsg=ErrMsg & "<br><li>错误参数!</li>"
exit sub
else
ClassID=Cint(ClassID)
end if
if MoveNum="" then
FoundErr=true
ErrMsg=ErrMsg & "<br><li>错误参数!</li>"
exit sub
else
MoveNum=Cint(MoveNum)
if MoveNum=0 then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>请选择要下降的数字!</li>"
exit sub
end if
end if
dim sql,rs,oldorders,ii,trs,tOrderID
'要移动的栏目信息
set rs=conn.execute("select ParentID,OrderID,ParentPath,child,PrevID,NextID From ArticleClass where ClassID="&ClassID)
ParentID=rs(0)
OrderID=rs(1)
ParentPath=rs(2) & "," & ClassID
child=rs(3)
PrevID=rs(4)
NextID=rs(5)
rs.close
set rs=nothing
'先修改上一栏目的NextID和下一栏目的PrevID
if PrevID>0 then
conn.execute "update ArticleClass set NextID=" & NextID & " where ClassID=" & PrevID
end if
if NextID>0 then
conn.execute "update ArticleClass set PrevID=" & PrevID & " where ClassID=" & NextID
end if
'和该栏目同级且排序在其之下的栏目------更新其排序,范围为要下降的数字
sql="select ClassID,OrderID,child,ParentPath,PrevID,NextID From ArticleClass where ParentID="&ParentID&" and OrderID>"&OrderID&" order by OrderID"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3
i=0 '同级栏目
ii=0 '同级栏目和子栏目
do while not rs.eof
conn.execute("update ArticleClass set OrderID="&OrderID+ii&" where ClassID="&rs(0))
if rs(2)>0 then
set trs=conn.execute("select ClassID,OrderID From ArticleClass where ParentPath like '%"&rs(3)&","&rs(0)&"%' order by OrderID")
if not (trs.eof and trs.bof) then
do while not trs.eof
ii=ii+1
conn.execute("update ArticleClass set OrderID="&OrderID+ii&" where ClassID="&trs(0))
trs.movenext
loop
end if
trs.close
set trs=nothing
end if
ii=ii+1
i=i+1
if i>=MoveNum then
rs(5)=ClassID
rs.update
conn.execute("update ArticleClass set PrevID=" & rs(0) & " where ClassID=" & ClassID)
exit do
end if
rs.movenext
loop
rs.movenext
if rs.eof then
conn.execute("update ArticleClass set NextID=0 where ClassID=" & ClassID)
else
rs(4)=ClassID
rs.update
conn.execute("update ArticleClass set NextID=" & rs(0) & " where ClassID=" & ClassID)
end if
rs.close
set rs=nothing
'更新所要排序的栏目的序号
conn.execute("update ArticleClass set OrderID="&OrderID+ii&" where ClassID="&ClassID)
'如果有下属栏目,则更新其下属栏目排序
if child>0 then
i=1
set rs=conn.execute("select ClassID From ArticleClass where ParentPath like '%"&ParentPath&"%' order by OrderID")
do while not rs.eof
conn.execute("update ArticleClass set OrderID="&OrderID+ii+i&" where ClassID="&rs(0))
i=i+1
rs.movenext
loop
rs.close
set rs=nothing
end if
end sub
%>
<html>
<head>
<title>N级栏目重新排序</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="Admin_Style.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="2" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" class="border">
<tr class="topbg">
<td height="22" colspan="2" align="center"><strong>栏 目 管 理</strong></td>
</tr>
<tr class="tdbg">
<td width="70" height="30"><strong>管理导航:</strong></td>
<td height="30"><a href="Admin_ClassManage.asp">栏目管理首页</a> | <a href="Admin_ClassAdd.asp">添加一级栏目</a> | <a href="Admin_ClassOrder.asp">一级栏目排序</a> | <a href="Admin_ClassOrderN.asp">N级栏目排序</a> | <a href="Admin_ClassReset.asp">复位所有栏目</a> | <a href="Admin_ClassUnite.asp">栏目合并</a></td>
</tr>
</table>
<br>
<%
dim Action,FoundErr,ErrMsg
Action=trim(request("Action"))
if Action="UpOrder" then
call UpOrder()
elseif Action="DownOrder" then
call DownOrder()
end if
if FoundErr=True then
WriteErrMsg()
else
call main()
end if
call CloseConn()
sub main()
dim sqlClass,rsClass,i,iCount,trs,UpMoveNum,DownMoveNum
sqlClass="select * From ArticleClass order by RootID,OrderID"
set rsClass=server.CreateObject("adodb.recordset")
rsClass.open sqlClass,conn,1,1
%>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" class="border">
<tr class="title">
<td height="22" colspan="4" align="center"><strong>N级栏目重新排序</strong></td>
</tr>
<%
do while not rsClass.eof
%>
<tr class="tdbg" onmouseout="this.style.backgroundColor=''" onmouseover="this.style.backgroundColor='#BFDFFF'">
<td width="300">
<%
for i=1 to rsClass("Depth")
response.write " "
next
if rsClass("Child")>0 then
response.write "<img src='Images/tree_folder4.gif' width='15' height='15' valign='abvmiddle'>"
else
response.write "<img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'>"
end if
if rsClass("ParentID")=0 then
response.write "<b>"
end if
response.write rsClass("ClassName")
if rsClass("Child")>0 then
response.write "(" & rsClass("Child") & ")"
end if
%></td>
<%
if rsClass("ParentID")>0 then '如果不是一级栏目,则算出相同深度的栏目数目,得到该栏目在相同深度的栏目中所处位置(之上或者之下的栏目数)
'所能提升最大幅度应为For i=1 to 该版之上的版面数
set trs=conn.execute("select count(ClassID) From ArticleClass where ParentID="&rsClass("ParentID")&" and OrderID<"&rsClass("OrderID")&"")
UpMoveNum=trs(0)
if isnull(UpMoveNum) then UpMoveNum=0
if UpMoveNum>0 then
response.write "<form action='Admin_ClassOrderN.asp?Action=UpOrder' method='post'><td width='150'>"
response.write "<select name=MoveNum size=1><option value=0>向上移动</option>"
for i=1 to UpMoveNum
response.write "<option value="&i&">"&i&"</option>"
next
response.write "</select>"
response.write "<input type=hidden name=ClassID value="&rsClass("ClassID")&"> <input type=submit name=Submit value=修改>"
response.write "</td></form>"
else
response.write "<td width='150'> </td>"
end if
trs.close
'所能降低最大幅度应为For i=1 to 该版之下的版面数
set trs=conn.execute("select count(ClassID) From ArticleClass where ParentID="&rsClass("ParentID")&" and orderID>"&rsClass("orderID")&"")
DownMoveNum=trs(0)
if isnull(DownMoveNum) then DownMoveNum=0
if DownMoveNum>0 then
response.write "<form action='Admin_ClassOrderN.asp?Action=DownOrder' method='post'><td width='150'>"
response.write "<select name=MoveNum size=1><option value=0>向下移动</option>"
for i=1 to DownMoveNum
response.write "<option value="&i&">"&i&"</option>"
next
response.write "</select>"
response.write "<input type=hidden name=ClassID value="&rsClass("ClassID")&"> <input type=submit name=Submit value=修改>"
response.write "</td></form>"
else
response.write "<td width='150'> </td>"
end if
trs.close
else
response.write "<td colspan=2> </td>"
end if
%>
<td> </td>
</tr>
<%
UpMoveNum=0
DownMoveNum=0
rsClass.movenext
loop
%>
</table>
</body>
</html>
<%
rsClass.close
set rsClass=nothing
end sub
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -