在foreach循环中单击按钮时,从目录中删除特定文件以及从数据库数组中删除其名称


Delete specific file from directory as well as delete its name from database array on button click in foreach loop

如何从数据库中删除数组中的文件,并从目录中单击按钮。我有这段代码,删除了该文件夹中的所有文件,但仍然显示文件名。我希望删除特定的文件从目录文件夹和数组在数据库上的按钮单击。

echo '<ul>';
foreach (explode(',', $msg_rows['msg_files']) as $file){
echo '<li><a href="../files/wcfiles/'.$msg_rows['msg_order_id'].'/'.$file.'">'.$file.'</a>&nbsp
<a class="btn btn-danger btn-xs" href="../files/wcfiles/'.$msg_rows['msg_order_id'].'/'.unlink($file).'">Delete</a></li>';}
echo '</ul>';

要删除通过处理$msg_rows['files']获得的所有文件,您可以这样做:

$files=explode(',', $msg_rows['files'] );
foreach ( $files as $file ) @unlink($file);

如果您试图生成一个带有链接的文件列表,当单击该链接时,将删除稍微涉及的文件-最有可能使用ajax。

$files=explode(',', $msg_rows['files'] );
echo '<ul>';
foreach ( $files as $file ) echo "<li>$file<a href='#' onclick='deletefile('"{$file}'")'>delete</a></li>";
echo '</ul>';

您将需要有一个javascript函数deletefile,它将必要的信息发送给删除文件的脚本。这是一个非常基本的例子(将文件名作为参数嵌入)

/* javascript */
function deletefile(filename){
    var xhr=new XMLHttpRequest();
    xhr.onreadystatechange=function(){
        if( xhr.readyState==4 && xhr.status==200 ) {
            alert( xhr.response );
        }
    }
    xhr.open( "POST", "/deletefile.php", true )
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xhr.send("file="+filename+'action='delete');
}