【问题标题】:php checkbox checked on edit pagephp复选框在编辑页面上选中
【发布时间】:2016-01-18 04:02:49
【问题描述】:

我有 3 张桌子:

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

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

peoplepeopletype (junction table):
------------------------
peopleID,
peopletypeID

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

这是我的代码。

从 peoplepeopletype 表中检索数据:

/*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个人可以绑定多个类型吗?
  • @user4035 复选框始终被选中(全部 4 个)即使人员只有 1 个类别。是的,允许更多类型(input required="required" 适用于 jquery)
  • 第一次循环后你var_dump($peopletypeIDfromdb); 了吗? 1个人可以有多种类型吗?
  • @user4035 试过 while($row = $result-&gt;fetch_assoc()) { echo '&lt;input required="required" type="checkbox" name="peopletypeID[]" value="' . $row["peopletypeID"] . '"'; if ($peopletypeIDfromdb = $row["peopletypeID"]) {echo 'checked';} echo '&gt;' . $row["type"]; var_dump($peopletypeIDfromdb); } 不工作...

标签: php checkbox


【解决方案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"];
}

【讨论】:

  • 太棒了!!!有用!!!谢谢!我将研究您的更正以了解更多信息!可能会问第一个循环中$types末尾的=1是什么?
  • @codeispoetry 正在为该键分配任何值以使其定义。
猜你喜欢
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多