无限分类添加新类别代码

    技术2022-05-11  66

    '无限分类添加新类别代码'OrderID所有栏目的排列顺序'RootOrderID同一顶栏目的排列顺序'ClassOrderID同一父类栏目的排列顺序

    if request("action")="AddSave" then

    ChannelID=cint(trim(Request.Form("ChannelID")))ParentClassID=trim(Request.Form("ParentID"))ClassName=trim(Request.Form("ClassName"))ClassFolderName=trim(Request.Form("ClassFolderName"))ClassMemo=trim(Request.Form("ClassMemo"))ClassKeyWords=trim(Request.Form("ClassKeyWords"))ClassDescription=trim(Request.Form("ClassDescription"))IsCreateFolder=trim(Request.Form("IsCreateFolder"))

    if ClassName="" Thenresponse.write("<script>alert('系统出错!请返回填写栏目类别名称');history.go(-1);</script>") response.End() end if

    if ClassFolderName="" Thenresponse.write("<script>alert('系统出错!请返回填写栏目类别目录文件夹');history.go(-1);</script>") response.End() end if

    if ClassMemo="" Thenresponse.write("<script>alert('系统出错!请返回填写栏目类别说明');history.go(-1);</script>") response.End() end if

    if ClassKeyWords="" Thenresponse.write("<script>alert('系统出错!请返回填写栏目类别搜索关键字');history.go(-1);</script>") response.End() end if

    if ClassDescription="" Thenresponse.write("<script>alert('系统出错!请返回填写栏目类别搜索描述词');history.go(-1);</script>") response.End() end if

    If IsValidWindowsFolderName(ClassFolderName)=False Then response.Write("<script language=javascript>alert('目录名格式不正确,按确定返回重新填写');history.back();</script>") response.End()end if

    ClassFolderName=Replace(PCase(ClassFolderName)," ","-")

    '网站频道项目 set rs=server.CreateObject("Adodb.recordset") sql="select * from SystemChannelList Where ChannelID="&ChannelID rs.open sql,conn,1,3 if rs.eof and rs.bof then rs.close set rs=nothing conn.close set conn=nothing response.write("<script>alert('无此频道数据,系统即将返回!');location.href='ClassList.asp';</script>") response.End()     else  ChannelName  =rs("ChannelName") ChannelFolderUrl=rs("ChannelFolderUrl") ChannelFolderPath=rs("ChannelFolderPath") end if  rs.close set rs=nothing  Session("ChannelID")=ChannelID Session("ClassName")=ClassName Session("ClassFolderName")=ClassFolderName Session("ClassMemo")=ClassMemo Session("ClassKeyWords")=ClassKeyWords Session("ClassDescription")=ClassDescription Session("IsCreateFolder")=IsCreateFolder

     if ParentClassID=0 then'添加顶类栏目'查询父类相关数据 ParentClassName=""  '父类名 ParentClassFolderName=""  '父类目录名 ParentClassDepth=0  '父类深度 newClassRootID=0   '顶类ID ParentClassIDPath=0  'ID路径

     '获取已存在的最大栏目ClassID  MaxClassID = conn.execute("select Max(ClassID) as List1 From SoftClass")("List1")  if isnull(MaxClassID) then  newRootOrderID=1  newClassOrderID=1  newOrderID=1  PrevID=0 else PrevID=MaxClassID  '获取同一父类栏目中的排列顺序 newClassOrderID=1  '获取同一顶类栏目中的排列顺序 newRootOrderID=1  '获取全部栏目的排列顺序 set rs1=conn.execute("select Count(*) From SoftClass") if isnull(rs1(0)) then newOrderID=1 else newOrderID=rs1(0)+1 end if set rs1=nothing  end if  ClassFolderPath=ClassFolderName ClassLocalPath=ChannelFolderPath&"/"&ClassFolderPath ClassFolderUrl=ChannelFolderUrl&"/"&Replace(ClassFolderPath,"/","/")else'添加子类栏目

    '分添加到一级栏目下和添加到N级栏目下两种情况

     '查询目标父类相关数据 set rsParent=server.CreateObject("Adodb.recordset") sqlParent="select * from SoftClass where ClassID="&ParentClassID rsParent.open sqlParent,conn,1,3 if rsParent.eof and rsParent.bof then response.write("<script>alert('未能查询到父类类别对应的数据!系统即将返回上一页');history.go(-1);</script>")  response.End() else  ParentClassID=rsParent("ClassID") ParentClassName=rsParent("ClassName")  '父类名 ParentClassFolderName=rsParent("ClassFolderName")  '父类目录名 ParentClassFolderPath=rsParent("ClassFolderPath")  '父类目录名 ParentClassFolderUrl=rsParent("ClassFolderUrl")  '父类访问路径 ParentClassDepth=rsParent("ClassDepth")  '父类深度 ParentClassIDPath=rsParent("ParentIDPath") Child=rsParent("Child")   if ParentClassDepth=0 then '如果目标父栏目是一级栏目     oldClassRootID=rsParent("RootID")   '原始RootID  newClassRootID=rsParent("ClassID")   '最新RootID    if Child>0 then '如果添加栏目到有子栏目的一级栏目下      '获取即将添加的栏目ClassID  MaxClassID = conn.execute("select Max(ClassID) as List1 From SoftClass where ParentID="&ParentClassID)("List1")    PrevID=MaxClassID    '获取同一父类的子栏目中的排列顺序  set rs1=conn.execute("select Max(ClassOrderID) From SoftClass where ParentID="&ParentClassID)  if isnull(rs1(0)) then  newClassOrderID=1  else  newClassOrderID=rs1(0)+1  end if  set rs1=nothing    '获取同一顶类的子栏目中的排列顺序  set rs1=conn.execute("select Max(RootOrderID) From SoftClass where ParentIDPath like '"&ParentClassIDPath&","&newClassRootID&",%'")  if isnull(rs1(0)) then  newRootOrderID=conn.execute("select RootOrderID,ClassID From SoftClass where ClassID="&MaxClassID)("RootOrderID")+1  else    newRootOrderID=rs1(0)+1  end if  set rs1=nothing    '获取全部栏目中的的排列顺序    set rs1=conn.execute("select Max(OrderID) From SoftClass where ParentIDPath like '"&ParentIDPath&","&MaxClassID&",%' and RootID>0")  if  isnull(rs1(0)) then  newOrderID=conn.execute("select OrderID,ClassID From SoftClass where ClassID="&MaxClassID&" and RootID>0")("OrderID")+1  else  newOrderID=rs1(0)+1  end if  set rs1=nothing

      '更新其他后面栏目RootID,ClassID对应的RootOrderID,ClassOrderID,OrderID  'RootOrderID,ClassOrderID也不需要动  conn.execute("update SoftClass set RootOrderID=RootOrderID+1 where RootOrderID>="&newRootOrderID)    conn.execute("update SoftClass set OrderID=OrderID+1 where OrderID>="&newOrderID)   else '如果目标栏目没有子栏目

      PrevID=0  newRootOrderID=2  newClassOrderID=1    '获取全部栏目中的的排列顺序  set rs1=conn.execute("select Max(OrderID) From SoftClass where ParentIDPath like '"&ParentIDPath&","&MaxClassID&",%' and RootID>0")  if  isnull(rs1(0)) then  newOrderID=2  else  newOrderID=rs1(0)+1  end if  set rs1=nothing

        '更新其他后面栏目RootID,ClassID对应的RootOrderID,ClassOrderID,OrderID  'RootOrderID,ClassOrderID也不需要动  conn.execute("update SoftClass set OrderID=OrderID+1 where OrderID>="&newOrderID)     end if   else   '如果目标父类是N级栏目ClassDepth>1级别  newClassRootID=rsParent("RootID")  oldClassRootID=rsParent("RootID")   '最新RootID  response.Write("<br>"&oldClassRootID)  topClassRootID=conn.execute("select RootID,ClassID From SoftClass where ClassID="&oldClassRootID)("RootID")   response.Write("<br>"&topClassRootID)    if Child>0 then '如果目标N级父栏目已存在子栏目    '获取即将添加的栏目ClassID  MaxClassID = conn.execute("select Max(ClassID) as List1 From SoftClass where ParentID="&ParentClassID)("List1")    PrevID=MaxClassID  '获取同一父类栏目中的排列顺序  set rs1=conn.execute("select Max(ClassOrderID) From SoftClass where ParentID="&ParentClassID)  newClassOrderID=rs1(0)+1  set rs1=nothing    '获取同一顶类的子栏目中的排列顺序    set rs1=conn.execute("select Max(RootOrderID) From SoftClass where ParentIDPath like '"&ParentIDPath&","&MaxClassID&",%'")    if isnull(rs1(0)) then  newRootOrderID=conn.execute("select RootOrderID,ClassID From SoftClass where ClassID="&MaxClassID)(0)+1  else  newRootOrderID=rs1(0)+1  end if    set rs1=nothing

      '获取全部栏目中的排列顺序    set rs1=conn.execute("select Max(OrderID) From SoftClass where ParentIDPath like '"&ParentIDPath&","&MaxClassID&",%'")    if isnull(rs1(0)) then  newOrderID=conn.execute("select OrderID,ClassID From SoftClass where ClassID="&MaxClassID)(0)+1  else  newOrderID=rs1(0)+2  end if    set rs1=nothing

      '更新其他后面栏目RootID,ClassID对应的RootOrderID,ClassOrderID,OrderID  'RootOrderID,ClassOrderID也不需要动  conn.execute("update SoftClass set RootOrderID=RootOrderID+1 where RootOrderID>="&newRootOrderID&" and RootID="&oldClassRootID)  conn.execute("update SoftClass set OrderID=OrderID+1 where OrderID>="&newOrderID)   else '如果目标N级父栏目不存在子栏目

      PrevID=0    '获取同一父类栏目中的排列顺序  newClassOrderID=1     '获取同一顶类栏目中的排列顺序  '如果前面有子栏目,且子栏目有别的子栏目  set rs1=conn.execute("select Max(RootOrderID) From SoftClass where ParentIDPath like '"&ParentClassIDPath&",%'")  if isnull(rs1(0)) then  newRootOrderID=conn.execute("select Max(RootOrderID) From SoftClass where ClassDepth="&ParentClassDepth&"")(0)+1  else  newRootOrderID=rs1(0)+1  end if    set rs1=nothing    response.Write("<br>"&newRootOrderID)  response.Write("<br>"&topClassRootID)  conn.execute("update SoftClass set RootOrderID=RootOrderID+1 where RootOrderID>="&newRootOrderID&" and RootID="&oldClassRootID)     '获取全部栏目中的排列顺序    newOrderID=conn.execute("select OrderID,ClassID From SoftClass where ClassID="&ParentClassID)("OrderID")+1      '更新其他后面栏目RootID,ClassID对应的RootOrderID,ClassOrderID,OrderID  'RootOrderID,ClassOrderID也不需要动  conn.execute("update SoftClass set OrderID=OrderID+1 where OrderID>="&newOrderID)  'conn.execute("update SoftClass set OrderID=OrderID+1 where RootID>"&topClassRootID&" and ParentID=0")  'conn.execute("update SoftClass set OrderID=OrderID+1 where RootID>"&oldClassRootID&" and ParentID>0")  end if   end if  end if  rsParent.close set rsParent=nothing

    '根据父类数据得到当前路径相关参数 ClassFolderPath=ParentClassFolderPath&"/"&ClassFolderName ClassLocalPath=ChannelFolderPath&"/"&ClassFolderPath ClassFolderUrl=ChannelFolderUrl&"/"&Replace(ClassFolderPath,"/","/") end if

    '创建对应的类别目录if IsCreateFolder=1 thenCreateFolder ClassLocalPath,IsCreateFolderend if

    'response.Write("<br>"&newOrderID)'response.Write("<br>"&newRootOrderID)'response.Write("<br>"&newClassOrderID)    '添加新数据并修改相关字段数值    UserIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")  If UserIP = "" Then UserIP = Request.ServerVariables("REMOTE_ADDR")    UserFrom=Cstr(Request.ServerVariables("HTTP_REFERER"))   CorrectSqlClassFolderName=replace(ClassFolderName,"'","''") CorrectSqlClassName=replace(ClassName,"'","''")     set rs=server.CreateObject("Adodb.recordset") sql="select * from SoftClass where ClassFolderName='"&CorrectSqlClassFolderName&"' and  ClassName='"&CorrectSqlClassName&"' and ParentID="&ParentClassID rs.open sql,conn,3,3 if not rs.eof and not rs.bof then rs.close set rs=nothing conn.close set conn=nothing response.write("<script>alert('此栏目类别数据已经存在!系统即将返回');history.go(-1);</script>")  response.end else  rs.addnew   rs("ChannelID")=ChannelID rs("ChannelName")=ChannelName rs("ChannelFolderPath")=ChannelFolderPath rs("ChannelFolderUrl")=ChannelFolderUrl  if ParentClassID=0 then '一级目录的深度为0  rs("ParentName")="" rs("ParentID")=0 rs("ClassDepth")=0 rs("ParentIDPath")="0"  else rs("ParentName")=ParentClassName rs("ParentID")=ParentClassID    rs("ClassDepth")=Cint(ParentClassDepth)+1 rs("ParentIDPath")=ParentClassIDPath&","&ParentClassID end if rs("OrderID")=newOrderID rs("RootOrderID")=newRootOrderID rs("ClassOrderID")=newClassOrderID rs("RootID")=newClassRootID rs("PrevID")=PrevID   rs("ClassName")=ClassName  rs("ClassFolderName")=ClassFolderName rs("ClassFolderPath")=ClassFolderPath  rs("ClassLocalPath")=ClassLocalPath    rs("ClassMemo")=ClassMemo rs("ClassKeyWords")=ClassKeyWords rs("ClassDescription")=ClassDescription rs("IsCreateFolder")=IsCreateFolder

       rs("AddUser")=Session("ManagerUserName") rs("AddTime")=now() rs("AddIP")=UserIP rs("AddFrom")=UserFrom rs.update   end if rs.close set rs=nothing newClassID=conn.execute("Select ClassID,OrderID from SoftClass where OrderID="&newOrderID)("ClassID") '更新同一父栏目的上一个栏目的“NextID”字段值 if PrevID>0 then  conn.execute("update SoftClass set NextID=" & newClassID & " where ClassID=" & PrevID) end if  if ParentClassID>0 then    '更新父栏目中的子栏目数量  Child=conn.execute("Select Count(*) as List1 from SoftClass where ParentID="&ParentClassID)("List1")  conn.execute("Update SoftClass Set Child="&Child&" where ClassID="&ParentClassID) end if   conn.close set conn=nothing response.write("<script>alert('栏目类别"&ClassName&"添加完成!系统即将返回列表');location.href='ClassList.asp';</script>")  response.End()end if 


    最新回复(0)