根据db值选择下拉列表值

时间:2012-09-23 13:04:29

标签: php

如果值与数据库中的值相对应,我希望选择下拉列表中的项目。

到目前为止,这是我的代码......

$hardware_type = $row['type'];

//pull names from hardware types from databse
$sql = "SELECT * FROM s_num_serialz_types ORDER BY type ASC";
$result = $mysqli->query($sql) or die($mysqli->error.__LINE__);
$type_dropdown = '<select id="serial_type" class="accounts_input_dropdown" type="text" name="serial_type" selected="'.$_POST['serial_type'].'"/><option></option>';
while($row = mysqli_fetch_assoc($result)){
    if($row['type'] != $hardware_type){
    $type_dropdown .= "\r\n<option value='{$row['type']}'>{$row['type']}</option>";
    }else{
        $type_dropdown .= "\r\n<option value='{$row['type']} selected=\"selected\">{$row['type']}</option>";
    }
}
$type_dropdown .= "\r\n</select>";

我已经尝试了几种编写此代码的方法,似乎没有一种方法可行。我第一次尝试......

while($row = mysqli_fetch_assoc($result)){
    if($row['type'] == $hardware_type){
    $type_dropdown .= "\r\n<option value='{$row['type']} selected=\"selected\">{$row['type']}</option>";
    }else{
        $type_dropdown .= "\r\n<option value='{$row['type']}'>{$row['type']}</option>";
    }
}

这会在列表中选择正确的项目,但包含此列表的表单的其余部分不会显示。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

第一次尝试中的

value='{$row['type']}(第二个代码示例)缺少关闭单引号以关闭value属性值 - 这可能足以让浏览器退出在该元素之后呈现表单。< / p>

value='{$row['type']}'

答案 1 :(得分:0)

你这里有一个错字

<option value='{$row['type']}

缺少结束'。你也在混合单引号和双引号,这不是标准的最佳选择。

我建议你这个紧凑版本:

while($row = mysqli_fetch_assoc($result)){
    $selected = ($row['type'] == $hardware_type) ? " selected='selected'" : '';
    $type_dropdown .= "\r\n<option value='{$row['type']}'$selected>{$row['type']}</option>";
}