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

[求助]"删除所选(复选框)"时怎样才能同时删除数据库记录及相关文件

thbwn 发布于 2007-10-03 11:41, 5625 次点击

这段代码不知道哪有问题,删除所选时数据库记录删除正确,但所有文件都被删除了,不是相关文件被删除,请教各位大侠:

<!--#include file="conn.asp"-->
<%
id= trim(request("id"))
filename=trim(request("filename"))

if id <> "" or filename <> "" then
fileid = split(id,", ")
for i=0 to ubound(fileid)
if fileid(i) <> "" then
sql="delete from [file] where id="&fileid(i)
conn.execute(sql)
end if
next

filedel = split(filename,", ")
for i=0 to ubound(filedel)
set fso=server.createobject("Scripting.filesystemobject")
if fso.fileexists(server.mappath(""&SavePath&"/"&filedel(i)))=true then
fso.deletefile(server.mappath(""&SavePath&"/"&filedel(i)))
End if
next

end if

response.Redirect("show.asp")
%>

75 回复
#2
thbwn2007-10-03 11:41

我把关联的前一页"show"发出来,大伙儿看看,这一页有没有问题:
<%@ codepage=936 %>
<!--#include file="conn.asp"-->
<%
dim i,intPage,page,pre,last,filepath
set rs = server.CreateObject("adodb.recordset")
sql="select * from file order by ID"
rs.PageSize = 15 //(HacKpp:这里设定每页显示的记录数
rs.CursorLocation = 3
rs.Open sql,conn,0,2,1 //(HacKpp:'这里执行你查询SQL并获得结果记录集
pre = true
last = true
page = trim(Request.QueryString("page"))

if len(page) = 0 then
intpage = 1
pre = false
else
if cint(page) =< 1 then
intpage = 1
pre = false
else
if cint(page) >= rs.PageCount then
intpage = rs.PageCount
last = false
else
intpage = cint(page)
end if
end if
end if
if not rs.eof then
rs.AbsolutePage = intpage
end if
%>

<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>木目ASP文件上传工具(川江号子修改版)</title>
<link rel="stylesheet" href="Data\style.css">
</head>
<SCRIPT language=JavaScript type=text/javascript>
function CheckAll(form) {
for (var i=0;i<form.elements.length;i++) {
var e = form.elements[i];
if (e.name == 'ID'){
e.checked = form.chkall.checked;
}
}
}
</SCRIPT>
<body style="text-align: center">

<div align="center">
<table width="150" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="#7B96BD" bordercolordark="#FFFFFF">
<tr>
<td height="22" align="center" bgcolor="#7C96B8"><font color="#FFFFFF">上传文件列表</font></td>
</tr>
</table>
<br>
<FORM name=kk action=del.asp method=post>
<table width="650" height="42" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="#7C96B8" bordercolordark="#FFFFFF">
<TR align="center">
<td width="10%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">选择</font></td>
<td width="10%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">ID</font></td>
<td width="25%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">文件名</font></td>
<td width="20%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">文件大小</font></td>
<td width="25%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">上传时间</font></td>
</tr>
<%if rs.EOF or rs.BOF then
response.write "<TR><td colspan=10 height=20><div align=center>暂时还没有任何上传文件</div></td></TR>"
end if
%>
<%
for i=1 to rs.PageSize
if rs.EOF or rs.BOF then exit for
%>
<tr align=center>
<input type=hidden name=filename value=<%=rs("filename")%> />
<td width="10%" height="20" align="center"><input type=checkbox name=ID id=id value=<%=rs("id")%> /></td>
<td width="10%" height="20" align="center"><%=rs("ID")%></td>
<td width="25%" align="center"><%=rs("fileName")%></td>
<td width="20%" align="center"><%=Split(Rs("contentlen"),".")(0)%>&nbsp;KB</td>
<td width="25%" align="center"><%=rs("uptime")%></td>
</tr>
<%
rs.movenext
next
%>
</table>
<p><DIV class=bottom><INPUT onclick=CheckAll(this.form) type=checkbox value=on
name=chkall> 全选&nbsp;&nbsp;<INPUT class=button onClick="if(confirm('删除后将不能恢复!您确定要删除吗?'))form.submit()" type=button value=删除所选></DIV> </p></FORM>
<center>

<table width="650" border="0" cellpadding="3" cellspacing="1" borderColorLight=#808080 borderColorDark=#ffffff>
<tr>
<%if rs.pagecount > 0 then%>
<td width="13%" align="left">当前页<%=intpage%>/<%=rs.PageCount%></td>
<%else%>
<td width="40%" align="left">当前页0/0</td><%end if%>
<td width="47%" align="right"> <a href="Show.asp?page=1">首页</a>|
<%if pre then%>
<a href="Show.asp?page=<%=intpage -1%>">上页</a>| <%end if%>
<%if last then%>
<a href="Show.asp?page=<%=intpage +1%>">下页</a> |<%end if%>
<a href="Show.asp?page=<%=rs.PageCount%>">尾页</a>|转到第
<select name="sel_page" onChange="javascript:location=this.options[this.selectedIndex].value;">
<%
for i = 1 to rs.PageCount
if i = intpage then%>
<option value="Show.asp?page=<%=i%>" selected><%=i%></option>
<%else%>
<option value="Show.asp?page=<%=i%>"><%=i%></option>
<%
end if
next
%>
</select>页</font>
</td>
</tr>
</table>
<p>&nbsp;</p>
<p><a href="upload.asp" target="_self"><font color="#0000FF">[返回上传页]</font></a>  <a href="mdbzip.asp" target="_self"><font color="#0000FF">[压缩数据库]</font></a></p>
</center>
</div>
</body>

</html>


[此贴子已经被作者于2007-10-3 16:06:49编辑过]

#3
shaoli42612007-10-03 13:27

<%
Num=request.form("DelID").count
if Num=0 then
Response.Write"<script language='javascript'>alert('请选择你所要删除的信息,请返回!');window.location.href('hpgl.asp');</script>"
Response.End
end if
set conn=server.CreateObject("adodb.connection")
conn.open"driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("database/info.mdb")
for i=1 to Num
bianma=request.form("DelID")(i)
set rs=Server.CreateObject("adodb.Recordset")
sql="Select * from hpjl where bianma='"&bianma&"'"
rs.open sql,conn,1,3
if not rs.eof then
rs.delete()
rs.update()
else
Response.Write "<script language='javascript'>alert('请选择的信息删除失败,请返回!');window.back();</script>"
Response.End
end if
next
Response.Write"<script language='javascript'>alert('成功将选定信息删除');window.location.href('hpgl.asp');</script>"
Response.End
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

[此贴子已经被作者于2007-10-3 13:31:05编辑过]

#4
thbwn2007-10-03 14:25

谢谢老兄帮忙,但你这段代码只能清除数据库里的记录,我想同时删除上传的文件,代码应该是怎样的呢?我的代码删除数据库记录没有问题的,就是想两种功能同时进行,对上传文件进行有效的管理.可能要用到FSO,循环删除

[此贴子已经被作者于2007-10-3 14:33:29编辑过]

#5
hmhz2007-10-03 14:34
<%
Num=request.form("DelID").count
if Num=0 then
Response.Write"<script language='javascript'>alert('请选择你所要删除的信息,请返回!');window.location.href('hpgl.asp');</script>"
Response.End
end if
set conn=server.CreateObject("adodb.connection")
conn.open"driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("database/info.mdb")
for i=1 to Num
bianma=request.form("DelID")(i)
set rs=Server.CreateObject("adodb.Recordset")
rs.open "Select * from hpjl where bianma='"&bianma&"'",conn,1,3
if not rs.eof then
rs.delete()
rs.update()
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
if FSO.FileExists(Server.MapPath("inc/"&bianma&".asp")) then
FSO.DeleteFile Server.MapPath("inc/"&bianma&".asp"),True 'FSO文件删除
end if
else
Response.Write "<script language='javascript'>alert('请选择的信息删除失败,请返回!');window.back();</script>"
Response.End
end if
next
Response.Write"<script language='javascript'>alert('成功将选定信息删除');window.location.href('hpgl.asp');</script>"
Response.End
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
#6
thbwn2007-10-03 15:04
谢谢版主!
不过,问题没解决,还需麻烦你.
我把源码传上来,这是一个简单的上传管理源码,我自己修改的,增加了数据库,就是删除怎么也弄不明白了,show.asp是显示页,有复选框,可全选,然后删除所选,我的想法是:数据库记录删除的同时删除与记录相关的文件(包括rar\gif等文件),就像有的论坛管理"上传文件"那样.
请帮我改改.
filedel.asp是删除转向页,完成删除功能.也不知show.asp没有有问题.
总之,麻烦版主及各位大虾了,要不我寝食难安!!


只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2007-10-3 15:16:22编辑过]

#7
shaoli42612007-10-03 15:27
呵呵…………   我现在正在研究和你一样的问题,怎么能同时删除数据库里的信息和服务器上的文件,我的办法的用文件名删除。
#8
yms1232007-10-03 15:29

楼注1楼提供的时哪个页面的代码?

#9
月夜2007-10-03 15:32
对 我做到了 是文件名删除 删除数据库的同时删除对应的文件名
方法就是删除数据库不用说了 根据ID 或者间接查询或传递判断条件来确认要删除哪一条
确认了删除数据库了 不要急 在下边写上一段很简短的代码 来删除对应文件
代码如下:
set fso=CreateObject("Scripting.FileSystemObject")
whichfile=server.mappath(""&n&"")
Set thisfile = fso.GetFile(whichfile)
thisfile.Delete True
n 表示文件名 文件名怎么得来? 你要这么问我就杀了你然后再自杀
然后是上边查询数据库 删除文件时附给的值啦
#10
thbwn2007-10-03 15:56
1楼提供的是filedel.asp删除功能页
#11
thbwn2007-10-03 15:56
这两天一直在研究上传管理
#12
月夜2007-10-03 15:59
没太多心得 上传管理我只能做到删除以及修改图片介绍
#13
yms1232007-10-03 16:00
<a href="filedel.asp?id=<%=rs("id")%>&SaveFileName=<%=rs("filename")%>">删除</a>
哪既然filedel.asp是删除单条记录的,为何要用循环呢?
#14
thbwn2007-10-03 16:02

一个个地执行删除,这个我研究明白了。就是这种用复选框,一次一页全选删除,或选后一次执行删除弄不了了,道行太浅哟。这种功就跟论坛管理上传一样,挺方便的。大伙儿帮帮忙。
1、删数据库记录,可通过ID就行。
2、删除文件,想必会用到FSO,循环删除才行吧,应该通过文件名才行。就是……哎,搞了一天了,还是……

#15
thbwn2007-10-03 16:05
要是上传文件太多,而且时间长了,没用需删除掉的文件也会太多,删起来挺麻烦,不过,也是想向大家学习学习,研究起来有意思。请大伙儿务必帮我,有谁能改后,烦请传上来,供大家分享哟
#16
yms1232007-10-03 16:09

<!--#include file="conn.asp"-->
<%
id= trim(request("id"))
filename=trim(request("filename"))

if id <> "" or filename <> "" then
fileid = split(id,", ")
for i=0 to ubound(fileid)
if fileid(i) <> "" then
sql="delete from [file] where id="&fileid(i)
'这句SQL语句是对的,但是这里如果只有一条id为何要循环删除?
conn.execute(sql)
end if
next

'同样的道理,如果filename只是一个文件的文件名为何要用循环?
filedel = split(filename,", ")
for i=0 to ubound(filedel)
set fso=server.createobject("Scripting.filesystemobject")
if fso.fileexists(server.mappath(""&SavePath&"/"&filedel(i)))=true then
fso.deletefile(server.mappath(""&SavePath&"/"&filedel(i)))
End if
next

end if

response.Redirect("show.asp")
%>
那楼主这个页面到底是为了删除单条记录而做还是要既能删除单条记录也能删除多条记录?

#17
thbwn2007-10-03 16:12

要实现的功能:
1、点击全选,然后点“删除所选”删除一页;
2、通过复选框选中需删除的文件,然后点“删除所选”

一次性执行删除,不用一个个地删除。

[此贴子已经被作者于2007-10-3 16:13:35编辑过]

#18
月夜2007-10-03 16:13

他的意思不是循环吧 就是多选一起删除 很简单啊 得到复选框里的东西 查询到文件名然后用 循环来删除所选的文件 斑竹 俺道行太浅 JS几乎不怎么会 应该用JS做吧

#19
thbwn2007-10-03 16:15
月夜说的很对,就是这种效果。大家努努力,我可是不会罗。
#20
thbwn2007-10-03 16:17

做论坛,或网站,管理上传经常用到,这要是整明白了,以后这种类似的问题就不难了,切盼佳音!!

[此贴子已经被作者于2007-10-3 16:19:03编辑过]

#21
thbwn2007-10-03 16:23
这个网站,偶第一次进,人气挺旺,支持!!
#22
yms1232007-10-03 16:28

<%@ codepage=936 %>
<!--#include file="conn.asp"-->
<%
dim i,intPage,page,pre,last,filepath
set rs = server.CreateObject("adodb.recordset")
sql="select * from file order by ID"
rs.PageSize = 15 //(HacKpp:这里设定每页显示的记录数
rs.CursorLocation = 3
rs.Open sql,conn,0,2,1 //(HacKpp:'这里执行你查询SQL并获得结果记录集
pre = true
last = true
page = trim(Request.QueryString("page"))

if len(page) = 0 then
intpage = 1
pre = false
else
if cint(page) =< 1 then
intpage = 1
pre = false
else
if cint(page) >= rs.PageCount then
intpage = rs.PageCount
last = false
else
intpage = cint(page)
end if
end if
end if
if not rs.eof then
rs.AbsolutePage = intpage
end if
%>

<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>木目ASP文件上传工具(川江号子修改版)</title>
<link rel="stylesheet" href="Data\style.css">
</head>
<SCRIPT language=JavaScript type=text/javascript>
var idstr="";
var fNameStr="";
function CheckAll(form) {
for (var i=0;i<form.elements.length;i++) {
var e = form.elements[i];
if (e.name == 'ID'){
e.checked = form.chkall.checked;
}
}
}
function getSelIDFileName()
{
var filenames=document.kk.filename;
var ids=document.kk.id;
for(var i=0;i<ids.length;i++)
{
if(ids[i].checked)
{
idstr+=ids[i].value+"|";
fNameStr=filenames[i].value+"|";
}
}
}
function Page_Submit()
{
getSelIDFileName();
if(idstr=="")
{
alert('删除前请先选择要删除的内容');
return false;
}
if(confirm('删除后将不能恢复!您确定要删除吗?'))
{
self.location='filedel.asp?id='+idstr+'&filename='+fNameStr;
}
}
</SCRIPT>
<body style="text-align: center">

<div align="center">
<table width="150" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="#7B96BD" bordercolordark="#FFFFFF">
<tr>
<td height="22" align="center" bgcolor="#7C96B8"><font color="#FFFFFF">上传文件列表</font></td>
</tr>
</table>
<br>
<FORM name=kk action=del.asp method=post>
<table width="650" height="42" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="#7C96B8" bordercolordark="#FFFFFF">
<TR align="center">
<td width="10%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">选择</font></td>
<td width="10%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">ID</font></td>
<td width="25%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">文件名</font></td>
<td width="20%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">文件大小</font></td>
<td width="25%" height="20" bgcolor="#006666" align="center"><font color="#FFFFFF">上传时间</font></td>
</tr>
<%if rs.EOF or rs.BOF then
response.write "<TR><td colspan=10 height=20><div align=center>暂时还没有任何上传文件</div></td></TR>"
end if
%>
<%
for i=1 to rs.PageSize
if rs.EOF or rs.BOF then exit for
%>
<tr align=center>
<input type=hidden name=filename value=<%=rs("filename")%> />
<td width="10%" height="20" align="center"><input type=checkbox name=ID value=<%=rs("id")%> /></td>
<td width="10%" height="20" align="center"><%=rs("ID")%></td>
<td width="25%" align="center"><%=rs("fileName")%></td>
<td width="20%" align="center"><%=Split(Rs("contentlen"),".")(0)%>&nbsp;KB</td>
<td width="25%" align="center"><%=rs("uptime")%></td>
</tr>
<%
rs.movenext
next
%>
</table>
<p><DIV class=bottom><INPUT onclick=CheckAll(this.form) type=checkbox value=on
name=chkall> 全选&nbsp;&nbsp;<INPUT class=button onClick="Page_Submit();" type=button value=删除所选></DIV> </p></FORM>
<center>

<table width="650" border="0" cellpadding="3" cellspacing="1" borderColorLight=#808080 borderColorDark=#ffffff>
<tr>
<%if rs.pagecount > 0 then%>
<td width="13%" align="left">当前页<%=intpage%>/<%=rs.PageCount%></td>
<%else%>
<td width="40%" align="left">当前页0/0</td><%end if%>
<td width="47%" align="right"> <a href="Show.asp?page=1">首页</a>|
<%if pre then%>
<a href="Show.asp?page=<%=intpage -1%>">上页</a>| <%end if%>
<%if last then%>
<a href="Show.asp?page=<%=intpage +1%>">下页</a> |<%end if%>
<a href="Show.asp?page=<%=rs.PageCount%>">尾页</a>|转到第
<select name="sel_page" onChange="javascript:location=this.options[this.selectedIndex].value;">
<%
for i = 1 to rs.PageCount
if i = intpage then%>
<option value="Show.asp?page=<%=i%>" selected><%=i%></option>
<%else%>
<option value="Show.asp?page=<%=i%>"><%=i%></option>
<%
end if
next
%>
</select>页</font>
</td>
</tr>
</table>
<p>&nbsp;</p>
<p><a href="upload.asp" target="_self"><font color="#0000FF">[返回上传页]</font></a>  <a href="mdbzip.asp" target="_self"><font color="#0000FF">[压缩数据库]</font></a></p>
</center>
</div>
</body>

</html>

以上是show.asp修改后的代码。

#23
thbwn2007-10-03 16:37

在线等!

#24
hmhz2007-10-03 16:45
有什么好研究的,循环删除呗
#25
thbwn2007-10-03 16:45
谢谢热心的版主!!
#26
thbwn2007-10-03 16:45

俺不会呀

#27
thbwn2007-10-03 16:51
选中复选框后,仍提示“删除前请先选择要删除的内容”
#28
yms1232007-10-03 16:52

这是filedel.asp的代码。
<!--#include file="conn.asp"-->
<%
On Error Resume Next
function DelFile(fPath,fName)
set fso=server.createobject("Scripting.filesystemobject")
if fso.fileexists(server.mappath(""&fPath&"/"&fName))=true then
fso.deletefile(server.mappath(""&fPath&"/"&fName))
End if
End Function
function DelAryFile(fAry,fPath)
Dim i
For i=0 To Ubound(fAry)
DelFile fPath,fAry(i)
Next
End Function
function DelDBFile(wStr,con)
con.execute "delete form [file] where "&wStr
end function
function getSqlQueryStr(Field,idStr)
Dim reStr
reStr=Field&"="&Replace(idStr,"|"," Or "&Field&"=")
getSqlQueryStr=reStr
End function
Dim id,filename,idAry,fAry,QueStr
id=trim(request("id"))
filename=trim(request("filename"))
if id <> "" or filename <> "" then
id=Mid(id,1,len(id)-1)
filename=Mid(filename,1,len(filename)-1)
idAry=Split(id,"|")
fAry=Split(filename,"|")
if isArray(idAry)=false Or isArray(fAry)=false Then
DelFile SavePath,request("filename")
DelDBFile "id="&request("id"),conn
else
QueStr=getSqlQueryStr("id",id)
DelDBFile QueStr,conn
DelAryFile fAry,SavePath
end if
IF Err.Number<>0 Then
Response.write "程序出现错误,可能提交了非法参数或数据"
Else
Response.Redirect("show.asp")
End IF
Else
Response.write "没有接收到任何参数及数据,提交数据错误"
End IF
%>
filedel.asp修改后的代码

[此贴子已经被作者于2007-10-3 17:16:45编辑过]

#29
yms1232007-10-03 16:59
<SCRIPT language=JavaScript type=text/javascript>
var idstr="";
var fNameStr="";
function Page_Submit()
{
getSelIDFileName();
if(idstr=="")
{
alert('删除前请先选择要删除的内容');
return false;
}
if(confirm('删除后将不能恢复!您确定要删除吗?'))
{
self.location='filedel.asp?id='+idstr+'&filename='+fNameStr;
}
}
function CheckAll(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e = form.elements[i];
if (e.name == 'fID')
{
e.checked = form.chkall.checked;
}
}
}
function getSelIDFileName()
{
var filenames=document.kk.filename;
var ids=document.kk.fID;
for(var i=0;i<ids.length;i++)
{
if(ids[i].checked)
{
idstr+=ids[i].value+"|";
fNameStr+=filenames[i].value+"|";
}
}
}
</script>
把javascript的代码改成这样。
<input type=checkbox name=fID value=<%=rs("id")%> />
这里改成fID
再试试

[此贴子已经被作者于2007-10-3 17:00:28编辑过]

#30
thbwn2007-10-03 17:05
再次谢过,我试试,有问题再帖出来
#31
thbwn2007-10-03 17:09
报告版主:执行后出现如下错误:


程序出现错误,可能提交了非法参数或数据
#32
thbwn2007-10-03 17:10
&lt;input type=hidden name=filename  value=&lt;%=rs("filename")%&gt; /&gt;,这个隐藏的框需要去掉否?
#33
yms1232007-10-03 17:12
On Error Resume Next把这个注视掉看看那里出了错误。
<input type=hidden name=filename value=<%=rs("filename")%> />,
隐藏域不要去掉。

[此贴子已经被作者于2007-10-3 17:13:40编辑过]

#34
thbwn2007-10-03 17:13
On Error Resume Next,删掉吗
#35
yms1232007-10-03 17:13
#36
thbwn2007-10-03 17:14

错误类型:
Microsoft JET Database Engine (0x80040E14)
语法错误 (操作符丢失) 在查询表达式 'form [file] where id=28 Or id=29 Or id=30' 中。
/upload/filedel.asp, 第 17 行

#37
thbwn2007-10-03 17:17
无限接近呀
#38
thbwn2007-10-03 17:18
列表中文件没有被删掉
#39
yms1232007-10-03 17:18

这是filedel.asp的代码。
<!--#include file="conn.asp"-->
<%
On Error Resume Next
function DelFile(fPath,fName)
set fso=server.createobject("Scripting.filesystemobject")
if fso.fileexists(server.mappath(""&fPath&"/"&fName))=true then
fso.deletefile(server.mappath(""&fPath&"/"&fName))
End if
End Function
function DelAryFile(fAry,fPath)
Dim i
For i=0 To Ubound(fAry)
DelFile fPath,fAry(i)
Next
End Function
function DelDBFile(wStr,con)
con.execute "delete from [file] where "&wStr
end function
function getSqlQueryStr(Field,idStr)
Dim reStr
reStr=Field&"="&Replace(idStr,"|"," Or "&Field&"=")
getSqlQueryStr=reStr
End function
Dim id,filename,idAry,fAry,QueStr
id=trim(request("id"))
filename=trim(request("filename"))
if id <> "" or filename <> "" then
id=Mid(id,1,len(id)-1)
filename=Mid(filename,1,len(filename)-1)
idAry=Split(id,"|")
fAry=Split(filename,"|")
if isArray(idAry)=false Or isArray(fAry)=false Then
DelFile SavePath,request("filename")
DelDBFile "id="&request("id"),conn
else
QueStr=getSqlQueryStr("id",id)
DelDBFile QueStr,conn
DelAryFile fAry,SavePath
end if
IF Err.Number<>0 Then
Response.write "程序出现错误,可能提交了非法参数或数据"
Else
Response.Redirect("show.asp")
End IF
Else
Response.write "没有接收到任何参数及数据,提交数据错误"
End IF
%>
filedel.asp修改后的代码

#40
yms1232007-10-03 17:21

楼主试试还有什么错误?

#41
thbwn2007-10-03 17:23

版主,你太厉害了!
报告版主:测试成功!
我弄了一天,版主很短时间搞定,向您学习!

#42
thbwn2007-10-03 17:25
版主稍等,好像一个小bug
#43
thbwn2007-10-03 17:27

不知道是不是BUG:
上传三个文件,我选中两个,剩下最后一个,前两个删掉成功.选中最后一个,删除没反应

#44
thbwn2007-10-03 17:28
只有再上传文件,全选再全部删除
#45
thbwn2007-10-03 17:28
也即是说,不全选的时候,留下最后一个文件,选中删除这个文件删除不成功!

[此贴子已经被作者于2007-10-3 17:36:01编辑过]

#46
thbwn2007-10-03 17:38
上传两个以上文件,全选是没有问题的。
若剩一个文件或只上传一个文件,全选失灵!

[此贴子已经被作者于2007-10-3 17:44:01编辑过]

#47
yms1232007-10-03 17:46

我那段代码filedel.asp是一个两用页面即可以删除一批文件,也可以单个删除文件。

#48
thbwn2007-10-03 17:48

单个删除文件,剩最后一个不能删除吗

#49
yms1232007-10-03 17:57
<SCRIPT language=JavaScript type=text/javascript>
var idstr="";
var fNameStr="";
function isLength()
{
try
{
var filenames=document.kk.filename;
var ids=document.kk.fID;
var tst=ids.length;
return true;
}
catch(e)
{
return false;
}
}
function Page_Submit()
{
if(isLength())
getSelIDFileName();
else
{
if(document.kk.fID.checked)
idstr=document.kk.fID.value;
fNameStr=document.kk.filename.value;
}
if(idstr=="")
{
alert('删除前请先选择要删除的内容');
return false;
}
if(confirm('删除后将不能恢复!您确定要删除吗?'))
{
self.location='filedel.asp?id='+idstr+'&filename='+fNameStr;
}
}
function CheckAll(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e = form.elements[i];
if (e.name == 'fID')
{
e.checked = form.chkall.checked;
}
}
}
function getSelIDFileName()
{
var filenames=document.kk.filename;
var ids=document.kk.fID;
for(var i=0;i<ids.length;i++)
{
if(ids[i].checked)
{
idstr+=ids[i].value+"|";
fNameStr+=filenames[i].value+"|";
}
}
}
</script>
把javascript代码改成这样再试。
#50
thbwn2007-10-03 18:00

上传一个文件,全选或选中,删除出现错误:
删除前请先选择要删除的内容

#51
thbwn2007-10-03 18:10
好的
12