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

时间:2015-12-30 22:58:39

标签: 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>

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

感谢您的考虑!

1 个答案:

答案 0 :(得分:0)

注意:此答案基于您使用$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的值将是字符串&#34;选择&#34;或空字符串,具体取决于$key == $item['brand']是返回true还是false。