HTML不适用于PHP函数

HTML不适用于PHP函数,php,html,function,html-select,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'); ?>>Option

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

<?
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、oro2。

假设已经定义了$rows

您正在使用=来比较变量,这将不起作用分配。您正在寻找==:

另外,尝试在数组索引中使用$fa而不是'fa'。我不确定这是否是您所指的:

function check($opt) {
  if ($rows[$fa] == $opt) {
    echo " selected='selected'";
  }
}
$rows['fa']是在函数外部定义的,函数范围中没有值

其他变化:-

selected('o1', $row['fa']);

function selected($opt, $val)
{
  if ($opt == $val)
  {
    echo " selected='selected'";
  }
}

如果行数据在$fa上,设置为全局,请注意范围,比较==:

<?
function check($opt) {
   global $fa;
   if ($fa == $opt) {
      echo " selected='selected'";
   }
}
echo $fa;
?>

什么是$fa?它是在哪里定义的?我已经定义了$rows,但在函数之外,这就是它不起作用的原因。谢谢你的帮助!您在哪里定义$rows?$sql=从id='$id'的表中选择*$result=mysql\u query$sql$rows=mysql\u fetch\u assoc$result;我想你应该检查一下:我敢编辑你的代码,让它更通用。我怀疑它在如此本地化的版本中是否有任何意义。我不喜欢当老板:我只是无法让自己停止思考。我刚刚取代了OP的位置,意识到我可以使用这样一个模板助手,但是如果它是一个通用的模板助手,那么它对所有代码来说都是通用的。这是真的,但我不认为OP正在使用任何类型的框架,或者太懒了,无法为表单元素构建这样的函数。我们不是每天都要处理表单提交吗?就是这样,$rows['fa']是在函数外部定义的。现在它工作了!非常感谢。酷,它工作了!使用global,我不需要定义函数中的所有变量。太棒了,谢谢!这确实有效,而且效果很好。如果我有更多的选项,代码就有点太多了。如果你有更多的选项,你只需要调用这个代码一次,因为它应该通过数组的循环来打印
selected('o1', $row['fa']);

function selected($opt, $val)
{
  if ($opt == $val)
  {
    echo " selected='selected'";
  }
}
<?
function check($opt) {
   global $fa;
   if ($fa == $opt) {
      echo " selected='selected'";
   }
}
echo $fa;
?>