一次过删除多个ID方法

dean8828 2010-12-01 03:42:41
选中的
<input name="AnnID" type="checkbox" onClick="unselectall()" id="AnnID" value="<%=Rs("D_ID")%>">




数据库的
<%
Sub DelAnnounce(AnnID)
if AnnID="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>参数不足</li>"
exit sub
end if
Set Rs = Server.CreateObject( "ADODB.Recordset" )
sSql="Select D_ID From OnlineInquiry Where D_ID In ("&AnnID&")"
Rs.Open sSql,oConn,1,1
If Rs.Eof Then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>无此信息!</li>"
exit sub
End If
Rs.Close

Set Rs = Server.CreateObject( "ADODB.Recordset" )
sSql = "DELETE FROM OnlineInquiry WHERE D_ID In ("&AnnID&")"
oConn.Execute sSql

Response.Write "<p align=center style='font-size:12px' >信息删除成功,1秒后自动返回信息管理页!<script>window.setTimeout(""location.href='OnlineInquiry.asp'"",1000);</script></p>"
response.End()
End Sub
%>


删除的
<input type="submit" name="Submit1" value=" 删 除 " onClick="document.myform.Action.value='Del'" class="input_submit">




我测试了下,我单个可以删除,现在我想要,例如有3条信息,我想选中3条信息然后按一下删除就全解决了,但是不行,该怎么改
...全文
629 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
dean8828 2010-12-03
  • 打赏
  • 举报
回复
已经解决,谢谢各位
刹那坤 2010-12-03
  • 打赏
  • 举报
回复

全选代码如下:
function allSelect() {
for ( var i = 0; i < document.formDel.elements.length; i++) {
if (document.formDel.elements[i].type =="checkbox") {
document.formDel.elements[i].checked = true;
}
}
}

页面功能:
<input type='submit' value='删除' name='SelectName' id='SelectName'  class='textfield' onClick='javascript:return confirm(""您真的要删除?"");'>

数据库操作:
	
SelectID=request("SelectID")
SelectName=request("SelectName")
If SelectName="删除" Then
if SelectID<>"" then conn.execute "delete from ho where id in ("&SelectID&")"
response.redirect request.servervariables("http_referer")
dean8828 2010-12-02
  • 打赏
  • 举报
回复
给个例子好不
meimeihao98 2010-12-02
  • 打赏
  • 举报
回复
比较简单 数组+ 循环 就可以了
dean8828 2010-12-02
  • 打赏
  • 举报
回复
不行

回复内容 回复内容太短了!
flyerwing 2010-12-02
  • 打赏
  • 举报
回复
where id in(2,3,4,.....)
这样不成吗?
dean8828 2010-12-02
  • 打赏
  • 举报
回复
<%	end if
response.End()
end if

End Sub
%>






<table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="43%" style="font-size:12px;">您现在的位置:
<%

If OredClass = "1" Then
Response.Write " 已经处理"
ElseIf OredClass = "0" Then
Response.Write " 未处理"
ElseIf OredClass = "2" or OredClass = "" then
Response.Write "查看全部"
End If
%>
</td>
<td align="right" style="font-size:12px;"><div align="right">
<select name='JumpClass' id="JumpClass" onchange="if(this.options[this.selectedIndex].value!=''){location='OnlineInquiry.asp?M_ID=<%=M_ID%>&OredClass='+this.options[this.selectedIndex].value;}">
<option value="2">-查看处理状态-</option>
<option value='1'>已经处理</option>
<option value='0'>未处理</option>

</select>
</div></td>
</tr>
<tr>
<td colspan="2"><img src="images/zw000.gif" width="1" height="8"></td>
</tr>
</table>


<table width="96%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#DEDFDE" style="font-size:12px">
<form name="myform" method="post" action="OnlineInquiry.asp?Action=DelAnnounce" onsubmit="return ConfirmDel();"><tr>
<td width="45" align="center" bgcolor="#F7F7F7"><strong>选中</strong></td>
<td align="center" bgcolor="#F7F7F7"><strong>订单编号</strong></td>
<td align="center" bgcolor="#F7F7F7"><strong>邮箱</strong></td>
<td align="center" bgcolor="#F7F7F7"><strong>处理情况</strong></td>
<td width="63" align="center" bgcolor="#F7F7F7"><strong>删除</strong></td>
</tr>

<%



IF OredClass = "" or CLng(OredClass) = 2 Then
sSql="Select * From OnlineInquiry Order By D_ID desc"
Else
sSql="Select * From OnlineInquiry Where D_By = "& OredClass &" Order By D_ID desc"
End IF


FileName=FileName&"?OredClass="& OredClass &"&"
Session("FileName")=FileName


Set Rs = Server.CreateObject( "ADODB.Recordset" )
Rs.Open sSql,oConn,1,1
If Rs.Eof Then
Response.Write "<tr><td colspan='7' bgcolor='#FFFFFF'><div align='center'>暂无信息!</div></td></tr></form></table>"
Else

const MaxPerPage=15 '单独页最大记录数 const 用来申明常量
dim totalPut '总记录
dim CurrentPage '当前页次
dim TotalPages '总页数
dim i



'!-- 分页功能代码块,可独立使用
if not Rs.eof then
Rs.MoveFirst '注意放到前面来,否则到任何页总是在第一个记录上
end if
Rs.pagesize=MaxPerPage '设置每页最多显示多少条记录
If trim(Request("Page"))<>"" then '如果请求的页次不为空
CurrentPage= CLng(request("Page")) 'clng是转换成长整型数据类型,并赋值到当前页次上
If CurrentPage> Rs.PageCount then '如果当前页次大于总页数,则将最大页次赋值到当前页次上
CurrentPage = Rs.PageCount
End If
Else
CurrentPage= 1 '一切条件不成立,将当前页设为第一页
End If

totalPut=Rs.recordcount '将总记录赋值于TOTALPUT
if CurrentPage<>1 then '如果当前页数不等于第一页
if (currentPage-1)*MaxPerPage<totalPut then '如果当前页减一乘以每页最大的记录数小于总记录的话
Rs.move(currentPage-1)*MaxPerPage '相对当前记录数向后移动
dim bookmark '定义书签变量
bookmark=Rs.bookmark '将当前记录的标签赋于变量BOOKMARK上
end if
end if

dim n,k
if (totalPut mod MaxPerPage)=0 then '总记录数与每页最大记录数求余的结果为零时,则N返回整数页次,否则再加一.
n= totalPut \ MaxPerPage
else
n= totalPut \ MaxPerPage + 1
end if

Do While Not Rs.Eof and i<maxperpage
%>
<tr>
<td width="45" align="center" bgcolor="#FFFFFF">

<input name="AnnID" type="checkbox" onClick="unselectall()" value="<%=Rs("D_ID")%>">



</td>
<td align="center" bgcolor="#FFFFFF">
<a href="OnlineInquiry.asp?D_ID=<%=Rs("D_ID")%>"><%=Rs("D_No")%></a>
</td>
<td align="center" bgcolor="#FFFFFF"><%=Rs("D_Mailbox")%></td>
<td align="center" bgcolor="#FFFFFF">
<%IF Rs("D_By") = 0 Then%>
[<a href="update_OnlineInquiry.asp?Action=isorder&D_ID=<%=Rs("D_ID")%>&OredClass=<%=OredClass%>">未处理</a>]
<% Else %>
[<a href="update_OnlineInquiry.asp?Action=noorder&D_ID=<%=Rs("D_ID")%>&OredClass=<%=OredClass%>"><font color="#FF0000">已处理</font></a>]
<% End IF%>

</td>
<td align="center" bgcolor="#FFFFFF"><div align="center">[<span onClick='return ConfirmDel()'><a href="?AnnID=<%=Rs("D_ID")%>">删除</a></span>]</div></td>
</tr>

<%
Rs.MoveNext
i=i+1
Loop
%>

<tr>
<td colspan="5" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="0" style="font-size:12px" >
<tr>
<td width="40"><div align="center">
<input name="chkAll" type="checkbox" id="chkAll" onclick=CheckAll(this.form) value="checkbox">
</div></td>
<td>选中本页显示的所有订单</td>
<td><div align="right">
<input name="Action" type="hidden" id="Action2" value="Del">
<input type="submit" name="Submit1" value=" 删 除 " onClick="document.myform.Action.value='Del'" class="input_submit">
   </div></td>
</tr>
</table></td>
</tr></form>
</table>

<table width="96%" border="0" align="center" cellpadding="0" cellspacing="0" style="font-size:12px">
<tr>
<td height="30"><div align="center">
<%
Response.Write "共 <font color='#FF0000'>"&totalPut&"</font> 条信息 "
k=currentPage
if k<>1 then
response.write "[<b>"+"<a href='"&FileName&"page=1'>首页</a></b>] "
response.write "[<b>"+"<a href='"&FileName&"page="&cstr(k-1)&"'>上一页</a></b>] "
else
Response.Write "[首页] [上一页]"
end if
if k<>n then
response.write "[<b>"+"<a href='"&FileName&"page="&cstr(k+1)&"'>下一页</a></b>] "
response.write "[<b>"+"<a href='"&FileName&"page="&cstr(n)&"'>尾页</a></b>] "
else
Response.Write "[下一页] [尾页]"
end if
Response.Write " 页次:<font color='#ff0000'>"¤tpage&"</font>/"&n&"页 15条信息/页"
%>
 转到:
<select name="select" onchange="javascript:window.location='<%=FileName%>page='+this.options[this.selectedIndex].value;">
<option>跳转页</option>
<%
Dim z
For z=1 To n%>
<option value="<%=z%>">第<%=z%>页</option>
<%
Next
%>
</select>
</div></td>
</tr></table>
<%
End If
%>






<%
Sub DelAnnounce(AnnID)
if AnnID="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>参数不足</li>"
exit sub
end if
Set Rs = Server.CreateObject( "ADODB.Recordset" )
sSql="Select D_ID From OnlineInquiry Where D_ID In ("&AnnID&")"
Rs.Open sSql,oConn,1,1
If Rs.Eof Then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>无此信息!</li>"
exit sub
End If
Rs.Close

Set Rs = Server.CreateObject( "ADODB.Recordset" )
sSql = "DELETE FROM OnlineInquiry WHERE D_ID In ("&AnnID&")"
oConn.Execute sSql

Response.Write "<p align=center style='font-size:12px' >信息删除成功,1秒后自动返回信息管理页!<script>window.setTimeout(""location.href='OnlineInquiry.asp'"",1000);</script></p>"
response.End()
End Sub
%>






求高手解决,不如要挨批了- -!!!!
dean8828 2010-12-02
  • 打赏
  • 举报
回复
我试过了,不行啊
xmrxw 2010-12-02
  • 打赏
  • 举报
回复
你可以先在这个过程中
response.write AnnID
response.end
看一下AnnID是否有值传过来,并且是数组形式传过来,如1,2,5,10这样的参数

Sub DelAnnounce(AnnID)
if AnnID="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>参数不足</li>"
exit sub
end if

oConn.Execute("DELETE FROM OnlineInquiry WHERE D_ID In ("&AnnID&")")

Response.Write "<p align=center style='font-size:12px' >信息删除成功,1秒后自动返回信息管理页!<script>window.setTimeout(""location.href='OnlineInquiry.asp'"",1000);</script></p>"
response.End()
End Sub

然后我对你的过程的一个建议,既然删除都是在一个表中就不必先检查是否有记录在删除,本身delete的条件就已经有这个AnnID就行!
lijavasy 2010-12-02
  • 打赏
  • 举报
回复
用数据应该就可以解决这个问题!
用response.write写<input name="AnnID" type="checkbox" onClick="unselectall()" id="AnnID" value="<%=Rs("D_ID")%>">
e.g:
response.write("<input name='AnnID[i]' type='checkbox' onClick='unselectall()' id='AnnID[i]' value='& Rs("D_ID")'>")



灬上海爽爷 2010-12-01
  • 打赏
  • 举报
回复
<input name="AnnID" type="checkbox" onClick="unselectall()" id="AnnID" value="<%=Rs("D_ID")%>">

同一个页面中不能出现相同的ID
把 id="AnnID"去掉,或者再后面加上不同的ID值。
通常在接受页面
AnnID=trim(request("AnnID"))就可以了
检查了下你后台的代码应该没问题,主要还是前台的CHECKBOX,可以的话就不需要ID,只留NAME就可以了。
dean8828 2010-12-01
  • 打赏
  • 举报
回复
我试了几个办法都不行呢
FOR EACH 遍历数组

UserID=request("AnnID")
UserID="'"&replace(UserID,", ","','")&"'"

Set Rs = Server.CreateObject( "ADODB.Recordset" )
sSql = "DELETE FROM OnlineInquiry WHERE D_ID In ("&UserID&")"
Conn.Execute sSql



都不行,问题出现在那里呢?


求高人!!!
dean8828 2010-12-01
  • 打赏
  • 举报
回复
JAVASCRIPT应该不会直接删除到数据库去的
kkbac 2010-12-01
  • 打赏
  • 举报
回复
有id的元素,用 document.getElementById("id名")取得.
有name的元素集合, 用 document.getElementById("name名")取得.
dean8828 2010-12-01
  • 打赏
  • 举报
回复
<SCRIPT language=javascript>
function unselectall()
{
if(document.myform.chkAll.checked){
document.myform.chkAll.checked = document.myform.chkAll.checked&0;
}
}

function CheckAll(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e = form.elements[i];
if (e.Name != "chkAll"&&e.disabled==false)
e.checked = form.chkAll.checked;
}
}


function ConfirmDel()
{
if(document.myform.Action.value=="Del")
{
if(confirm("确定要删除选中的信息吗?一但删除将无法恢复!"))
return true;
else
return false;
}
}
</SCRIPT>




本来这样写的,但是还是不行
dean8828 2010-12-01
  • 打赏
  • 举报
回复
怎么用JAVASCRIPT 判断CHECKBOX是否选中,然后删除


具体一点的
lqd122508706 2010-12-01
  • 打赏
  • 举报
回复
可以将选中的记录放到数组或者列表里面,然后传进来,动态的拼成SQL语句就可以了,例如:DELETE FROM OnlineInquiry WHERE D_ID = ("&AnnID1&")"
or DELETE FROM OnlineInquiry WHERE D_ID In ("&AnnID2&")"
or DELETE FROM OnlineInquiry WHERE D_ID In ("&AnnID&3")"
当然,拼SQL的时候,要判断,数组或者列表里面有值的时候,再拼。
fengxuegupo 2010-12-01
  • 打赏
  • 举报
回复
你可以得到想要删除的几条信息的id,然后得到一个id数组,最后呢在业务逻辑就遍历这个数组,调用你单个删除的方法就可以了
kkbac 2010-12-01
  • 打赏
  • 举报
回复
输出下你的 AnnID ,看看删除三条的时候. 他的值是多少?

28,405

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧