文件上传与PHP中的复选框相关

时间:2012-08-22 12:28:42

标签: php file checkbox

如何将文件输入类型与复选框链接?

这是我到目前为止所做的:

<input type="file" name="file_upload[0]"  /> <input type="checkbox" name="checkbox[0]"> checkbox 1 <br />
<input type="file" name="file_upload[1]"  /> <input type="checkbox" name="checkbox[1]"> checkbox 2 <br />
<input type="file" name="file_upload[2]"  /> <input type="checkbox" name="checkbox[2]"> checkbox 3 <br />
<input type="file" name="file_upload[3]"  /> <input type="checkbox" name="checkbox[3]"> checkbox 4 <br />

现在我需要在上传文件时检查PHP,检查对应的复选框(最好是循环),但我无法使其工作。

这就是我在PHP中所拥有的:

if (isset($_FILES['file_upload[1]']) && isset($_FILES['checkbox[1]']))  {
    //do something
} else {
    //do something else
}

2 个答案:

答案 0 :(得分:6)

您需要将复选框输入标记更改为<input type="checkbox" name="checkbox[3]" value="1" >

即。您需要添加缺少的value=""属性

并且如评论中所述

您需要在if(isset($_POST['checkbox'][0])) {

中检查$_FILES

尝试同时打印print_r($_FILES) and print_r($_POST) ...这可以让您了解提交后收到的数据结构

你可以循环遍历file_uploaded数组,然后检查是否设置了相关的checbox索引。

答案 1 :(得分:1)

您需要的循环应该像这样组织:'对于$_FILES['file_upload']数组的每个元素,检查$_POST['checkbox']的相应(具有相同索引)元素。例如:

if (empty($_FILES['file_upload'])) { ... process 'no files sent' case ... }

$files_total = count($_FILES['file_upload']);

for ($i = 0; $i < $files_total; ++$i) {
  if ( $_FILES['file_upload'][$i] && !empty( $_POST['checkbox'][$i] ) ) {
    // .. do something
  }
  else {
    // .. do something else
  }
}