我对此没有解决方案。也许比我聪明的人可以提供一些帮助。这涉及一个 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/