www.gusucode.com > ASP+ACCESS学生论坛设计与实现(源代码+论文+开题报告) > ASP+ACCESS学生论坛设计与实现(源代码+论文+开题报告)\13学生论坛ASPAC\BBS\admin_boardunite.asp
<!--#include file="conn.asp"--> <!-- #include file="inc/const.asp" --> <!-- #include file="inc/DvADChar.asp" --> <% Head() dim Str dim admin_flag admin_flag=",11," if not Mybbs.master or instr(","&session("flag")&",",admin_flag)=0 then Errmsg=ErrMsg + "<BR><li>本页面为管理员专用,请<a href=admin_index.asp target=_top>登录</a>后进入。<br><li>您没有管理本页面的权限。" dvbbs_error() else if Request("action") = "unite" then call unite() else call boardinfo() end if Footer() end if sub boardinfo() %> <table width="95%" border="0" cellspacing="1" cellpadding="3" align=center class="tableBorder"> <tr> <th height=25>合并论坛数据 </th> </tr> <form action=admin_boardunite.asp?action=unite method=post> <tr> <td class=forumrow> <B>合并论坛选项</B>:<BR> <B>将本论坛及其下属版面的帖子都转移至目标论坛,并删除本论坛及其下属版面</B><BR><BR> <% set rs = server.CreateObject ("Adodb.recordset") sql="select boardid,boardtype,depth from dv_board order by rootid,orders" rs.open sql,conn,1,1 if rs.eof and rs.bof then response.write "没有论坛" else response.write " 将论坛 " response.write "<select name=oldboard size=1>" do while not rs.eof %> <option value="<%=rs("boardid")%>"><%if rs("depth")>0 then%> <%for i=1 to rs("depth")%> - <%next%> <%end if%><%=rs("boardtype")%></option> <% rs.movenext loop response.write "</select>" end if rs.close sql="select boardid,boardtype,depth from dv_board order by rootid,orders" rs.open sql,conn,1,1 if rs.eof and rs.bof then response.write "没有论坛" else response.write " 合并到 " response.write "<select name=newboard size=1>" do while not rs.eof %> <option value="<%=rs("boardid")%>"><%if rs("depth")>0 then%> <%for i=1 to rs("depth")%> - <%next%> <%end if%><%=rs("boardtype")%></option> <% rs.movenext loop response.write "</select>" end if rs.close set rs=nothing response.write " <BR><BR><input type=submit name=Submit value=合并论坛><BR><BR>" %> </td> </tr> <tr> <td class=forumrow><B>注意事项</B>:<BR><FONT COLOR="red">所有操作不可逆,请慎重操作</FONT><BR> 不能在同一个版面内进行操作、不能将一个版面合并到其下属论坛中。<BR>合并后您所指定的论坛(或者包括其下属论坛)将被删除,所有帖子将转移到您所指定的目标论坛中 </td> </tr></form> </table> <% end sub sub unite() dim newboard dim oldboard dim ParentStr,iParentStr dim depth,iParentID,child Dim ParentID,RootID if clng(request("newboard"))=clng(request("oldboard")) then response.write "请不要在相同版面内进行操作。" exit sub end if newboard=clng(request("newboard")) oldboard=clng(request("oldboard")) '将本论坛及其下属版面的帖子都转移至目标论坛,并删除本论坛及其下属版面 '得到当前版面下属论坛 set rs=Mybbs.Execute("select ParentStr,Boardid,depth,ParentID,child,RootID from dv_board where boardid="&oldboard) if rs(0)="0" then ParentStr=rs(1) iParentID=rs(1) ParentID=0 else ParentStr=rs(0) & "," & Rs(1) iParentID=rs(3) ParentID=rs(3) end if iParentStr=rs(1) depth=rs(2) child=rs(4)+1 RootID=rs(5) i=0 If ParentID=0 Then set rs=Mybbs.Execute("select Boardid from dv_board where boardid="&newboard&" and RootID="&RootID) Else set rs=Mybbs.Execute("select Boardid from dv_board where boardid="&newboard&" and ParentStr like '%"&ParentStr&"%'") End If if not (rs.eof and rs.bof) then response.write "不能将一个版面合并到其下属论坛中" exit sub end if '得到当前版面下属论坛ID i=0 set rs=Mybbs.Execute("select Boardid from dv_board where RootID="&RootID&" And ParentStr like '%"&ParentStr&"%'") if not (rs.eof and rs.bof) then do while not rs.eof if i=0 then iParentStr=rs(0) else iParentStr=iParentStr & "," & rs(0) end if i=i+1 rs.movenext loop end if if i>0 then ParentStr=iParentStr & "," & oldboard else ParentStr=oldboard end if '更新其原来所属论坛版面数 if depth>0 then Mybbs.Execute("update dv_board set child=child-"&child&" where boardid="&iparentid) '更新其原来所属论坛数据,排序相当于剪枝而不需考虑 for i=1 to depth '得到其父类的父类的版面ID set rs=Mybbs.Execute("select parentid from dv_board where boardid="&iparentid) if not (rs.eof and rs.bof) then iparentid=rs(0) Mybbs.Execute("update dv_board set child=child-"&child&" where boardid="&iparentid) end if next end if '更新论坛帖子数据 For i=0 to ubound(AllPostTable) Mybbs.Execute("update "&AllPostTable(i)&" set boardid="&newboard&" where boardid in ("&ParentStr&")") '更新回收站部分内容 Mybbs.Execute("Update "&AllPostTable(i)&" Set LockTopic="&newboard&" Where BoardID=444 And LockTopic In ("&ParentStr&")") Next Mybbs.Execute("update dv_topic set boardid="&newboard&" where boardid in ("&ParentStr&")") Mybbs.Execute("update dv_besttopic set boardid="&newboard&" where boardid in ("&ParentStr&")") '更新回收站部分内容 Mybbs.Execute("Update Dv_Topic Set LockTopic="&newboard&" Where BoardID=444 And LockTopic In ("&ParentStr&")") 'shinzeal加入更新上传文件数据 Mybbs.Execute("update DV_Upfile set F_boardid="&newboard&" where F_boardid in ("&ParentStr&")") '删除被合并论坛 set rs=Mybbs.Execute("select sum(postnum),sum(topicnum),sum(todayNum) from dv_board where RootID="&RootID&" And boardid in ("&ParentStr&")") Mybbs.Execute("delete from dv_board where RootID="&RootID&" And boardid in ("&ParentStr&")") '更新新论坛帖子计数 dim trs set trs=Mybbs.Execute("select ParentStr,boardid from dv_board where boardid="&newboard) if trs(0)="0" then ParentStr=trs(1) else ParentStr=trs(0) end if Mybbs.Execute("update dv_board set postnum=postnum+"&rs(0)&",topicnum=topicnum+"&rs(1)&",todaynum=todaynum+"&rs(2)&" where boardid in ("&ParentStr&")") response.write "合并成功,已经将被合并论坛所有数据转入您所合并论坛。" set rs=nothing set trs=nothing Mybbs.ReloadAllBoardInfo() Mybbs.Name="setup" Mybbs.ReloadSetup Mybbs.CacheData=Mybbs.value Dim Forum_Boards Forum_Boards=Split(Mybbs.CacheData(27,0),",") For i=0 To Ubound(Forum_Boards) Mybbs.ReloadBoardInfo(Forum_Boards(i)) Next end sub %>