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

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

这是我的代码:

<table width="600" 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";
}

【问题讨论】:

标签: php mysql checkbox


【解决方案1】:

有几点需要注意;

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

你的代码

<form method= "POST" action="deleteuser.php">
<table width="600" 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);
猜你喜欢
  • 2017-11-26
  • 2014-05-27
  • 1970-01-01
  • 2022-11-01
  • 2019-09-16
  • 2012-02-10
  • 1970-01-01
  • 2015-11-13
  • 2015-03-18
相关资源
最近更新 更多