0

我的问题延伸到这篇文章的答案,我找不到我正在寻找的其他内容。

当从 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 />
4

3 回答 3

1

假设您的颜色存储在一个数组中,并且您的数据以数组形式返回(如果您使用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 开始支持)。如果您不确定要使用哪一个,请阅读这篇文章

于 2012-08-17T13:36:51.580 回答
0

您需要检查几件事。如果有人已经尝试提交表单,那么他们的回复将是$_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 的输入。

于 2012-08-17T13:38:39.130 回答
0
while ($row = mysql_fetch_assoc($comm)){
    foreach ($row as $v){
        $comms = $v;
        }
}

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

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

}

于 2012-08-17T13:39:33.557 回答