检索特定用户的复选框状态

时间:2015-02-12 09:37:45

标签: php sql checkbox foreach

我目前在如何解决这个问题上遇到了一些问题:

我有2个表:users和user_project。对于每个项目(另一个表),负责项目的用户都存储在user_project表中。

现在我知道如何格式化输入的数据,并将所有内容存储在表格中,但我仍然坚持编辑项目。我一直坚持如何检查每个用户是否与项目相关联。

我应该得到一个这样的列表:

user 1: [ ]
user 2: [ ]
user 3: [x]
user 4: [ ]
user 5: [x]
user 6: [ ]

这就是我至少要让负责的用户:

$sql = mysql_query("SELECT * FROM `users`");

        while ($row = mysql_fetch_array($sql)) {

            $sql2 = mysql_query("SELECT * FROM `user_project` WHERE `uid` = '". $row['id'] ."' AND `pid` = '". $pid ."'");

            while ($row2 = mysql_fetch_assoc($sql2)) {

                if ($row['id'] == $row2['uid']) {

                    echo '<input name="assignee[]" type="checkbox" value="'. $row['id'] .'" checked="checked"><span class="smaller">'. $row['email'] .'</span><br>';

                }

            }

        }

1 个答案:

答案 0 :(得分:0)

你可以这样做:

    $sql = mysql_query("SELECT * FROM `users`");

    while ($row = mysql_fetch_array($sql)) {

        $sql2 = mysql_query("SELECT count(*) FROM `user_project` WHERE `uid` = '". $row['id'] ."' AND `pid` = '". $pid ."'");

        $row2 = mysql_fetch($sql2);

        // Is the user assigned? 

        if (($row2 !== false) && ($row2[0] > 0)) {
           // Yes he is
          echo '<input name="assignee[]" type="checkbox" value="'. $row['id'] .'" checked="checked"><span class="smaller">'. $row['email'] .'</span><br>';
        }

        else { 
           // No he is not 
           echo '<input name="assignee[]" type="checkbox" value="'. $row['id'] .'"><span class="smaller">'. $row['email'] .'</span><br>';
        }


    }

对于每个用户,您可以选择分配数量。这应该是0或1.有更优雅的解决方案(如使用@gontrollez建议的连接),但这应该做的伎俩,只是你想出的一点点变化