从 MySQL 中读取值并比较从 drop-down 列表中选择的选项

Read value from MySQL and compare which option is selected from drop-down list

<select name="title">

<selected value="<?php echo $title; ?>"><?php echo $title; ?></selected>
<option value="Mrs">Mrs.</option>
<option value="Ms">Ms.</option>
<option value="Mr">Mr.</option>
<option value="Dr">Dr.</option>

</select>

我正在尝试从 MySQL 数据库中的 Title 列中读取一个值,它应该读取该值,无论它是 Mr.Ms.Mrs.,然后与drop-down列表中的值进行比较。然后它允许用户 select 另一个标题,然后更新存储在 MySQL 数据库中的标题。

我正在创建用户配置文件。因此,当用户登录并导航到视图以编辑配置文件时,he/she 应显示一个 drop-down 列表,其中包含注册时 he/she selected 的标题。然后,如果 he/she 愿意,他们可以更改 drop-down 列表中的标题并按更新按钮,它现在应该更新为数据库中的新标题。

按以下方式更改您的 <select> 下拉列表,

<select name="title">
    <option value="Mrs"<?php if($title == "Mrs"){ echo " selected='selected'"; } ?>>Mrs.</option>
    <option value="Ms"<?php if($title == "Ms"){ echo " selected='selected'"; } ?>>Ms.</option>
    <option value="Mr"<?php if($title == "Mr"){ echo " selected='selected'"; } ?>>Mr.</option>
    <option value="Dr"<?php if($title == "Dr"){ echo " selected='selected'"; } ?>>Dr.</option>
</select>

没有选择 HTML标签。使用 selected 标签的 option 属性:

selected

If present, this Boolean attribute indicates that the option is initially selected. If the <option> element is the descendant of a <select> element whose multiple attribute is not set, only one single <option> of this <select> element may have the selected attribute.1

因此请考虑 Examples section of the Mozilla Developer Network page for <select> 中的这个示例:

<!-- The second value will be selected initially -->
    <select name="select">
      <option value="value1">Value 1</option> 
      <option value="value2" selected>Value 2</option>
      <option value="value3">Value 3</option>
    </select>

您的示例代码可以类似地更新:

<select name="title">
    <option value="Mrs" <?php if($title=="Mrs"){ echo "selected"; } ?>>Mrs.</option>
    <option value="Ms" <?php if($title=="Ms"){ echo "selected"; } ?>>Ms.</option>
    <option value="Mr" <?php if($title=="Mr"){ echo "selected"; } ?>>Mr.</option>
    <option value="Dr" <?php if($title =="Dr"){ echo "selected"; } ?>>Dr.</option>
</select>

一个更简单的方法是先处理名称,使用 array_reduce():

<?php
$title = 'Dr';
$names = array('Mrs','Ms','Mr','Dr');
$options = array_reduce($names,function($carry,$name) use ($title) {
    return $carry .= '<option value="'.$name.'"'.($title == $name?' selected':'').'>'.$name.'.</option>';
});
?>
<select name="title">
    <?php echo $options;?>
</select>

this playground example 中查看实际效果。


1https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option