2014-09-22 175 views
-3

我希望用戶能夠通過點擊複選框並提交表單來刪除文件。
某處在標題:爲什麼這個取消鏈接功能不起作用?

foreach ($_POST ['files'] ['deleteFile'] as $value) 
{ 
    unlink ($value); 
    $fileError = '¡Éxito!'; 
} 

身體某處:

<form enctype="multipart/form-data" method="post" name="files"> 
<!-- No action attribute was added as the form is processed in the same file --> 
<?php 
foreach (glob ('files/*.*') as $file) 
{ 
    echo $file . '<input name="deleteFile" type="checkbox" value="' . $file . '">'; 
} 
?> 
<input type="submit" value="Confirmar"> 
</form> 
+0

看起來你需要'unlink('files /'.$ value);' – Ohgodwhy 2014-09-22 21:41:19

+0

@Ohgodwhy:不,'$ value'似乎有完整的路徑。 – 2014-09-22 22:01:54

回答

2

因爲你沒有在$_POST超級全局稱爲files的關鍵。假設你要選擇的複選框的值被添加到$_POST數組,你應該使用下面的代碼:

<form method="post"> 
<?php 
foreach (glob ('files/*.*') as $file) 
{ 
    echo $file . '<input name="deleteFile[]" type="checkbox" value="' . $file . '">'; 
} 
?> 
    <input type="submit" value="Confirmar" /> 
</form> 

注意,我們所說的場deleteFile[]。方括號告訴PHP處理與數組同名的所有字段。現在,我們可以通過每個值使用foreach()循環如下:

foreach ($_POST['deleteFile'] as $value) 
{ 
    unlink ($value); // or you might need unlink('files/'.$value); 
    $fileError = '&iexcl;&Eacute;xito!'; 
} 

請注意,你並不需要爲這種類型的請求enctype屬性。另外,PHP不像JS。表格的名稱與$_POST中的值無關。

+0

它會拋出以下錯誤:警告:提供給foreach()的無效參數在/public_html/wysiwyg/files.php – 2014-09-22 22:00:08

+0

哦,現在就像一個魅力。謝謝。 – 2014-09-22 22:05:41