php填写在动态列表中选中

时间:2012-08-17 13:33:26

标签: php checkbox

我的问题延伸到this post上的答案,我无法找到我要找的内容。

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

3 个答案:

答案 0 :(得分: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开始支持)。如果您不确定使用哪一个,read this article

答案 1 :(得分: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的输入。

答案 2 :(得分: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 />";

}