HTML <select> <option>默认基于MySQL数据</option> </select>

时间:2013-06-12 22:13:29

标签: php html mysql html-select

我有一个简单的库存数据库,在input_data表单上,其中一个输入字段是字段,如下所示:

<select>
    <option>In Inventory</option>
    <option>In Process</option>
    <option>Shipped/in-transit</option>
    <option>Received by recipient</option>
</select>

例如,如果我使用“处理中”输入数据,稍后我想更新该数据。我的update_page.php文件中的默认值返回“In Inventory”。我希望看到“正在处理”值。

以下是我的update_page.php中的非工作代码的片段:

<select name="status" value="<?php echo $row['status']; ?>">
    <option>In Inventory</option>
    <option>In Process</option>
    <option>Shipped/in-transit</option>
    <option>Received by recipient</option>
</select>

4 个答案:

答案 0 :(得分:6)

选择HTML中没有值属性 - 您可以选择多个选项,这由选项元素上的selected属性确定

迷茫的方式:

<select name="status">
    <option<?php if ($row['status'] == "In Inventory"): ?> selected="selected"<?php endif; ?>>In Inventory</option>
    <option<?php if ($row['status'] == "In Process"): ?> selected="selected"<?php endif; ?>>In Process</option>
    <option<?php if ($row['status'] == "Shipped/in-transit"): ?> selected="selected"<?php endif; ?>>Shipped/in-transit</option>
    <option<?php if ($row['status'] == "Received by recipient"): ?> selected="selected"<?php endif; ?>>Received by recipient</option>
</select>

稍微好一点的方法:

 <?php
      $options = array("In Inventory", "In Process", "Shipped/in-transit", "Received by recipient");
 ?>

 <select>
     <?php foreach ($options as $option): ?>
         <option value="<?php echo $option; ?>"<?php if ($row['status'] == $option): ?> selected="selected"<?php endif; ?>>
             <?php echo $option; ?>
         </option>
     <?php endforeach; ?>
 </select>

最好的方法 - 将这些选项存储在数据库表中 - 可能更好地使用ID值而不是字符串(允许更容易地更新选项标签)并循环使用像我上面的数据库查询那样的可能选项。如果大量使用此选择列表,请缓存查询结果以获取选项(请记住,如果列表更新,则需要清除缓存)

答案 1 :(得分:0)

每个选项都有其对应的值而不是select标签。因此,您必须将每个选项的值与状态进行比较。

答案 2 :(得分:0)

如果是所选的那个,你必须检查每一个,例如这个,例如:

<option <?php if ($row['status'] == 'In Process') echo 'selected'; ?>>In Process</option>

如果你使用jQuery,你可以做一个更简洁的解决方案,在你的情况下给你的select标签一个id,然后:

$(document).ready(function() {
    $('#select-id option:contains("<?php echo $row['status']; ?>")').prop('selected', true);
});

答案 3 :(得分:0)

我发现的更简单的代码,只使用JavaScript(不需要jQuery)。在声明列表框之后立即放置并在那里设置所选索引:

<script>
document.getElementById('listBoxId').selectedIndex=<?php echo $INDEX ?>;
</script>