PHP & MySQLi - 在下拉列表中显示选定的值两次
Posted
技术标签:
【中文标题】PHP & MySQLi - 在下拉列表中显示选定的值两次【英文标题】:PHP & MySQLi - Show selected value two time in drop-down list 【发布时间】:2016-05-21 07:12:43 【问题描述】:我创建了我的个人资料页面,并以 mysql 的形式显示所有数据。所有数据都正确显示在表格和下拉列表中。但问题是选择的值在选项列表中显示了两次。
这是我的代码:
<select class="form-control" name="country" id="country">
<option value="">Select Country
<?php
//Get country list from Country master
$qry = "select * from country_master";
//Execute query
$result = mysqli_query($conn, $qry);
//Assigned fetched array to $Country
while($country = mysqli_fetch_array($result))
echo "<option value='$country[1]'>$country[1]</option>";
//Compare User Country with country list. $row[4] is the country column in user table
if($row[4] == $country[1])
echo "<option value='$country[1]' selected='selected'>$country[1]</option>";
?>
</option>
</select>
【问题讨论】:
bhavin 只需要 if else 循环中的条件 @A-2-A 对,如果他愿意这样做,他至少可以为我的不幸投赞成票-_- 看看会选择什么答案,但至少它会是第一个正确和描述性的答案。 【参考方案1】:您需要更改您的while
代码,如下所示:-
while($country = mysqli_fetch_array($result))
//Compare User Country with country list. $row[4] is the country column in user table
if($row[4] == $country[1])
echo "<option value='$country[1]' selected='selected'>$country[1]</option>";
else
echo "<option value='$country[1]'>$country[1]</option>";
注意:在您的代码中创建第一个选项,然后检查条件,这就是为什么它会两次显示所选选项。
【讨论】:
对不起 A-2-A,这是误会了。 没问题,我的坏话也很抱歉:) @A-2-A 刚刚编辑了您的代码以提高可读性,我希望没问题。 :-) 选项 chk my answer 中你的代码兄弟选项中的一个问题【参考方案2】:你有两个问题:
在选项中使用选项。 其次,您只需要打印选定的属性而不是打印完整的选项。示例:
<option value="">Select Country
</option>
<?php
//Get country list from Country master $qry = "select * from country_master";
//Execute query
$result = mysqli_query($conn, $qry);
//Assigned fetched array to $Country
while($country = mysqli_fetch_array($result))
if($row[4] == $country[1])
$selected = 'selected=""';
else
$selected = "";
?>
<option <?php echo $selected;?> value='<?php echo $country[1];?>'>
<?php echo $country[1];?>
</option>
<?php
?>
【讨论】:
【参考方案3】:A-2-A为您所面临的问题提供了正确答案。
另外
您将所有循环选项嵌套在“选择国家”选项中。您应该删除 </select>
标记之前的最后一个</option>
标记并将其移动到“选择国家/地区”之后,如下所示:
<option value="">Select Country</option>
【讨论】:
【参考方案4】:应该这样设置:
<select class="form-control" name="country" id="country">
<option value="">Select Country
<?php
//Get country list from Country master
$qry = "select * from country_master";
//Execute query
$result = mysqli_query($conn, $qry);
//Assigned fetched array to $Country
while($country = mysqli_fetch_array($result))
//Compare User Country with country list. $row[4] is the country column in user table
if($row[4] == $country[1])
echo "<option value='$country[1]' selected='selected'>$country[1]</option>";
else
echo "<option value='$country[1]'>$country[1]</option>";
?>
</option>
</select>
因为你需要检查该值是否被选中,然后如果它没有相应地显示数据。
【讨论】:
【参考方案5】:这应该可以解决您的问题:
<select class="form-control" name="country" id="country">
<option value="">Select Country
<?php
//Get country list from Country master
$qry = "select * from country_master";
//Execute query
$result = mysqli_query($conn, $qry);
//Assigned fetched array to $Country
while($country = mysqli_fetch_array($result))
echo "<option value='$country[1]'".($row[4] == $country[1] ? " selected" : "").">$country[1]</option>";
?>
</option>
问题在于,除了未选择的选项之外,您还回显了选定的选项。现在,如果应该选择该选项,它会添加 'selected' 属性。 (根据您的情况)
【讨论】:
以上是关于PHP & MySQLi - 在下拉列表中显示选定的值两次的主要内容,如果未能解决你的问题,请参考以下文章
多个 <select> 下拉列表作为 sql 参数 | PHP