【问题标题】:PHP If variable equals value in dropdown then add 'selected' attribute to optionPHP如果变量等于下拉列表中的值,则将“选定”属性添加到选项
【发布时间】: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 中定义的,但会将用户选择的任何值存储到数据库中。

标签: php html phpmyadmin dropdown forms


【解决方案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>';

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 2020-09-25
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 2019-10-08
    • 2015-05-20
    相关资源
    最近更新 更多