我试图检查选中的复选框,并根据选中的复选框执行文件删除。对我来说,似乎他们总是有价值,即使他们没有检查我是否得到了价值" .."在复选框中。我目前删除了复选框中的值,似乎没有任何区别。
每个复选框都有一个唯一的编号,同时它应该删除的文件具有与文件名相同的索引作为数据。但它从来没有看到任何复选框甚至被检查..没有错误,只是没有做任何事情..请帮助
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;
}
}
}
?>
答案 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)
每个表单都提交自己的变量,并且您正在尝试创建多个表单。您只在该单个表单中提交删除变量。您需要在循环之前使用操作和方法回显表单开始标记(没有带有每个复选框/文件的新表单标记),并且只需要在循环之后删除/提交按钮和表单结束标记。