PHP 填写在动态列表中选择


php filling in selected in a dynamic list

我的问题扩展了这篇文章的答案,否则我找不到我正在寻找的内容。

从 mySQL 表(动态)中提取选项时,如何在复选框列表中自动选择(选中)选项?

这是我到目前为止所拥有的:

从表格中拉出委员会(通信):

while ($row = mysql_fetch_assoc($comm)){
    foreach ($row as $v){
        $comms[] = $v;
        }
}

使用整洁的PHP输出漂亮的HTML(我需要帮助的部分):

    foreach ($comms as $comm){
       ?????????
    }

我怎样才能输出类似的东西?

<input type="checkbox" name="committee" value="blue" checked="checked" />blue<br />
<input type="checkbox" name="committee" value="green"  />green<br />
<input type="checkbox" name="committee" value="orange"  />orange<br />
<input type="checkbox" name="committee" value="purple" checked="checked" />purple<br />

假设您的颜色存储在数组中,并且您的数据以数组的形式返回(如果您使用 mysql_* 函数,则可能不是这种情况),您可以打印出每个复选框,然后比较其值以查看它是否在"选中"颜色列表中:

<?php
$colors = array('blue', 'green', 'orange', 'purple');
$data = array('blue', 'purple');//array pulled from database.
foreach($colors as $color): ?>
    <input type="checkbox" name="committee" value="<?= $color ?>" <?= in_array($color, $data) ? 'checked="checked" ' : '' ?>/><br />
<?php endforeach; ?>

顺便说一下,您应该停止使用mysql_*函数。它们正在被弃用。而是使用 PDO(从 PHP 5.1 开始支持)或 mysqli(从 PHP 4.1 开始支持)。如果您不确定要使用哪一个,请阅读本文。

您需要检查几件事。如果有人已经尝试提交表单,那么他们的回复将是$_REQUEST$_POST$_GET,具体取决于表单的提交方式);然后,您可以将每一行写为:

<input type="checkbox" name="committee[]" value="green" <?php if ($_REQUEST['committee'] == 'green') { echo "checked"; } ?> />green<br />

如果它来自数据库,您可以签入$comms"

<input type="checkbox" name="committee[]" value="green" <?php if (in_array($comms, 'green') { echo "checked"; } ?> />green<br />

您可以通过提前确定是否重新提交,并使用正确位置的结果填充单个数组来使代码更有效率:

<?php
if ([form is submitted]) {
    $comms = $_REQUEST["committee"];
} else {
    $comms = getCommsFromDatabase();
}
?>

这也使您有机会从 _REQUEST 美元开始清理输入。

while ($row = mysql_fetch_assoc($comm)){
    foreach ($row as $v){
        $comms = $v;
        }
}

您可以在其中打印值,假设$v具有属性 已检查

   foreach($coms as $key => $value)
   {
      $checked = "";
      $color = $value['color'];
      if($value['checked'] == 'checked')
      $checked = "checked = 'checked'";
      echo "<input type='checkbox' name='committee' value='$color' $checked />$color<br />";

}