从 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
<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