PHP如果变量等于下拉列表中的值,则将“选定”属性添加到选项
Posted
技术标签:
【中文标题】PHP如果变量等于下拉列表中的值,则将“选定”属性添加到选项【英文标题】:PHP If variable equals value in dropdown then add 'selected' attribute to option 【发布时间】:2018-12-28 03:18:03 【问题描述】:我有一个下拉菜单,通过检查数据库来检查用户是否已经选择了一个值,如果有,我想在该选项中添加一个“已选择”属性,以便在他们编辑他们的个人资料时,该选项是由他们选择的东西预先选择。
这是我想要完成的一个例子。它适用于文本输入,但我不知道如何使用下拉列表。
因此,如果用户选择“Dog”,它会在数据库中放置并添加“selected”作为属性
$animal = $mysqli->escape_string($_POST['animal']);
//php UPDATE database script -------->
<label>Animal</label></br>
<select name='animal' value='<?php if($animal == value) /*Add selected attribute to option */ ?>'>
<option value="" disabled selected>Select One</option>
<option value="" disabled>----------------</option>
<option value="Dog">Dog</option>
<option value="Cat">Cat</option>
<option value="Bird">Bird</option>
</select>
【问题讨论】:
值进入<option>
标签而不是<select>
标签
您是否也从数据库中获取下拉选项
好的。这是做事的标准方式吗?因为我将 value='' 添加到选择标签中,选择的选项值被保存到数据库中,只是没有添加选择的属性
见html.com/tags/select 选择标签没有value
属性
不,它们是在纯 html 中定义的,但会将用户选择的任何值存储到数据库中。
【参考方案1】:
定义一个选项数组
$animals = ['Dog', 'Cat', 'Bird'];
然后从该数组中生成<select>
的选项列表,并对照每一个检查选定的动物。如果匹配,则添加selected
属性。
<label>Animal</label></br>
<select name='animal'>
<!-- select the default if none of the options are selected -->
<option value="" disabled <?php if (!in_array($animal, $animals)) echo 'selected' ?>>
Select One
</option>
<option value="" disabled>----------------</option>
<?php foreach ($animals as $option)
echo "<option ";
if ($animal == $option)
echo 'selected';
echo ">$option</option>";
?>
</select>
在这种情况下,<option>
元素不需要value
属性,因为您对选项文本使用相同的值。 (如果省略 value 属性,则使用选项文本作为值。)
【讨论】:
我实际上正在考虑像我的导航栏一样做一个这样的数组,但由于某种原因我无法让您的版本工作,所以我只是将其更改为 $option"; ?> 效果很好 我想我搞砸了三元表达式。抱歉,我没有测试过。我只是用您使用的替换它,因为它已被证明有效:) 也许我的现在不工作了。我刷新页面并选择了一个选项,但我离开页面并返回它已重置 由于$animal
是从 $_POST
设置的,因此您需要提交一个表单才能看到该选项被选中。它不会在后续页面加载时保持选中状态。【参考方案2】:
试试这样:
$animal = $mysqli->escape_string($_POST['animal']);
//PHP UPDATE database script -------->
echo '<label>Animal</label></br>
<select name="animal">
<option value="" disabled>Select One</option>
<option value="" disabled>----------------</option>
<option value="Dog" ' . ($animal == 'Dog' ? 'selected' : '') . '>Dog</option>
<option value="Cat" ' . ($animal == 'Cat' ? 'selected' : '') . '>Cat</option>
<option value="Bird" ' . ($animal == 'Bird' ? 'selected' : '') . '>Bird</option>
</select>';
【讨论】:
以上是关于PHP如果变量等于下拉列表中的值,则将“选定”属性添加到选项的主要内容,如果未能解决你的问题,请参考以下文章
根据下拉列表中的选定值显示表单字段Angular TypeScript