【问题标题】:Retrieve checkbox state for certain users检索某些用户的复选框状态
【发布时间】:2015-02-12 18:20:15
【问题描述】:

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

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

                }

            }

        }

【问题讨论】:

  • 您应该使用带有 JOIN 的单个查询。

标签: php sql checkbox foreach


【解决方案1】:

你可以这样做:

    $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 建议的 join),但这应该可以解决问题,并且只是您想出的结果略有不同

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2017-03-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    相关资源
    最近更新 更多