提交后如何使用复选框从数据库中删除数据[关闭]
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】:有几点需要注意;
<form>
标签的语法和正确书写方式。
使用<form>
中的<input>
字段。
传递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']; <input type='checkbox' name='checkbox[]' value='<?php echo $uname; ?>'</td>
之类的东西,然后使用 $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
但你也犯了一个大错误。你必须在<Form
-Tag 中设置<input
-Field !!要检查你得到的值,试试这个:var_dump($_POST);
以上是关于提交后如何使用复选框从数据库中删除数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章