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>

【问题讨论】:

值进入&lt;option&gt;标签而不是&lt;select&gt;标签 您是否也从数据库中获取下拉选项 好的。这是做事的标准方式吗?因为我将 value='' 添加到选择标签中,选择的选项值被保存到数据库中,只是没有添加选择的属性 html.com/tags/select 选择标签没有value 属性 不,它们是在纯 html 中定义的,但会将用户选择的任何值存储到数据库中。 【参考方案1】:

定义一个选项数组

$animals = ['Dog', 'Cat', 'Bird'];

然后从该数组中生成&lt;select&gt; 的选项列表,并对照每一个检查选定的动物。如果匹配,则添加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>

在这种情况下,&lt;option&gt; 元素不需要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如果变量等于下拉列表中的值,则将“选定”属性添加到选项的主要内容,如果未能解决你的问题,请参考以下文章

PHP & MySQLi - 在下拉列表中显示选定的值两次

在 laravel 中显示选定下拉列表中的值

根据下拉列表中的选定值显示表单字段Angular TypeScript

在 PHP 和 POST 选定值中拥有动态下拉列表的最佳方法是啥

将下拉列表中的值从一个 php 传递到另一个

从 Excel 的下拉列表中检索选定的值(在 C# 中创建)