<form method="POST" action="<?php $_SERVER['PHP_SELF']; ?>">
<table border="1" cellpadding="4">
<tr>
<th>Id</th>
<th>Name</th>
</tr>
<?php
include('connect.php');
$getQuery = "SELECT id,username,admin FROM tutorial_users ORDER BY id ASC";
$getResult = mysql_query($getQuery) or die("Query not executed");
while (list($id, $userName, $admin) = mysql_fetch_row($getResult)) {
?>
<?php
$checked = ($admin == 1) ? 'checked="checked"' : '';
?>
<tr align="center">
<td><?php echo $id; ?></td>
<td><?php echo $userName; ?></td>
<td><?php echo "<input type='checkbox' name='admin[]' value='$id' $checked>"; ?></td>
<?php } ?>
<tr>
</table>
<p>
<input type="submit" name="submit" value="Update Role">
</p>
</form>
<?php
$updated = FALSE;
if (isset($_POST['submit'])) {
$admin = $_POST['admin'];
$admin = join(",", $admin);
$admin = "(" . $admin . ")";
$defaultQuery = "UPDATE tutorial_users SET admin=0";
$defaultResult = mysql_query($defaultQuery);
$upQuery = "UPDATE tutorial_users SET admin=1 WHERE id IN $admin";
echo $upQuery;
$upResult = mysql_query($upQuery);
$updated = TRUE;
}
?>
在上面的代码中,我有2个问题:未定义指数复选框
可以说,我希望每一个复选框被选中,然后当我按下提交,它给了我
undefined index $admin
,怎么我能解决这个问题吗?当我检查至少一个盒子并将值传递给POST数组时,它工作正常。
其次,我想知道这是一个很好的方法来实现结果,或者我们可以有其他的方式吗?就我个人而言,我感觉很糟糕,因为如果我有1000条记录,那么它会花费很多时间逐一更新2个查询。
结果:我想是非常简单的检查框应具有价值= 1,其中为选中有0
我最好用更新查询困惑,首先你将所有条目管理员0,那么你指定管理员设置为1,为什么我的路不只是更新用单个查询更改的那些? – Prix
**不要**使用mysql_ *函数,它们不推荐使用,而是使用mysqli或PDO。另外,请确保在将所有请求参数插入到查询中(或仅使用准备好的语句) – BackSlash
for $ $ admin',您可以将其添加到'if'如if(isset($ _ POST ['admin']) ,$ _POST ['submit'])){' – 2013-08-16 02:46:58