我正在使用此代码从数据库中重新填充下拉列表:

      $city_id = 15;
  while($row = mysql_fetch_assoc($result)) {
          $selected = ($row['city_id'] == $city_id) ? 'selected="selected" ' : NULL;
          echo '<option value="'.$city_id .$selected . '">"'.$row['city_name'].'"</option>\n';

  }

它的工作就像一个魅力,但我的问题是,它们是不是更优雅的解决方案?

最佳答案

我总是使用一个函数,因为选择框是我最终创造了很多…

function select($name, $default, $values, $style='', $param='') {
        $html = '<select name="'.$name.'" style="'.$style.'" '.$param.' >';
        foreach($values as $i => $data) {
            if (isset($data['noFormat'])) {
                $html .= '<option value="'.$data['value'].'" '.(($data['value']==$default)?'SELECTED="SELECTED"':'').' '.
                         (isset($data['style']) ? ' style="'.$data['style'].'" ' : '').'>'.$data['text'].'</option>';
            } else {
                $html .= '<option value="'.htmlentities($data['value']).'" '.(($data['value']==$default)?'SELECTED="SELECTED"':'').' '.
                         (isset($data['style']) ? ' style="'.$data['style'].'" ' : '').'>'.htmlentities($data['text']).'</option>';
            }
        }
        $html .= '</select>';
        return $html;
    }

然后循环查询以生成如下数组:
$default[] = array('value' => '0',   'text' => 'Select a City...');
while($row = mysql_fetch_assoc($result)) {
    $list[] = array('value' => $row['city_id'], 'text' => $row['city_name']);
}
$list = array_merge($default,$list);

最后是一个创建html的示例:
select('select','form_el_name',$list['0'],$list,'font-size:12px;','onChange="document.forms[0].submit();"');

希望有帮助!

10-07 13:50