2013-08-16 38 views
0
<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个问题:未定义指数复选框

  1. 可以说,我希望每一个复选框被选中,然后当我按下提交,它给了我undefined index $admin,怎么我能解决这个问题吗?

    当我检查至少一个盒子并将值传递给POST数组时,它工作正常。

  2. 其次,我想知道这是一个很好的方法来实现结果,或者我们可以有其他的方式吗?就我个人而言,我感觉很糟糕,因为如果我有1000条记录,那么它会花费很多时间逐一更新2个查询。

结果:我想是非常简单的检查框应具有价值= 1,其中为选中有0

+0

我最好用更新查询困惑,首先你将所有条目管理员0,那么你指定管理员设置为1,为什么我的路不只是更新用单个查询更改的那些? – Prix

+0

**不要**使用mysql_ *函数,它们不推荐使用,而是使用mysqli或PDO。另外,请确保在将所有请求参数插入到查询中(或仅使用准备好的语句) – BackSlash

+0

for $ $ admin',您可以将其添加到'if'如if(isset($ _ POST ['admin']) ,$ _POST ['submit'])){' – 2013-08-16 02:46:58

回答

0

表单提交时,复选框不包含在POST数据中。在您尝试使用它之前,您需要拨打isset($_POST['admin'])

另外,在旁注中,您需要查看非弃用的mysqli函数或PDO。 mysql_ *函数已被弃用,并将被删除。

0

复选框只有通过价值与当他们检查,如果你的表格是形式提交时没有选中复选框,那么将导致$_POST['admin']未关联。您需要使用isset($_POST['admin']);来测试此密钥的存在。

+0

我怎样才能将默认值设置为0?未检查的框? –

0

您可以尝试在你的选择

<option value="the_value_of_option" <?php if(isset($_POST['something']) && ($_POST['something'] == 'the_value_of_option')){echo "selected";}?> >Label of option</option> 

编码快乐