提交后如何使用复选框从数据库中删除数据[关闭]

Posted

技术标签:

【中文标题】提交后如何使用复选框从数据库中删除数据[关闭]【英文标题】:How to use checkbox to delete data from database after submit [closed] 【发布时间】:2015-08-14 13:37:22 【问题描述】:

所以我正在制作这个网站,并在我的数据库中获得了一些数据。使用 php 将数据自动读取到表中。每个表格行也会自动获得一个复选框。现在我想选中复选框,然后按删除,它将检查的数据从数据库中删除。有什么想法吗?

这是我的代码:

<table  border="1" cellpadding="1" cellspacing="1">
<tr>
<th>Username</th>
<th>Paswoord</th>
<th>Delete</th>
</tr>
<?php
while($user = mysql_fetch_assoc($records))
  echo "<tr>";
  echo "<td>".$user['UserName']."</td>";
  echo "<td>".$user['Pass']."</td>";
  echo "<td> <input type='checkbox' name='checkbox' value='checked'</td>";
  echo "</tr>";

?>
</table>
<form method= "POST" action="deleteuser.php">
<input type="submit" name="delete" value="DELETE USERS">
</form>

这是我删除 user.php 中的代码

$checked = $_POST['checkbox'];

if($_POST['checkbox'] == "checked")
echo "SUCCEEEEEEES";

【问题讨论】:

Inserting checkbox values into database的可能重复 【参考方案1】:

有几点需要注意;

&lt;form&gt; 标签的语法和正确书写方式。 使用&lt;form&gt; 中的&lt;input&gt; 字段。 传递checkbox[] 数组,而不是单个checkbox

你的代码

<form method= "POST" action="deleteuser.php">
<table  border="1" cellpadding="1" cellspacing="1">
<tr>
<th>Username</th>
<th>Paswoord</th>
<th>Delete</th>
</tr>
<?php
while($user = mysql_fetch_assoc($records))
  echo "<tr>";
  echo "<td>".$user['UserName']."</td>";
  echo "<td>".$user['Pass']."</td>";
  echo "<td> <input type='checkbox' name='checkbox[]' value='checked'</td>";
  echo "</tr>";

?>
</table>
<input type="submit" name="delete" value="DELETE USERS">
</form>

PHP

而不是使用这个;

if($_POST['checkbox'] == "checked")
echo "SUCCEEEEEEES";

?>

使用这个;

<?php
    foreach($_POST['checkbox'] as $val)
    
       echo $val . " this should be deleted";
    
?>

【讨论】:

这成功了!非常感谢 我可以在 foreach 循环中与我的数据库建立连接,否则会很糟糕吗?查询的相同问题 不,最好在一个单独的文件中建立连接并将其保存为config.php,然后在您的php开头包含/要求该文件,如require('config.php'); 好的,最后一个问题。如果我知道要删除链接到复选框的数据库值?我该怎么做? 对不起,我不能不看代码就知道,但我的猜测是取一个复选框的值,然后使用该值删除数据库中的记录。 $uname = $user['UserName']; &lt;input type='checkbox' name='checkbox[]' value='&lt;?php echo $uname; ?&gt;'&lt;/td&gt; 之类的东西,然后使用 $uname 删除 php 中的记录。【参考方案2】:

这就是我经常做的事情:-

对您的 while 循环进行这些更改。

<?php
$c=0;
while($user = mysql_fetch_assoc($records))
  $c++
  echo "<tr>";
  echo "<td>".$user['UserName']."</td>";
  echo "<td>".$user['Pass']."</td>";
  echo "<td> <input type='checkbox' name='checkbox-$c' value='checked'</td>";
  echo "</tr>";


echo "<input type='hidden' name='total' value='$c'>";
?>

deleteuser.php(通过 for 循环访问此处的所有复选框)

<?php
for($i=1;$i<=$_POST['total'];$i++)

    if($_POST['checkbox-$i'] == "checked")
    
        //commands for delete
    

?>

【讨论】:

如果我使用你的 echo "input type='hidden' name='total'... 我丢失了删除按钮并且它不起作用 我想确保在我选中复选框并按下删除按钮后,这些项目将从我的数据库中删除 @user5227574 这不应该发生,我只是更改了复选框的name。你能把你的文件上传到某个地方吗? we.tl/99Ox9qbqd4 这是一个 WeTransfer 链接,因此您可以下载 .zip 文件!非常感谢! 出于安全原因,我无法下载 zip 文件。将其上传到您的服务器上。【参考方案3】:

将复选框的名称从 checkbox 重命名为 checkbox[]。现在你得到一个数组而不是一个字符串。 然后将 value-attribute 设置为表中您行的 ID(主键或您需要删除它们的其他内容)

echo "<td> <input type='checkbox' name='checkbox[]' value='".$user["UserID"]."'</td>";

现在您可以在 PHP 中迭代它们

foreach ($_POST["checkbox"] as $value)
    // ..Delete FROM ... where userID = $value

【讨论】:

不起作用。你的 foreach 中已经有错误 哦是的 ^_^ PHP 使用 as 然后 in- 修复我的 Artikel 但你也犯了一个大错误。你必须在&lt;Form-Tag 中设置&lt;input-Field !!要检查你得到的值,试试这个:var_dump($_POST);

以上是关于提交后如何使用复选框从数据库中删除数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在Django中,提交表单2后如何保留表单数据?

如何使用telerik radgridview C#中的复选框从数据库中删除记录

关闭视图后如何保持集合视图单元格的状态?

jQuery - 无法从复选框中删除选中的属性

在laravel中发布请求后如何重定向回上一页?

快速访问的内容出现在了桌面上如何去掉?