复选框始终检查PHP / HTML

时间:2015-12-27 17:30:24

标签: php checkbox submit

我试图检查选中的复选框,并根据选中的复选框执行文件删除。对我来说,似乎他们总是有价值,即使他们没有检查我是否得到了价值" .."在复选框中。我目前删除了复选框中的值,似乎没有任何区别。

每个复选框都有一个唯一的编号,同时它应该删除的文件具有与文件名相同的索引作为数据。但它从来没有看到任何复选框甚至被检查..没有错误,只是没有做任何事情..请帮助

how it looks now picture

HTML和php :(我正在处理的文档叫做protected.php)

<form action="protected.php" method="post"><br>

     <input type="submit" name="Delete" value="Delete">

</form>


<?php

echo 'My files';
"<br>";
$mydr = "D:\wamp\www\\";
$dir = $mydr . $_SESSION['userid'];

// Open a directory, and read its contents
$checkbox_gen = 0;
$filename_gen = array();

if (is_dir($dir)){
  if ($dh = opendir($dir)){
    while ((($file = readdir($dh)) !== false)){

        if($file != '.' && $file != '..'){
          echo "<form><input type=\"checkbox\" name=\"$checkbox_gen\" id=\"checkbox\">" . "<a href=\"$dir/$file\">$file</a></form>" . "<br>";
          $filename_gen[$checkbox_gen] = $file;
          $checkbox_gen += 1;
        }
     }

    closedir($dh);
  }
}

?>

<br>
<form action="protected.php" method="post"><br>

    <input type="submit" name="Delete" value="Delete">

</form>

<?php

if(isset($_POST['Delete'])) {

    for($i = 0; $i < 10; $i++){
        if(!empty($_POST[$i])) {
            echo $i . 'is checked';
            //$temp = $dir . '\\' . $filename_gen[$i];
            //unlink($temp);
            echo $temp;
        }

    }
}
?>

3 个答案:

答案 0 :(得分:1)

您正在为每个复选框和提交按钮创建单独的表单。 所以基本上你要提交&#34;提交按钮&#34;表单,当然没有选中复选框,因为它没有任何复选框。

您应该从此行中删除<form>代码:

echo "<form><input type=\"checkbox\" name=\"$checkbox_gen\" id=\"checkbox\">" . "<a href=\"$dir/$file\">$file</a></form>" . "<br>";

而是在循环之外回显它们(同时确保提交按钮的形式相同)。

它应该看起来像这样,我想:

<form action="protected.php" method="post">

<?php

...

if (is_dir($dir)){
  if ($dh = opendir($dir)){
    while ((($file = readdir($dh)) !== false)){

        if($file != '.' && $file != '..'){
            echo "<input type=\"checkbox\" name=\"$checkbox_gen\" id=\"checkbox\">" . "<a href=\"$dir/$file\">$file</a>" . "<br>";
            ...
        }
    }

    closedir($dh);
  }
}

?>

<input type="submit" name="Delete" value="Delete">

</form>

答案 1 :(得分:0)

仅发布选中的复选框,请尝试

print_r($_POST)

并且您将看到带有值的复选复选框,并且不会发布未选中的复选框。希望有所帮助。

答案 2 :(得分:0)

每个表单都提交自己的变量,并且您正在尝试创建多个表单。您只在该单个表单中提交删除变量。您需要在循环之前使用操作和方法回显表单开始标记(没有带有每个复选框/文件的新表单标记),并且只需要在循环之后删除/提交按钮和表单结束标记。