HTML <select option =“”selected =“selected”>将无法使用PHP函数</select>

时间:2011-12-03 05:38:52

标签: php html function html-select

我想显示带有所选选项的标记,该标记来自数据库。 这是我的代码:

<?
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”)。

4 个答案:

答案 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;
?>