📄 admin_board.asp
字号:
<%
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 " "
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 " "
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) & """> <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 + -