php - 如何从 foreach 循环生成的下拉列表中获取和显示值

标签 php mysql forms

我对此没有解决方案。也许比我聪明的人可以提供一些帮助。这涉及一个 MySQL 表并以表格形式显示检索到的数据。

目的是以一种形式显示当前存储在特定数据行中的内容。

我正在使用相同的表单来插入和显示数据以进行修改。我使用以下代码生成了下拉选项,效果很好。

<div class="form-group">
  <label for="pistol_model_brand">Pistol Model Brand</label>
  <select name="pistol_model_brand" class="form-control">
   <option value="">Select one</option>
   <?php foreach($brands as $key => $brand): ?>
   <option value="<?php htmlout($key) ?>"><?php htmlout($brand); ?</option>
   <?php endforeach; ?>
  </select>
</div> 

为了显示当前存储的数据,我使用 value="content here"将其回显到表单中。

由于我的下拉选项实际上没有列出,我不知道如何检索存储在数据库表中的值并将其显示在表单中。

我通常这样做:

<div class="form-group">
 <label>Waist</label>
 <select class="form-control" name="waist">
    <option value="">Select one</option>
    <option value="iwb" <?php if($item['waist'] === 'iwb') {echo htmlspecialchars(' selected');} ?>>IWB</option>
    <option value="owb" <?php if($item['waist'] === 'owb' || 'OWB') {echo htmlspecialchars(' selected');} ?>>OWB</option>
</select>
</div>

但是,在这种情况下,我不知道该怎么做,或者我有什么选择。

感谢您的考虑!

最佳答案

注意:此答案基于您使用 $item 变量的假设,即您在该变量中有可用的数据库行,并且它包含品牌存储在该行的数据库中。

这通常是我在不使用模板引擎(如 Laravel Blade 或 Twig)时使用的方法:

<select name="pistol_model_brand" class="form-control">
   <option value="">Select one</select>
   <?php foreach($brands as $key => $brand) : ?>
       <?php $selected = ($key == $item['brand'] ? 'selected' : '') ?>
       <option value="<?php echo($key); ?>" <?php echo($selected); ?>>
           <?php echo($brand); ?>
       </option>
   <?php endforeach; ?>
</select>

我使用的方法是使用三元运算符在选项之前填充一个 $selected 变量,然后输出 selected 或什么都不输出。虽然它很丑!

使用像 Laravel Blade 这样的东西,它看起来会更清晰一些:

<select name="pistol_model_brand" class="form-control">
   <option value="">Select one</select>
   @foreach($brands as $key => $brand)
       <option value="{{ $key }}" {{ $item['brand'] ? 'selected' : '' }}>
           {{ $brand }}
       </option>
   @endforeach
</select>

编辑:添加更多细节...

$selected = ($key == $item['brand'] ? 'selected' : '');

其语法称为三元运算符。它的格式为 condition ? valueA : valueB 其中 condition 返回真值或假值。如果为真,则返回 valueA,如果为假,则返回 valueB。这意味着 $selected 的值将是字符串“selected”或空字符串,具体取决于 $key == $item['brand']返回真或假。

关于php - 如何从 foreach 循环生成的下拉列表中获取和显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34538551/

相关文章:

MySQL:从另一个表的随机行复制多个值

angular - 为什么要使用 ngSubmit 而不是简单的按钮和功能

JavaScript:为什么我的表单不提交?

javascript - 如何使用 javascript 根据单元格的值更改单元格的背景颜色?

php - Laravel 中的 DB 原始查询错误

php - 从 php 将数据插入 MySql

mysql - 如何根据时间戳列更新unixtime列?

PHPExcel 标题行覆盖第一个条目

MySQL 表列具有英文值或阿拉伯语值

php - 为什么我会收到此错误 "Error: Query was empty"