⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 admin_board.asp

📁 品泡女人香XI8.NET文章管理系统的源码
💻 ASP
📖 第 1 页 / 共 5 页
字号:
<%
	Dim Trs, Uporders, Doorders
	Set Rs = Server.CreateObject ("Adodb.recordset")
	Sql = "SELECT Depth, Child, Parentid, Boardtype, Orders, BoardId FROM Dv_Board ORDER BY RootID, Orders"
	Set Rs = Dvbbs.Execute(Sql)
	If Rs.Eof And Rs.Bof Then
		Response.Write "还没有相应的论坛分类。"
	Else
		Sql = Rs.GetRows(-1)
		Dim Bn
		Rs.Close:Set Rs = Nothing
		For Bn = 0 To Ubound(Sql,2)
			Response.Write "<form action=admin_board.asp?action=updatboardorders method=post><tr><td width=""50%"">"
			If Sql(0,Bn) > 0 Then
				For i = 1 To Sql(0,Bn)
					Response.Write "&nbsp;"
				Next
			End If
			If Sql(1,Bn) > 0 Then
				Response.Write "<img src=skins/default/plus.gif>"
			Else
				Response.Write "<img src=skins/default/nofollow.gif>"
			End If
			If Sql(2,Bn) = 0 Then
				Response.Write "<b>"
			End If
			Response.Write Sql(3,Bn)
			If Sql(1,Bn) > 0 Then
				Response.Write "(" & Sql(1,Bn) & ")"
			End If
			Response.Write "</td><td width=""50%"">"
			If Sql(2,Bn) > 0 Then
				'算出相同深度的版面数目,得到该版面在相同深度的版面中所处位置(之上或者之下的版面数)
				'所能提升最大幅度应为For i=1 to 该版之上的版面数
				Set Trs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board WHERE ParentID = " & Sql(2,Bn) & " AND ORDERS < " & Sql(4,Bn) &"")
				Uporders = Trs(0)
				If Isnull(Uporders) Then Uporders = 0
				'所能降低最大幅度应为For i=1 to 该版之下的版面数
				Set Trs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board WHERE ParentID = " & Sql(2,Bn) &" AND ORDERS > " & Sql(4,Bn) &"")
				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 "&nbsp;"
					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=""" & Sql(5,Bn) & """>&nbsp;<input type=submit name=Submit value=修改>"
				End If
			End If
			Response.Write "</td></tr></form>"
			Uporders = 0
			Doorders = 0
		Next
		Response.Write "</table>"
	End If
%>
	</td>
	</tr>
</table>
<%
End Sub

Sub Updateboardorders()
	Dim ParentID, Orders, ParentStr, Child
	Dim Uporders, Doorders, Oldorders, Trs, ii
	Dim Bn
	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 = Dvbbs.Execute("SELECT ParentID, Orders, ParentStr, Child, Rootid, Depth FROM Dv_Board WHERE Boardid = " & Request("EditID"))
		ParentID = Rs(0)
		Orders = Rs(1)
		ParentStr = Rs(2) & "," & Request("EditID")
		Child = Rs(3)
		Rootid = Rs(4)
		Depth = Rs(5)
		i = 0
		Set Rs = Nothing
		If Child > 0 Then
			Set Rs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board 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 = Nothing
		Set Rs = Dvbbs.Execute("SELECT Boardid, Orders, Child, ParentStr FROM Dv_Board WHERE ParentID = " & ParentID & " AND Orders < " & Orders & " ORDER BY Orders DESC")
		If Not(Rs.Eof And Rs.Bof) Then
			Sql = Rs.GetRows(-1)
			Rs.Close:Set Rs = Nothing
			For Bn = 0 To Ubound(Sql,2)
				i = i + 1
				If Cint(Request("Uporders")) >= i Then
					'response.write "UPDATE Dv_Board SET Orders = " & orders & " WHERE Boardid = " & Sql(0,Bn) & "<br>"
					If Sql(2,Bn) > 0 Then
						ii = 0
						Set Trs = Dvbbs.Execute("SELECT Boardid, Orders FROM Dv_Board WHERE ParentStr like '%" & Sql(3,Bn) & "," & Sql(0,Bn) & "%' ORDER BY Orders")
						If Not (Trs.Eof And Trs.Bof) Then
							Do While Not Trs.Eof
								ii = ii + 1
								Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & Oldorders & " + " & ii & " WHERE Boardid = " & Trs(0))
								Shin = Orders + Oldorders + ii
								If Shin > Shinlast Then Shinlast = Shin
								Trs.Movenext
							Loop
							Trs.Close:Set Trs = Nothing
						End If
					End If
					Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & Oldorders & " WHERE Boardid = " & Sql(0,Bn))
					Shin = Orders + Oldorders
					If Shin > Shinlast Then Shinlast = Shin
					If Cint(Request("Uporders")) = i Then Uporders = Sql(1,Bn)
				End If
				Orders = Sql(1,Bn)
			Next
		End If
		'response.write "update dv_board set orders="&uporders&" where boardid="&request("editID")
		'更新所要排序的论坛的序号
		Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Uporders & " WHERE Boardid = " & Request("EditID"))
		'如果有下属论坛,则更新其下属论坛排序
		If Child > 0 Then
			i = Uporders
			Set Rs = Dvbbs.Execute("SELECT Boardid FROM Dv_Board WHERE ParentStr Like '%" & ParentStr & "%' AND Depth > " & Depth & " ORDER BY ORDERS")
			If Not(Rs.Eof And Rs.Bof) Then
				Sql = Rs.GetRows(-1)
				Rs.Close:Set Rs = Nothing
				For Bn = 0 To Ubound(Sql,2)
					i = i + 1
					Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & i & " WHERE Boardid = " & Sql(0,Bn))
					Shin = i
					If Shin > Shinlast Then Shinlast = Shin
				Next
			End If
		End If
		'shinzeal加入更新被提升论坛之下所有同级论坛的orders,避免和被更新论坛的下级论坛重复
		Dim Shin1, Shinlast1
		Shin1 = 0
		Shinlast1 = 0
		Set Rs = Dvbbs.Execute("SELECT Boardid, Orders, Child, ParentStr FROM Dv_Board WHERE ParentID = " & ParentID & " AND Orders > " & Uporders & " ORDER BY Orders")
		If Not(Rs.Eof And Rs.Bof) Then
			Sql = Rs.GetRows(-1)
			Rs.Close:Set Rs = Nothing
			For Bn = 0 To Ubound(Sql,2)
				If Sql(2,Bn) > 0 Then
					ii = 0
					Set Trs = Dvbbs.Execute("SELECT Boardid, Orders FROM Dv_Board WHERE ParentStr LIKE '%" & Sql(3,Bn) & ", " & Sql(0,Bn) & "%' ORDER By Orders")
					If Not (Trs.Eof And Trs.Bof) Then
						Do While Not Trs.Eof
							ii = ii + 1
							'response.write "update dv_board set orders="&orders&"+"&ii&" where boardid="&trs(0)&"-a<br>"
							Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & ii & " + " & Shinlast & " WHERE Boardid = " & Trs(0))
							Shin1 = Orders + Oldorders + ii + Shinlast
							If Shin1 > Shinlast1 Then Shinlast1 = Shin1
							Trs.Movenext
						Loop
						Trs.Close:Set Trs = Nothing
					End If
				End If
				'response.write "update dv_board set orders="&orders&" where boardid="&rs(0)&"<br>"
				Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & Shinlast & " WHERE Boardid = " & Sql(0,Bn))
				Shin1 = Orders + Oldorders + Shinlast
				If Shin1 > Shinlast1 Then Shinlast1 = Shin1
				Orders = Sql(1,Bn)
			Next
		End If
		'shinzeal加入更新被提升论坛上一级的orders在被更新论坛之后的论坛orders,防止orders互相交叉
		Set Rs = Dvbbs.Execute("SELECT Boardid, Orders, Child, ParentStr FROM Dv_Board WHERE RootID = " & RootID & " AND Orders> " & Uporders & " AND Depth < " & Depth & " ORDER BY Orders")
		If Not (Rs.Eof And Rs.Bof) Then
			Sql = Rs.GetRows(-1)
			Rs.Close:Set Rs = Nothing
			For Bn = 0 To Ubound(Sql,2)
				If Sql(2,Bn) > 0 Then
					ii = 0
					Set Trs = Dvbbs.Execute("SELECT Boardid, Orders FROM Dv_Board WHERE ParentStr LIKE '%" & Sql(3,Bn) & ", " & Sql(0,Bn) & "%' ORDER BY Orders")
					If Not (Trs.Eof And Trs.Bof) Then
						Do While Not Trs.Eof
							ii = ii + 1
							'response.write "update dv_board set orders="&orders&"+"&ii&" where boardid="&trs(0)&"-a<br>"
							Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & ii & " + " & Shinlast1 & " WHERE Boardid = " & Trs(0))
							Trs.Movenext
						Loop
						Trs.Close:Set Trs = Nothing
					End If
				End If
				'response.write "update dv_board set orders="&orders&" where boardid=" & Sql(0,Bn) & "<br>"
				Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & Shinlast1 & " WHERE Boardid = " & Sql(0,Bn))
				Orders = Sql(1,Bn)
			Next
		End If
		'shinzeal对提升论坛的更新结束
	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 = Dvbbs.Execute("SELECT ParentID, Orders, ParentStr, Child, Rootid, Depth FROM Dv_Board WHERE Boardid = " & 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 = Nothing
		Set Rs = Dvbbs.Execute("SELECT Boardid, Orders, Child, ParentStr FROM Dv_Board WHERE ParentID = " & ParentID & " AND Orders > " & Orders & " ORDER BY Orders")
		If Not (Rs.Eof And Rs.Bof) Then
			Sql = Rs.GetRows(-1)
			Rs.Close:Set Rs = Nothing
			For Bn = 0 To Ubound(Sql,2)
				i = i + 1
				If Cint(Request("Doorders")) >= i Then
					If Sql(2,Bn) > 0 Then
						ii = 0
						Set Trs = Dvbbs.Execute("SELECT Boardid, Orders FROM Dv_Board WHERE ParentStr LIKE '%" & Sql(3,Bn) & " , " & Sql(0,Bn) & "%' ORDER BY Orders")
						If Not (Trs.Eof And Trs.Bof) Then
							Do While Not Trs.Eof
								ii = ii + 1
								'response.write "update dv_board set orders="&orders&"+"&ii&" where boardid="&trs(0)&"-a<br>"
								Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & ii & " WHERE Boardid = " & Trs(0))
								Shin = Orders + ii
								If Shin > Shinlast Then Shinlast = Shin
								Trs.Movenext
							Loop
							Trs.Close:Set Trs = Nothing
						End If
					End If
					'response.write "update dv_board set orders="&orders&" where boardid=" & Sql(0,Bn) & "<br>"
					Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " WHERE Boardid = " & Sql(0,Bn))
					Shin = Orders
					If Shin > Shinlast Then Shinlast = Shin
					If Cint(Request("doorders")) = i Then Doorders = Sql(1,Bn)
				End If
				Orders = Sql(1,Bn)
			Next
		End If
		'response.write "update dv_board set orders="&doorders&" where boardid="&request("editID")&"<br>"
		Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Shinlast + 1 & " WHERE Boardid = " & Request("EditID"))
		'如果有下属论坛,则更新其下属论坛排序
		If Child > 0 Then
			i = Shinlast + 1
			Set Rs = Dvbbs.Execute("SELECT Boardid FROM Dv_Board WHERE ParentStr LIKE '%" & ParentStr & "%' AND Depth > " & Depth & " ORDER BY Orders")
			If Not (Rs.Eof And Rs.Bof) Then
				Sql = Rs.GetRows(-1)
				Rs.Close:Set Rs = Nothing
				For Bn = 0 To Ubound(Sql,2)
					i = i + 1
					'response.write "update dv_board set orders="&i&" where boardid=" & Sql(0,Bn) & "-b<br>"
					Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & i & " WHERE Boardid = " & Sql(0,Bn))
					shin = i
					If Shin > Shinlast Then Shinlast = Shin
				Next
			End If
		End If
		'shinzeal加入更新被下降论坛之下所有同级论坛的orders,避免和被更新论坛的下级论坛重复
		Shin1 = 0
		Shinlast1 = 0
		Set Rs = Dvbbs.Execute("SELECT Boardid, Orders, Child, ParentStr FROM Dv_Board WHERE ParentID = " & ParentID & " AND Orders > " & Doorders & " ORDER BY Orders")
		If Not (Rs.Eof And Rs.Bof) Then
			Sql = Rs.GetRows(-1)
			Rs.Close:Set Rs = Nothing
			For Bn = 0 To Ubound(Sql,2)
				Orders = Sql(1,Bn)
				If Sql(2,Bn) > 0 Then
					ii = 0
					Set Trs = Dvbbs.Execute("SELECT Boardid, Orders FROM Dv_board WHERE ParentStr LIKE '%" & Sql(3,Bn) & "," & Sql(0,Bn) & "%' ORDER BY Orders")
					If Not (Trs.Eof And Trs.Bof) Then
						Do While Not Trs.Eof
							ii = ii + 1
							'response.write "update dv_board set orders="&orders&"+"&ii&" where boardid="&trs(0)&"-a<br>"
							Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & ii & " + " & Shinlast & " WHERE Boardid = " & Trs(0))
							Shin1 = Orders + ii + Shinlast
							If Shin1 > Shinlast1 Then Shinlast1 = Shin1
							Trs.Movenext
						Loop
						Trs.Close:Set Trs = Nothing
					End If
				End If
				'response.write "update dv_board set orders="&orders&" where boardid=" & Sql(0,Bn) & "<br>"
				Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & Shinlast & " WHERE Boardid = " & Sql(0,Bn))
				Shin1 = Orders + Shinlast
				If Shin1 > Shinlast1 Then Shinlast1 = Shin1
			Next
		End If
		'shinzeal加入更新被下降论坛上一级的orders在被更新论坛之后的论坛orders,防止orders互相交叉
		Set Rs = Dvbbs.Execute("SELECT BoardId, Orders, Child, ParentStr FROM Dv_Board WHERE RootID = " & RootID & " AND Orders > " & Doorders & " AND Depth < " & Depth & " ORDER BY Orders")
		If Not (Rs.Eof And Rs.Bof) Then
			Sql = Rs.GetRows(-1)
			Rs.Close:Set Rs = Nothing
			For Bn = 0 To Ubound(Sql,2)
				Orders = Sql(1,Bn)
				If Sql(2,Bn) > 0 Then
					ii = 0
					Set Trs = Dvbbs.Execute("SELECT Boardid, Orders FROM Dv_Board WHERE ParentStr LIKE '%" & Sql(3,Bn) & "," & Sql(0,Bn) & "%' Order BY Orders")
					If Not (Trs.Eof And Trs.Bof) Then
						Do While Not Trs.Eof
							ii = ii + 1
							'response.write "update dv_board set orders="&orders&"+"&ii&" where boardid="&trs(0)&"-a<br>"
							Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & ii & " + " & Shinlast1 & " WHERE Boardid = " & Trs(0))
							Trs.Movenext
						Loop
						Trs.Close:Set Trs = Nothing
					End If
				End If
				'response.write "update dv_board set orders="&orders&" where boardid=" & Sql(0,Bn) & "<br>"
				Dvbbs.Execute("UPDATE Dv_Board SET Orders = " & Orders & " + " & Shinlast1 & " WHERE Boardid = " & Sql(0,Bn))
			Next
		End If
		'shinzeal对下降论

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -