📄 admin_cat.asp
字号:
end if
if rs("parentid")=0 then
response.write "<b>"
end if
response.write rs("catname")
if rs("child")>0 then
response.write "("&rs("child")&")"
end if
response.Write("</td><td width=""50%"" class=""row"">")
if rs("ParentID")>0 then
'算出相同深度的分类数目,得到该分类在相同深度的分类中所处位置(之上或者之下的分类数)
'所能提升最大幅度应为For i=1 to 该版之上的版面数
set trs=conn.execute("select count(*) from cat where ParentID="&rs("ParentID")&" and orders<"&rs("orders")&"")
uporders=trs(0)
if isnull(uporders) then uporders=0
'所能降低最大幅度应为For i=1 to 该版之下的版面数
set trs=conn.execute("select count(*) from cat where ParentID="&rs("ParentID")&" and orders>"&rs("orders")&"")
doorders=trs(0)
if isnull(doorders) then doorders=0
if uporders>0 then
response.write "<select name=uporders size=1><option value=0>向上移动</option>"
for i=1 to uporders
response.write "<option value="&i&">"&i&"</option>"
next
response.write "</select>"
end if
if doorders>0 then
if uporders>0 then response.write " "
response.write "<select name=doorders size=1><option value=0>向下移动</option>"
for i=1 to doorders
response.write "<option value="&i&">"&i&"</option>"
next
response.write "</select>"
end if
if doorders>0 or uporders>0 then
response.write "<input type=hidden name=""editID"" value="""&rs("catid")&"""> <input type=submit name=Submit value=修改>"
end if
end if
response.Write("</td></tr></form>")
uporders=0
doorders=0
rs.movenext
loop
response.Write("</table>")
end if
rs.close
set rs=nothing
end sub
sub updatecatorders()
dim ParentID,orders,ParentStr,child
dim uporders,doorders,oldorders,trs,ii
if not isnumeric(request("editID")) then
response.write "非法的参数!"
exit sub
end if
if request("uporders")<>"" and not Cint(request("uporders"))=0 then
if not isnumeric(request("uporders")) then
response.write "非法的参数!"
exit sub
elseif Cint(request("uporders"))=0 then
response.write "请选择要提升的数字!"
exit sub
end if
'向上移动
'要移动的分类信息 shinzeal加入rootid和depth作为更新所有相关分类的依据
dim rootid,depth
set rs=conn.execute("select ParentID,orders,ParentStr,child,rootid,depth from cat where catid="&request("editID"))
ParentID=rs(0)
orders=rs(1)
ParentStr=rs(2) & "," & request("editID")
child=rs(3)
rootid=rs(4)
depth=rs(5)
i=0
'response.write "select catid,orders from cat where ParentID="&ParentID&" and orders<"&orders&" order by orders desc<br>"
if child>0 then
set rs=conn.execute("select count(*) from cat where ParentStr like '%"&ParentStr&"%' and rootid="&rootid)
oldorders=rs(0)
else
oldorders=0
end if
'shinzeal加入变量shin和shinlast记录更新后分类最大的orders
dim shin,shinlast
shin=0
shinlast=0
'和该分类同级且排序在其之上的分类-更新其排序,最末者为当前分类排序号
set rs=conn.execute("select catid,orders,child,ParentStr from cat where ParentID="&ParentID&" and orders<"&orders&" order by orders desc")
do while not rs.eof
i=i+1
if Cint(request("uporders"))>=i then
if rs(2)>0 then
ii=0
set trs=conn.execute("select catid,orders from cat where ParentStr like '%"&rs(3)&","&rs(0)&"%' order by orders")
if not (trs.eof and trs.bof) then
do while not trs.eof
ii=ii+1
conn.execute("update cat set orders="&orders&"+"&oldorders&"+"&ii&" where catid="&trs(0))
shin=orders+oldorders+ii
if shin>shinlast then shinlast=shin
trs.movenext
loop
end if
end if
conn.execute("update cat set orders="&orders&"+"&oldorders&" where catid="&rs(0))
shin=orders+oldorders
if shin>shinlast then shinlast=shin
if Cint(request("uporders"))=i then uporders=rs(1)
end if
orders=rs(1)
rs.movenext
loop
'更新所要排序的分类的序号
conn.execute("update cat set orders="&uporders&" where catid="&request("editID"))
'如果有下属分类,则更新其下属分类排序
if child>0 then
i=uporders
set rs=conn.execute("select catid from cat where ParentStr like '%"&ParentStr&"%' and depth>"&depth&" order by orders")
do while not rs.eof
i=i+1
conn.execute("update cat set orders="&i&" where catid="&rs(0))
shin=i
if shin>shinlast then shinlast=shin
rs.movenext
loop
end if
'shinzeal加入更新被提升分类之下所有同级分类的orders,避免和被更新分类的下级分类重复
dim shin1,shinlast1
shin1=0
shinlast1=0
set rs=conn.execute("select catid,orders,child,ParentStr from cat where ParentID="&ParentID&" and orders>"&uporders&" order by orders")
do while not rs.eof
if rs(2)>0 then
ii=0
set trs=conn.execute("select catid,orders from cat where ParentStr like '%"&rs(3)&","&rs(0)&"%' order by orders")
if not (trs.eof and trs.bof) then
do while not trs.eof
ii=ii+1
'response.write "update cat set orders="&orders&"+"&ii&" where catid="&trs(0)&"-a<br>"
conn.execute("update cat set orders="&orders&"+"&ii&"+"&shinlast&" where catid="&trs(0))
shin1=orders+oldorders+ii+shinlast
if shin1>shinlast1 then shinlast1=shin1
trs.movenext
loop
end if
end if
'response.write "update cat set orders="&orders&" where catid="&rs(0)&"<br>"
conn.execute("update cat set orders="&orders&"+"&shinlast&" where catid="&rs(0))
shin1=orders+oldorders+shinlast
if shin1>shinlast1 then shinlast1=shin1
orders=rs(1)
rs.movenext
loop
'shinzeal加入更新被提升分类上一级的orders在被更新分类之后的分类orders,防止orders互相交叉
set rs=conn.execute("select catid,orders,child,ParentStr from cat where rootID="&rootID&" and orders>"&uporders&" and depth<"&depth&" order by orders")
do while not rs.eof
if rs(2)>0 then
ii=0
set trs=conn.execute("select catid,orders from cat where ParentStr like '%"&rs(3)&","&rs(0)&"%' order by orders")
if not (trs.eof and trs.bof) then
do while not trs.eof
ii=ii+1
'response.write "update cat set orders="&orders&"+"&ii&" where catid="&trs(0)&"-a<br>"
conn.execute("update cat set orders="&orders&"+"&ii&"+"&shinlast1&" where catid="&trs(0))
trs.movenext
loop
end if
end if
'response.write "update cat set orders="&orders&" where catid="&rs(0)&"<br>"
conn.execute("update cat set orders="&orders&"+"&shinlast1&" where catid="&rs(0))
orders=rs(1)
rs.movenext
loop
'shinzeal对提升分类的更新结束
set rs=nothing
set trs=nothing
elseif request("doorders")<>"" then
if not isnumeric(request("doorders")) then
response.write "非法的参数!"
exit sub
elseif Cint(request("doorders"))=0 then
response.write "请选择要下降的数字!"
exit sub
end if
'要移动的分类信息 shinzeal加入rootid和depth作为更新所有相关分类的依据
set rs=conn.execute("select ParentID,orders,ParentStr,child,rootid,depth from cat where catid="&request("editID"))
ParentID=rs(0)
orders=rs(1)
ParentStr=rs(2) & "," & request("editID")
child=rs(3)
rootid=rs(4)
depth=rs(5)
i=0
shin=0
shinlast=0
set rs=conn.execute("select catid,orders,child,ParentStr from cat where ParentID="&ParentID&" and orders>"&orders&" order by orders")
do while not rs.eof
i=i+1
if Cint(request("doorders"))>=i then
if rs(2)>0 then
ii=0
set trs=conn.execute("select catid,orders from cat where ParentStr like '%"&rs(3)&","&rs(0)&"%' order by orders")
if not (trs.eof and trs.bof) then
do while not trs.eof
ii=ii+1
'response.write "update cat set orders="&orders&"+"&ii&" where catid="&trs(0)&"-a<br>"
conn.execute("update cat set orders="&orders&"+"&ii&" where catid="&trs(0))
shin=orders+ii
if shin>shinlast then shinlast=shin
trs.movenext
loop
end if
end if
'response.write "update cat set orders="&orders&" where catid="&rs(0)&"<br>"
conn.execute("update cat set orders="&orders&" where catid="&rs(0))
shin=orders
if shin>shinlast then shinlast=shin
if Cint(request("doorders"))=i then doorders=rs(1)
end if
orders=rs(1)
rs.movenext
loop
conn.execute("update cat set orders="&shinlast+1&" where catid="&request("editID"))
'如果有下属分类,则更新其下属分类排序
if child>0 then
i=shinlast+1
set rs=conn.execute("select catid from cat where ParentStr like '%"&ParentStr&"%' and depth>"&depth&" order by orders")
do while not rs.eof
i=i+1
conn.execute("update cat set orders="&i&" where catid="&rs(0))
shin=i
if shin>shinlast then shinlast=shin
rs.movenext
loop
end if
'shinzeal加入更新被下降分类之下所有同级分类的orders,避免和被更新分类的下级分类重复
shin1=0
shinlast1=0
set rs=conn.execute("select catid,orders,child,ParentStr from cat where ParentID="&ParentID&" and orders>"&doorders&" order by orders")
do while not rs.eof
orders=rs(1)
if rs(2)>0 then
ii=0
set trs=conn.execute("select catid,orders from cat where ParentStr like '%"&rs(3)&","&rs(0)&"%' order by orders")
if not (trs.eof and trs.bof) then
do while not trs.eof
ii=ii+1
conn.execute("update cat set orders="&orders&"+"&ii&"+"&shinlast&" where catid="&trs(0))
shin1=orders+ii+shinlast
if shin1>shinlast1 then shinlast1=shin1
trs.movenext
loop
end if
end if
conn.execute("update cat set orders="&orders&"+"&shinlast&" where catid="&rs(0))
shin1=orders+shinlast
if shin1>shinlast1 then shinlast1=shin1
rs.movenext
loop
'shinzeal加入更新被下降分类上一级的orders在被更新分类之后的分类orders,防止orders互相交叉
set rs=conn.execute("select catid,orders,child,ParentStr from cat where rootID="&rootID&" and orders>"&doorders&" and depth<"&depth&" order by orders")
do while not rs.eof
orders=rs(1)
if rs(2)>0 then
ii=0
set trs=conn.execute("select catid,orders from cat where ParentStr like '%"&rs(3)&","&rs(0)&"%' order by orders")
if not (trs.eof and trs.bof) then
do while not trs.eof
ii=ii+1
'response.write "update cat set orders="&orders&"+"&ii&" where catid="&trs(0)&"-a<br>"
conn.execute("update cat set orders="&orders&"+"&ii&"+"&shinlast1&" where catid="&trs(0))
trs.movenext
loop
end if
end if
'response.write "update cat set orders="&orders&" where catid="&rs(0)&"<br>"
conn.execute("update cat set orders="&orders&"+"&shinlast1&" where catid="&rs(0))
rs.movenext
loop
'shinzeal对下降分类的更新结束
'response.end
set rs=nothing
set trs=nothing
end if
call cache_cat()
response.redirect "admin_cat.asp?action=catorders"
end sub
sub cache_cat()
'cache分类数据
myCache.name="catJumpList"
Dim catJumpList
set rs=conn.execute("select catid,catname,depth from cat order by rootid,orders")
do while not rs.EOF
catJumpList = catJumpList & "<option value=""list.asp?catid="&rs(0)&""" "
catJumpList = catJumpList & ">"
select case rs(2)
case 0
catJumpList = catJumpList & "╋"
case 1
catJumpList = catJumpList & " ├"
end select
if rs(2)>1 then
for i=2 to rs(2)
catJumpList = catJumpList & " │"
next
catJumpList = catJumpList & " ├"
end if
catJumpList = catJumpList & rs(1)&"</option>"
rs.MoveNext
loop
myCache.add catJumpList,dateadd("n",9999,now)
set rs=nothing
'end cache
end sub
sub Restorecat()
'按照目前的排序循环i数值更新rootid
'还原所有分类的depth,orders,parentid,parentstr,child为0
i=0
set rs=conn.execute("select catid from cat order by rootid,orders")
do while not rs.eof
i=i+1
conn.execute("update cat set rootid="&i&",depth=0,orders=0,ParentID=0,ParentStr='0',child=0 where catid="&rs(0))
rs.movenext
loop
set rs=nothing
response.write "复位成功,请返回做分类归属设置。"
call cache_cat()
end sub
'=========================================================
'Copyright (C) 2003-2004 AspEase.Com. All rights reserved.
'Web: http://www.aspease.com
'Email: byhucn@126.com,lzz9812@163.com
'=========================================================
'
'FileName: admin_cat.asp
'Version:2.0
'UpdateTime: 2004-10-7 14:54:09
'Script Written by www.aspease.com
'=========================================================%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -