把表加入到<form>中,发送的时候,在接收数据的文件中
<% ck=request.form("checkedbox")//假设checkedbox为复选框的名
for each item in ck
sql="delete from tablename where name='"&item&"'"
conn.execute sql
next
%>
信箱的删除就是这样的。
<% ck=request.form("checkedbox")//假设checkedbox为复选框的名
for each item in ck
sql="delete from tablename where name='"&item&"'"
conn.execute sql
next
%>
信箱的删除就是这样的。
for each item in ck
这个item是个什么?序号?如果是序号,这个序号跟信件的ID或NAME不见得是一回事,因为信件的ID并不一定是连续的(中间的某些可能被删除了),而且信件显示可能分页,假如得到的CHECKBOX序号是0..9,对应的信件ID可能是300..314,怎么办?
我的方法可能复杂了一点,但性能还算可靠吧
<html>
<head><!--
首先,我测试过的经验是 FORM 中的 CHECKBOX 不能重名,
如果重名就统统无法显示
所以只能不用 FORM 或者 CHECKBOX 用不同的名字对你的问题,CHECKBOX 根本用不着取名字(麻烦,而且根据我的测试,这种大量重复的控件,如果都取个ID或NAME将非常影响执行速度)在你的数据库中,每封信件肯定应该有个唯一的 ID 吧?否则怎么管理?
下面的 ArrMailId 是你用 asp 生成的数组,其元素是这些信件的 ID,与表中的行一一对应
(当然你也可以在表中用 <tr><td><input type=checkbox MailId=xx> 将信件的 ID 与 CHECKBOX 直接关联起来,但从执行速度考虑,定义单独的 Array 更快一些)
下面的 FORM 提交了一个隐藏控件,其内容是一个由待删除信件的 ID 号组成的字符串,如“1,3,4,5,9”
ASP 端收到这个参数后,根据逗号将字符串拆开,获得 ID 号的数组,就可以执行删除操作了
--><script>
var ArrMailId = new Array(1,3,4,5,9); // 用 asp 生成的数组function ChkSelect()
{
var s = "";
var oElements = document.all.oForm.elements;
// 获得所有选中的 CHECKBOX 的序号,存进 sDel
var iCheckBox = 0;
for ( var i = 0; i < oElements.length; i++ )
{
var oElement = oElements.item(i);
// 下面的代码假设 FORM 中没有其它用途的 CHECKBOX
if ( oElement.type == "checkbox" )
{
if ( oElement.checked )
{
var MailId = ArrMailId[iCheckBox];
s += ("," + MailId);
}
iCheckBox ++; // 序号递增
}
}
if ( s )
{
// 现在 s 是一个形如 ",1,3,4,5,9" 的字符串
s = s.substr(1, s.length-1);
// 现在 s 是一个形如 "1,3,4,5,9" 的字符串
document.all.oForm.sDel.value = s;
return confirm("确实要删除这些代号的信件:\n" + s + "\n?");
//return true;
}
alert("请选择待删除的信件");
return false;
}
</script></head><body><form method=post action="./delete.asp" name=oForm onsubmit="return ChkSelect();">
<input type=hidden name=sDel value=""><table>
<tr><td><input type=checkbox></td><td>邮件 1</td></tr>
<tr><td><input type=checkbox></td><td>邮件 2</td></tr>
<tr><td><input type=checkbox></td><td>邮件 3</td></tr>
</table><input type=submit value="删除所选信件">
</form></body>
</html>