1

我知道有一些例子围绕着在 HTML 选项标签中动态设置选定标签的问题徘徊,但我在尝试完成的工作中遇到了一个非常困难的中断语句和引号问题。

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 语句是不合法的吗?还是做适当休息的问题?任何帮助将不胜感激(希望代码的格式有效)

4

3 回答 3

1

使用三元语句:

while($info = mysql_fetch_array($companydesc)) {
    $output3 .= '<option value="'. $info['company_code'].'"'.($result['company']==$info['description'] ? ' selected=\"selected\"' : '') . '>' . $info['description'] . '</option>';
}
echo $output3;
于 2012-11-27T04:09:04.653 回答
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;
于 2012-11-27T04:12:34.257 回答
0

尝试以您最初打算使用的方式使用单独的解决方案来解决所有问题

    while($info = mysql_fetch_array($companydesc)) 

我认为,这是阻碍 php 并最终使代码极难维护的一大因素,尽管它在学习曲线上非常容易。

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

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

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

值得一提的是,选择框要求您传递一个预定义的 key=>value 对数组,因此您需要一个额外的辅助函数(您不能只将它传递给您的数据库返回)

另外可能值得一提的是 usingmysql_fetch_array($companydesc)根本没有抽象数据库级别。下线,这样的代码将完全禁止迁移到 Postgres 或不同的数据库系统。

于 2012-11-27T05:13:56.780 回答