Php 从数据库填充下拉列表

Php 从数据库填充下拉列表,php,database,forms,Php,Database,Forms,我正在使用此代码从数据库中重新填充下拉列表: $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['ci

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

      $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';

  }
它的工作很有魅力,但我的问题是它们是更优雅的解决方案吗?

除了改进代码的缩进,这很好

$city_id = 15;
while($row = mysql_fetch_assoc($result))
{ 
    $selected = ($row['city_id'] == $city_id) ? ' selected="selected"' : NULL;
    echo '<option value="' . $row['city_id']. '"' . $selected . '>'.$row['city_name'].'</option>\n';
}
mysql\u fetch\u关联到mysql\u fetch\u数组 添加适当的注释 使用标准php类或


一个更优雅的解决方案是使用一个控制器文件来获取所有城市,然后将它们放入数组/对象列表/任何东西中。然后,在视图文件中,迭代该变量。这样,您就可以从逻辑中分离出更多的表示

鉴于:

<select name=student value=''>Student Name</option>
    <?php foreach($cities as $city): ?>
        <option value="<?php echo $city->id ?>" ><?php echo $city->name ?></option>
    <?php endforeach; ?>
</select>

另外,我强烈建议使用for DB access。

我总是使用一个函数,因为选择框是我最终创建的很多东西

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;                 
    }
最后是一个创建HTML的示例:

select('select','form_el_name',$list['0'],$list,'font-size:12px;','onChange="document.forms[0].submit();"');

希望有帮助

echo部分有两个输入错误:不是$city\u id而是$row['city\u id',然后将所选部分放入值中。顺便说一句,你不能用一种更优雅的方式来做这件事。这和我所做的差不多,也是我将要提交的解决方案。谢谢。我不认为回音可以被称为优雅。不管怎样,更优雅的做法是使用一个合适的框架。谁否决了被接受的答案,并且没有留下评论?
$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);
select('select','form_el_name',$list['0'],$list,'font-size:12px;','onChange="document.forms[0].submit();"');