Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在编辑页面上选中php复选框_Php_Checkbox - Fatal编程技术网

在编辑页面上选中php复选框

在编辑页面上选中php复选框,php,checkbox,Php,Checkbox,我有三张桌子: people: ------------------------ peopleID, firstname peopletype: ------------------------ peopletypeID, type peoplepeopletype (junction table): ------------------------ peopleID, peopletypeID 在添加表单上,一切正常,但我无法显示为指定的peopletype选中的复选框 这是我的密码 从

我有三张桌子:

people:
------------------------
peopleID,
firstname

peopletype:
------------------------
peopletypeID,
type

peoplepeopletype (junction table):
------------------------
peopleID,
peopletypeID
在添加表单上,一切正常,但我无法显示为指定的peopletype选中的复选框

这是我的密码

从PeopleType表检索数据:

/*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"];

}
              ?>

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

$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"];
}
while($row=$result->fetch_assoc()){
回显“”。$行[“类型”];
}

有什么问题吗?即使将适当的类型附加到一个人,是否也没有选中任何复选框?是否可以将多个类型附加到一个人?@user4035复选框始终处于选中状态(全部4个),即使该人只有一个类别。是的,允许使用更多类型(input required=“required”与jquery配合使用)您是否
var\u dump($peopletypeIDfromdb)在第一个循环之后?可以有多个类型附加到一个人吗?@user4035在($row=$result->fetch_assoc()){echo'.$row[“type”];var_dump($peopletypeIDfromdb);}
不工作时尝试了
,太好了!!!它工作!!!谢谢我将研究你的更正以了解更多!可能会问第一个循环中$types末尾的is=1是什么?@codeispoetry我只给该键赋值,以定义它。