编辑页面上选中了 PHP 复选框


php checkbox checked on edit page

我有 3 个表:

people:
------------------------
peopleID,
firstname
peopletype:
------------------------
peopletypeID,
type
peoplepeopletype (junction table):
------------------------
peopleID,
peopletypeID

在添加表单上一切正常,但是我无法显示为分配的人员类型选中的复选框

这是我的代码。

从人脉类型表中检索数据:

/*PEOPLE TYPE ************* */
    $stmt = $conn->prepare("SELECT * FROM peoplepeopletype WHERE peopleID=?");

    // set parameters and execute
    if ( !$stmt ) { echo "error"; }
    else if ( !$stmt->bind_param('i', $_GET['peopleID']) ) { echo "error";}
    else if ( !$stmt->execute() ) { echo "error"; }
  else {
      $result = $stmt->get_result();
      while($row = $result->fetch_assoc()) {
          $peopletypeIDfromdb = $row ['peopletypeID'];
          echo $peopletypeIDfromdb; /*echo only for test purposes, but I don't know how to use this in the form */
      }  
  } /* end else */

显示复选框 :

 <?php /*retrieve peopletype from db */     
 $sql = "SELECT * from peopletype";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) { 
    echo '<input required="required" type="checkbox" name="peopletypeID[]" value="' . $row["peopletypeID"] . '"'; 
    if  ($peopletypeIDfromdb = $row["peopletypeID"]) { /*problem is probably here*/
               echo 'checked';
            }
    echo '>' . $row["type"];
}
              ?>

感谢您的帮助!

如果可以将多个类型附加到 1 个人,则需要更改第一个循环以将所有类型存储在数组中。我将它们存储为密钥,以便在将来检查分配给该人的类型中是否存在某种类型的复杂性最小。

$result = $stmt->get_result();
$types = array();
while($row = $result->fetch_assoc()) {
    $types[$row ['peopletypeID']] = 1;
}

然后在第二个循环中使用它:

while($row = $result->fetch_assoc()) { 
    echo '<input required="required" type="checkbox" name="peopletypeID[]" value="' . 
         $row["peopletypeID"] . '" '; 
    if(isset($types[$row["peopletypeID"]]))
    {
         echo 'checked';
    }
    echo '>' . $row["type"];
}