我正在创建一个管理面板....管理员的一个特权就是他可以删除注册用户...... 这是我的代码,用于显示存储在数据库中的用户:
<h2>Select users to remove</h2>
<form method="post" action="user_deleted.php">
<?php
$qry_cam=mysql_query("SELECT* FROM login ORDER BY login.id",$con);
while($row=mysql_fetch_array($qry_cam))
{
echo"<input name='users' type='checkbox' value='".$row['id']."' /><span style='color:#000fff;'>$row[user]<br /></span>";
}
?>
<input type="submit" value="submit" />
以下是user_deleted.php页面的代码,该页面将删除复选框选中的用户:
<?php
$delete_id = $_POST['users'];
$id = count($delete_id );
if (count($id) > 0)
{
while ($delete_id)
{
$sql = "DELETE FROM login WHERE id='$delete_id'";
$delete = mysql_query($sql);
$delete_id--;
mysql_query("alter table login auto_increment = 1;");
}
}
if($delete)
{
echo "Records deleted Successfully.";
}
?>
现在我遇到的问题是,当我按照像user1 user2 user3等序列从上到下选择用户时,它工作正常......但是当我随机选择即user3 user1 user2 user5 user8等时,并单击提交按钮...它删除数据库中的所有用户..即使我选择了user3,它也会再次删除所有其他用户...我正在尝试但我不知道是什么问题..需要你帮助的人......谢谢
答案 0 :(得分:1)
您必须在users[]
属性中使用name
作为复选框输入。
<input name='users[]' type='checkbox' value='<?= $row['id']; ?>' />
然后,在你的PHP中:
$delete_id = implode(", ", $_POST['users'] ); // if the id is numerical.
$sql = "DELETE FROM `tableName` WHERE `id` IN( $delete_id )";
答案 1 :(得分:0)
您可以使用输入数组。基本上你必须像这样命名你的复选框:
echo"<input name='users[]' type='checkbox' value='".$row['id']."' /><span style='color:#000fff;'>$row[user]<br /></span>";
如您所见,name属性具有数组形式。这样,您可以将$_POST['users']
视为数组(而不是单个字符串)。
尝试查看PHP文档:http://www.php.net/manual/en/faq.html.php#faq.html.arrays
关于mysql_
功能:
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 2 :(得分:0)
try this code.
<?php
echo"<input name='users[]' type='checkbox' value='".$row['id']."' /><span style='color:#000fff;'>$row[user]<br /></span>";
if(isset($_GET['delete']))
{
@$deleteCb = $_REQUEST['user'];
for($i=0;$i<count($deleteCb);$i++)
{
@$news_id = $deleteCb[$i];
@$q = "delete from subscribe where id= ".$news_id;
@$yes=mysql_query($q);
}
if($yes)
{
?>
<script type="text/javascript">
window.location='subscriber.php';
</script>
<?php
}
}
?>
答案 3 :(得分:0)
<h2>Select users to remove</h2>
<form method="post" action="user_deleted.php">
<input name="users" value="1" type="checkbox" />
<input name="users" value="2" type="checkbox" />
<input name="users" value="3" type="checkbox" />
<input type="submit" value="submit" />
</form>
<?php
if (isset($_POST['users'])) {
$delete_id = $_POST['users'];
echo print_r($delete_id, true);
}
?>
在此代码中,$ _POST ['users']只返回 ONE 值,该值将是最后一个复选框的值。 (如果用户选中复选框1和复选框3,则$ _POST将返回值为3的复选框。)
虽然
<h2>Select users to remove</h2>
<form method="post" action="user_deleted.php">
<input name="users[]" value="1" type="checkbox" />
<input name="users[]" value="2" type="checkbox" />
<input name="users[]" value="3" type="checkbox" />
<input type="submit" value="submit" />
</form>
会使$ _POST ['users']返回一组已选中的复选框。
您可以使用以下内容替换您的PHP代码:
if (isset($_POST['users'])) {
$delete_id = implode(", ", $_POST['users'] );
$query = "DELETE FROM `login` WHERE `id` IN( $delete_id )";
mysql_query($query);
}
如果选中复选框1和2,则像[0] =&gt;这样的数组1 [1] =&gt; 2将被退回。
(错误处理,验证输入等不包含在此编码中,如前所述,应使用PDO或mysqli代替mysql函数)。