Php 最佳实践使用数据库中的值填充引导HTML表单选择下拉列表
更新: 我做了一些更改并更新了代码 它现在工作得更好了,当加载表单时,来自数据库的值会自动显示在表单字段中,这是通过向选项标记添加“selected”来完成的 但是,我仍然有一个bug: 选择新值时,它将正确存储在DB中,并在提交表单时显示在字段中,但前提是我在下拉列表中选择了低于上一个值的值。如果选择了高于上一个值的值,则新值存储在DB中,但旧值仍显示在表单字段中 调试HTML输出时,我可以看到由于某种原因,旧值和新值都列为“selected”选项。我使用“if…elseif…else”语句,并相信这是正确的,但我不明白为什么在提交后我会选择两个选项。我是否理解IF语句的用法是错误的 HTML输出的一部分:Php 最佳实践使用数据库中的值填充引导HTML表单选择下拉列表,php,mysql,twitter-bootstrap,Php,Mysql,Twitter Bootstrap,更新: 我做了一些更改并更新了代码 它现在工作得更好了,当加载表单时,来自数据库的值会自动显示在表单字段中,这是通过向选项标记添加“selected”来完成的 但是,我仍然有一个bug: 选择新值时,它将正确存储在DB中,并在提交表单时显示在字段中,但前提是我在下拉列表中选择了低于上一个值的值。如果选择了高于上一个值的值,则新值存储在DB中,但旧值仍显示在表单字段中 调试HTML输出时,我可以看到由于某种原因,旧值和新值都列为“selected”选项。我使用“if…elseif…else”语句,
<option value="MDV">Maldives</option>
<option value="MLI" selected>Mali</option>
<option value="MLT" selected>Malta</option>
<option value="MHL">Marshall Islands</option>
HTML代码:
<div class="form-group">
<label class="control-label col-sm-2" for="country">Country</label>
<div class="col-sm-10">
<select class="form-control" name="country" id="country">
<?php
foreach ($CountryList as $row) {
if ($row['iso3'] == $_POST['country']) {
echo "<option value={$row['iso3']} selected>";
} elseif ($row['iso3'] == $country) {
echo "<option value={$row['iso3']} selected>";
} else {
echo "<option value={$row['iso3']}>";
}
echo $row['short_name'];
echo '</option>';
}
?>
</select>
</div>
</div>
国家
我认为您结束foreach循环可能太早了,您还需要为您的选项指定一个值,如下所示:
<div class="form-group">
<label class="control-label col-sm-2" for="country">Country</label>
<div class="col-sm-10">
<select class="form-control" name="country" id="country">
<?php foreach ($CountryList as $row): ?>
<option value="<?=$row["short_name"]?>">
<?=$row["short_name"]?>
</option>
<?php endforeach ?>
</select>
</div>
</div>
国家
只需检查$row['short_name']是否等于post var,然后在选项标记中添加一个“selected”属性。我尝试过这样做,但仍有错误,请查看更新的问题和新代码,如果您有更多建议,请告诉我。谢谢您的时间。我更改了代码并修改了您的建议,但是在选择新值时出现了错误。请查看带有新代码的更新问题,如果您有更多建议,请告诉我。谢谢你抽出时间。
<div class="form-group">
<label class="control-label col-sm-2" for="country">Country</label>
<div class="col-sm-10">
<select class="form-control" name="country" id="country">
<?php foreach ($CountryList as $row): ?>
<option value="<?=$row["short_name"]?>">
<?=$row["short_name"]?>
</option>
<?php endforeach ?>
</select>
</div>
</div>