我有一个包含删除按钮的表单。我希望用户能够一次选择他们想要删除的所有项目。 我设法显示回声,但项目仍保留在页面上。你能指出为什么会这样吗?任何帮助表示赞赏!
删除按钮:
<input name="del_btn" type="submit" value="Delete">
支票:
if (isset($_POST['del_btn']) && $_POST['del_btn']){
for($i = 0; $i < count($_POST['checkbox']); $i++){
if (isset($_POST['checkbox'])) {
mysql_query("DELETE FROM `posts` WHERE `id` = '" . $_POST['checkbox'][$i] . "' LIMIT 1");
echo 'deleted';
}
}
}
项目'复选框:
<input name="checkbox[]" type="checkbox" id="<?php echo $id; ?>" />
答案 0 :(得分:2)
这实际上取决于控制器中变量的定义方式,以及它们在视图文件中的显示方式。
如果您想要隐藏/清除表单中的值,您可以:
if (isset($_POST['del_btn']) && $_POST['del_btn']){
语句末尾创建一个重定向,将用户重新发送回新页面。<input name="form_input" type="text" value=<?=isset($_POST['del_btn'] ? NULL : $form_input?>>
,这意味着在提交del_btn时表单将显示为NULL。 答案 1 :(得分:0)
当您使用复选框时,您的元素变为数组而不是您可以使用多种方法:
使用ajax(使用jQuery的示例)来避免提交:
<script>
$(document).ready(function() {
$('[name="del_btn"]').click(function() {
$.post('/my/action.php', $('form').serialize(), function(r) {
if (r.success) {
alert('deleted....');
} else {
alert('error');
}
},'json');
return false; // prevent submit
});
});
</script>
您可以使用以下方法简化代码:
<?php
if (isset($_POST['checkbox']) && count($_POST['checkbox'])){
$c = implode(',', array_map('intval', $_POST['checkbox'])); // sanitize data
$r = mysql_query("DELETE FROM `posts` WHERE `id` IN(" . $c .")");
echo json_encode(array('success' => $r));
}
答案 2 :(得分:0)
<input name="checkbox[]" type="checkbox" id="<?php echo $id; ?>" />
我认为你必须加上像
这样的东西<input name="checkbox[]" type="checkbox" value="<?php echo $id; ?>" />
注意“值”而不是“id”。您将ID放在id属性中。如果要获取值,则指定特定目标。 (您可以使用Javascript或JQuery来执行此操作)。
在您的情况下,使用标记“值”确保您的复选框具有正确的ID值。回显查询而不是“已删除”一词。
$queryDel = "DELETE FROM posts WHERE id = " . $_POST['checkbox'][$i] . " LIMIT 1";
echo $queryDel;
如果您使用的是mysql_query(),请注意SQL注入。请改用mysqli。使用预准备语句来阻止它或者至少提供一些白名单或验证。
希望这会有所帮助。谢谢。
答案 3 :(得分:0)
<input name="checkbox[]" type="checkbox" value ="<?php echo $id; ?>" id="<?php echo $id; ?>" />
试试这个它会起作用。并检查值print_r($ _ POST)您将能够看到所有发布值并能够获得正确的值。