在HTML下拉列表中动态设置所选选项 - PHP

时间:2012-11-27 04:06:10

标签: php html

我知道有一些例子徘徊在HTML选项标签中动态设置所选标签的问题,但我在我想要完成的事情中遇到一个非常困难的break语句和引用问题。

while($info = mysql_fetch_array($companydesc)) 
{
$output3 .= '<option value="'. $info['company_code'] . if ($result['company']==$info['description']){echo 'selected=\"selected\"'} . '">' . $info['description'] . '</option>';
}
echo $output3;

我收到的错误是带有if语句的行上的意外T_IF。在那里加上if语句是不合法的吗?或者是做适当休息的问题?任何帮助将不胜感激(并希望代码的格式化工作)

3 个答案:

答案 0 :(得分:1)

使用三元声明:

while($info = mysql_fetch_array($companydesc)) {
    $output3 .= '<option value="'. $info['company_code'].'"'.($result['company']==$info['description'] ? ' selected=\"selected\"' : '') . '>' . $info['description'] . '</option>';
}
echo $output3;

答案 1 :(得分:0)

是的,这是非法的,我的建议是:

while($info = mysql_fetch_array($companydesc))
{
  if($result['company']==$info['description'])
  {
    $output3 .= '<option value="' . $info['company_code'] . '" selected = selected>' . $info['description'] . '</option>';
  }
  else
  {
    $output3 .= '<option value="' . $info['company_code'] . '">' . $info['description'] . '</option>';
  }
}
echo $output3;

答案 2 :(得分:0)

尝试使用个人解决方案以最初的方式修复所有内容,例如

    while($info = mysql_fetch_array($companydesc)) 

是,我觉得,其中一个重要的事情就是让PHP恢复,并最终使代码难以维护,尽管在学习曲线上非常容易。

此功能采用可选的选定参数,并构建您的选择框。这比使用自己的自定义代码为每个查询执行每个选择框要好得多。

这里可能存在语法错误,但通常是

    function selectBox($array, $selected=false){
        foreach($array as $name => $value){
            $options .= '
                <option value=" . $name . '"'
                . ($selected != false && $selected == $value) ? 'SELECTED' : '' 
                . '>".$name."</option>"; 
       }
   } 

值得一提的是,select框要求你传递一个预定义的key =&gt;值对数组,所以你需要有一个额外的帮助函数(你不能只是将它传递给你的数据库返回)

另外值得一提的是,使用mysql_fetch_array($companydesc)并不是抽象数据库级别。这样的代码将禁止迁移到Postgres或完全不同的数据库系统。