我的问题延伸到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 />
答案 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 />";
}