【问题标题】:auto populate select value in form using database value使用数据库值自动填充表单中的选择值
【发布时间】:2018-01-25 19:02:56
【问题描述】:

在我的表单上,我授予用户修改他的详细信息的权限,我使用应用程序 ID 从 db 获取详细信息,并在我的表单输入中显示它及其 value 属性,因此用户可以查看和修改他的详细信息,如果他愿意,但是我们如何在从数据库中获取的选择字段中设置值。

这里假设变量是 $country 从 db 中获取的。

$country = 'India';

而选择字段是

<select name="usercountry" id="usercountry">
  <option value="England">England</option>
  <option value="South Africa">South Africa</option>
  <option value="USA">USA</option>
  <option value="India">India</option>
</select>

这里我希望这个选择框自动设置为$country值。

【问题讨论】:

  • 有条件地添加到&lt;option&gt; 元素的属性是:selected
  • @SuperDJ : 谢谢你的解决方案。
  • @imgrv 当然,没问题。我建议您在 YouTube 上观看一些教程。例如,来自 codecourse,他制作了非常好的教程,这些教程非常解释性、简短但非常容易理解。

标签: php forms


【解决方案1】:

您可以使用Ternary Operator 完成此操作

 <option <?php echo ($country == 'India')?'selected="selected"':'' ?>>

在@Scriptman 评论和建议之后,我想让它更干净

<option <?php echo ($country == 'India')?'selected':'' ?>>

【讨论】:

  • 那不干净
  • @AniketSahrawat 它比使用完整的 if 语句要干净得多,当然也比包含 jQuery 来完成可以用 vanilla JS 完成的事情要干净得多
  • @SuperDJ 所以根据你的说法,如果有 1000 个选项,那么开发人员应该花一天的时间来编写这些三元组?
  • @SuperDJ 如果选项是动态生成的怎么办?那你不会建议eval吧?
  • 您可以使用selected 代替selected="selected"。这使它更“干净”。
【解决方案2】:

你应该检查 $country 变量的值到选项值。

<select name="usercountry" id="usercountry">
 <option value="England" <?php if($country == 'England'){ echo "selected";}?>>England</option>
 <option value="South Africa" <?php if($country == 'South Africa'){ echo "selected";}?>>South Africa</option>
 <option value="USA" <?php if($country == 'USA'){ echo "selected";}?>>USA</option>
 <option value="India" <?php if($country == 'India'){ echo "selected";}?>>India</option>
</select>

【讨论】:

  • 乐于助人:)
【解决方案3】:

此示例适用于 1 到 n 个国家/地区

$userCountry = 'India';

//you get it from DB or wherever
$countries = ['India','USA'];

<select name="usercountry" id="usercountry">
  <?php
        foreach($countries as $country){

         echo '<option value="'.$country.'" '.($userCountry == $country ? 'selected' : '').'>'.$country.'</option>';

        }
 ?>
</select>

【讨论】:

  • 谢谢!这完全是我需要的,我有超过 15 个字段,用户必须选择国家!这将减少工作量。
  • @SuperDJ : 如果我想在这里使用占位符,比如选择具有 NA 值的国家/地区,该怎么办..
  • @imgrv 你的意思是像&lt;select placeholder="text here"&gt; 这样的占位符吗?如果是这种情况,那么您可以使用labelstackoverflow.com/questions/5805059/…。但如果这不能回答您的问题,请更新您的问题。
  • @SuperDJ :不,这不是确切的点,我的意思是,如果在我的表单中有一个不适用于用户的选择字段并且他不想选择它,那么默认情况下数据将转到db,它将为空或使用上面的代码在选择下拉列表中的第一个选项中具有一些值。
  • @imgrv 如果未选择数据,则应为空白。但是,如果您使用上述选择并且选择了一个选项,则该值将返回到数据库,即使用户没有更改选择
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多