注册 登录
编程论坛 ASP技术论坛

怎么才能删除多条记录?

fuhuijun 发布于 2007-11-05 15:36, 2323 次点击
在给大家提议个问题就是管理员怎样才能把选中的数据都删除呢?
我定义了checkbox,然后选中一个可以删除的掉,但是选中多个就删除不了?
这种情况语句该怎么定义啊?
谢谢!
26 回复
#2
hmhz2007-11-05 16:05
这个有点复杂 javascript + asp 一起并用

<script language="javascript">
function CheckAll(form){
for (var i=0;i<form.elements.length;i++){
var e = form.elements[i];
if (e.name != 'chkall') e.checked = form.chkall.checked;
}
}
</script>
<%
if request.form("action")="批量删除" then
delid=request.form("delid")
if delid<>"" and not isnull(delid) then
conn.execute "delete from UserMain where id in ("&delid&")"
end if
%>
<form action="" method="post">
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from UserMain order by id desc",conn,1,1
do while not rs.eof
%>
<input type="checkbox" name="delid" value="<%=rs("id")%>" />
<%
rs.movenext
loop
rs.close
set rs=nothing
%><br />
<input type="checkbox" name="chkall" onclick="CheckAll(this.form);" />
<input type="submit" name="action" value="批量删除" />
</form>

[此贴子已经被作者于2007-11-5 17:31:25编辑过]

#3
fuhuijun2007-11-05 16:14
javascript已经定义了
就是asp不知道该怎么定义?
现在我正在看你的代码的呢?
#4
放任一切2007-11-05 16:25
把定义为checkbox是循环的,值定义为记录ID号
在提交以后提取checkbox的值,就是所有选中的多个会用,隔开
再用split把它分开,做个循环就可以了
#5
放任一切2007-11-05 16:26
delID=request.Form("ID")
if delID="" then
response.write"<SCRIPT language=JavaScript>alert('错误的参数?');"
response.write"javascript:history.go(-1)</SCRIPT>"
end if
if instr(delID,",")>0 then
id=split(delID)
for i = 0 to ubound(id)
call Delinfo(clng(id(i)))
next
else
call Delinfo(delID)
end if
#6
fuhuijun2007-11-05 16:31
回复:(放任一切)把定义为checkbox是循环的,值定义...
你的意思就是把他定义成一个一维数组
然后循环删除就可以了是吗?
这重方法我也试过
但是还是不可以
你那有代码吗
发过来我看一下好吗?
#7
fuhuijun2007-11-05 16:37
回复:(放任一切)把定义为checkbox是循环的,值定义...


这是我的那个表单你看一下,我是从这样做的
我修改了一下你的代码
但是循环了好些文本框
这个我知道,现在我就是想知道把这个表单提交到下一个页面,那么下一个页面该怎么写语句?是asp
您那有关于这个的代码吗?
谢谢!


<script language="javascript">
function check(){
var nlength = document.delete1.chk.length
var i
for (i=0;i<nlength;i++){
delete1.chk(i).checked=true

}


}

function check1(){
var nlength = document.delete1.chk.length
var i
for (i=0;i<nlength;i++){
delete1.chk(i).checked=false

}


}

</script>
<style type="text/css">
<!--
.STYLE2 {font-family: Georgia, "Times New Roman", Times, serif}
.STYLE3 {
font-size: large;
font-weight: bold;
font-style: italic;
color: #0033CC;
}
-->
</style>


<center>
<h1 class="STYLE3"><span class="STYLE2">管理员删除留言页面</span> </h1>
</center>

<table width="79%" height="58" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#999999">

<form action="delete.asp" name="delete1" method="post" >
<tr>
<td bgcolor="#FFFFFF"></td>
<td align="center" bgcolor="#FFFFFF">用户名</td>
<td align="center" bgcolor="#FFFFFF">邮箱</td>
<td align="center" bgcolor="#FFFFFF">主题</td>
<td align="center" bgcolor="#FFFFFF">内容</td>
<td align="center" bgcolor="#FFFFFF">提交时间</td>

</tr>
<%while not rs.eof%>
<tr>
<td bgcolor="#FFFFFF"><input type="checkbox" value="<%=rs.fields("id")%>" name="chk"></td>
<td bgcolor="#FFFFFF"><%=rs.fields("uname")%></td>
<td bgcolor="#FFFFFF"><%=rs.fields("umail")%></td>
<td bgcolor="#FFFFFF"><%=rs.fields("subject")%></td>
<td bgcolor="#FFFFFF"><%=rs.fields("comments")%></td>
<td bgcolor="#FFFFFF"><%=rs("adtime")%></td>

</tr>
<%
rs.movenext

wend

rs.close
conn.close
%>
<tr><td colspan="6" bgcolor="#FFFFFF"><center><input type=button name="chk" value="全选" onclick="check()"><input type="submit" name="delete" value="删除"><input type=button name="chk" value="全不选" onclick="check1()"></center></td></tr>
</form>

</table>

#8
yms1232007-11-05 16:40

我以前写过一个这样的例子,但源代码不再我现在的电脑上。
用SQL语句就可以完成。

#9
放任一切2007-11-05 16:44
循环出来的checkbox都是一个名字,到删除页面提取ID值就可以了
#10
fuhuijun2007-11-05 16:47
我觉得吧定义一个数组因该可以实现的
但是我上次做了好半天也没做出来!
#11
yms1232007-11-05 16:47

多个ID中条件加Or连接即可。

#12
放任一切2007-11-05 16:49
有了ID值就删啊,一条一条删也可以,也可以按楼上说的,用Or连接一下都删掉
#13
fuhuijun2007-11-05 16:52
回复:(放任一切)循环出来的checkbox都是一个名字,...

你写的这个是什么意思了啊?

Delinfo
#14
放任一切2007-11-05 16:54
这是我写的一个函数直接调的

好多地都用到删除了,就写了个函数,方便点
#15
fuhuijun2007-11-05 16:57

那你现在没有这个函数的代码了啊?
如果有的话可不可以分享一下啊?
谢谢!
#16
放任一切2007-11-05 16:58
function Delinfo(iddel)
Set rs= Server.CreateObject("ADODB.Recordset")
sql="delete from clie_tailgate where ID=" & iddel
rs.open sql,conn,1,3
set rs=nothing
end function

这个函数就是用于删除的
#17
fuhuijun2007-11-05 17:00
好的
我先看一下
谢谢!
#18
hmhz2007-11-05 17:04

刚才代码没写好,现在重新写一下
[CODE]<script language="javascript">
function CheckAll(form){
for (var i=0;i<form.elements.length;i++){
var e = form.elements[i];
if (e.name != 'chkall') e.checked = form.chkall.checked;
}
}
</script>
<%
if request.form("action")="批量删除" then
delid=request.form("delid")
if delid<>"" and not isnull(delid) then
conn.execute "delete from UserMain where id in ("&delid&")"
end if
%>
<form action="" method="post">
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from UserMain order by id desc",conn,1,1
do while not rs.eof
%>
<input type="checkbox" name="delid" value="<%=rs("id")%>" />
<%
rs.movenext
loop
rs.close
set rs=nothing
%><br />
<input type="checkbox" name="chkall" onclick="CheckAll(this.form);" />
<input type="submit" name="action" value="批量删除" />
</form>[/CODE]

[此贴子已经被作者于2007-11-5 17:06:29编辑过]

#19
fuhuijun2007-11-05 17:17
问题以解决
是这样做的
先把要删除的ID获取,获取之后把他放到一个数组里,然后在循环的删除就可以了!!!!

谢谢刚才那位朋友了
也谢谢大家了
#20
fuhuijun2007-11-05 17:20
要用到几个函数的instr(),split(),ubound(),clng().
#21
gookee2007-11-05 19:21
....
#22
gookee2007-11-05 19:22

一句话搞定

delete * from table where id in()

#23
zhongx2007-11-06 22:49
以下是引用gookee在2007-11-5 19:22:21的发言:

一句话搞定

delete * from table where id in()

详细点可以吗?

#24
fuhuijun2007-11-07 09:34
就是啊
你详细一点看一下啊
把代码写上去?
#25
fengmumei2007-11-07 09:45
form页面中:
<input type="checkbox" name="checkbox1" id="checkbox1*" value="*">

form提交的页面中:

m=request("checkbox1").count
m=cint(m)
for i=1 to m
if request("checkbox1")(i)<>"" then
str=request("checkbox1")(i)'其中str是form页面中传来的值,即要删除记录的关键值(比如id)
…………'删除记录
end if
next
#26
cainiao1582007-11-07 09:53

本人是菜鸟 给楼主的那些代码都是有头没尾的,能不能写完整它,很不适合我们菜鸟阅读

#27
fuhuijun2007-11-07 10:57

谢谢
很满意!
比较赞同

1