检索某些用户的复选框状态

Retrieve checkbox state for certain users

我目前有一些关于如何解决这个问题的问题:

我有 2 个 table:用户和 user_project。对于每个项目(另一个 table)负责一个项目的用户存储在 user_project table.

现在我知道如何格式化输入的数据,以及如何将所有内容存储在 table 中,但我仍然停留在编辑项目上。我坚持如何检查每个用户是否链接到项目。

我应该得到这样的列表:

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>';

                }

            }

        }

你可以这样做:

    $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>';
        }


    }

您为每个用户select分配的数量。这应该是 0 或 1。有更优雅的解决方案(比如使用 @gontrollez 建议的连接),但这应该可以解决问题,并且只是您提出的方案的微小变化