我想显示带有所选选项的标记,该标记来自数据库。 这是我的代码:
<?
function check($opt) {
if ($rows['fa'] = $opt) {
echo " selected='selected'";
}
}
echo $fa;
?>
<select name="opt" id="opt">
<option value="o1"<? check('o1'); ?>>Option1</option>
<option value="o2"<? check('o2'); ?>>Option2</option>
</select>
问题是该函数不适用于$ rows ['$ fa'],如果我只输入“o1”或“o2”,它就可以工作。 如果我回显$ fa,它会从数据库中得到结果(“o1”或“o2”)。
答案 0 :(得分:1)
(假设已经定义$rows
)。
您正在使用=
来比较变量,这些变量无效。 =
分配。您正在寻找==
:
function check($opt) {
if ($rows['fa'] == $opt) {
echo " selected='selected'";
}
}
另外,请尝试在数组索引中使用$fa
而不是'fa'
。我不确定这是不是你指的是:
function check($opt) {
if ($rows[$fa] == $opt) {
echo " selected='selected'";
}
}
答案 1 :(得分:1)
$rows['fa']
在函数之外定义,在函数作用域中没有值
其他变化: -
selected('o1', $row['fa']);
function selected($opt, $val)
{
if ($opt == $val)
{
echo " selected='selected'";
}
}
答案 2 :(得分:0)
<select name="opt" id="opt">
<option value="o1"<? if($rows['fa'] == 'o1') ?> selected='selected'<? endif ?>>Option1</option>
<option value="o2"<? if($rows['fa'] == 'o2') ?> selected='selected'<? endif ?>>Option2</option>
</select>
答案 3 :(得分:-1)
如果行的数据在$ fa上,设置为全局,请注意范围,比较(==):
<?
function check($opt) {
global $fa;
if ($fa == $opt) {
echo " selected='selected'";
}
}
echo $fa;
?>