我自己尝试了这个但却无法让它正常工作。基本上我正在编辑一个编辑页面,可以编辑之前提交的帖子。在此新页面上,表单预先填充了先前提交的数据。之前选择的一件事是下拉类别。我试图让以前的choden类别显示为此编辑页面下拉列表中的默认选择。
<select name="categories">
<?php
// get the category the post is assigned to
$query = mysql_query("SELECT category FROM posts");
while ($row = mysql_fetch_assoc($query)) {
$chosenCategory = $row['id'];
}
// display a drop down of all categories with the chosen category preselected
$query = mysql_query("SELECT * FROM categories");
while ($row = mysql_fetch_assoc($query)) {
$catId = $row['id'];
$catName = $row['name'];
if ($catId == $chosenCategory) {
$selected = "selected='selected'";
}
echo "<option value='$catId' $selected>$catName</option>\n";
}
?>
</select>
我的代码问题是它从指定的类别开始在每个选项上插入selected ='selected'。我需要它才能插入指定的类别选项。
例如,假设帖子被分配到一个名为“棒球”的类别,这里是当前输出的外观:
<option value='someid'>Camping</option>
<option value='someid'>Grilling</option>
<option value='someid' selected='selected'>Baseball</option>
<option value='someid' selected='selected'>Swimming</option>
<option value='someid' selected='selected'>Extreme Frisbe</option>
<option value='someid' selected='selected'>Watching TV</option>
它应该在棒球的开始和结束处,而是从那里开始并在最后一个菜单项结束,所以自然就是预选的那个。
如何解决这个问题?
答案 0 :(得分:1)
只需添加
$selected = "";
过了一会儿。像这样:
$query = mysql_query("SELECT * FROM categories");
while ($row = mysql_fetch_assoc($query)) {
$selected = "";
$catId = $row['id'];
$catName = $row['name'];
if ($catId == $chosenCategory) {
$selected = "selected='selected'";
}
echo "<option value='$catId' $selected>$catName</option>\n";
}
这样你就可以在while循环的每次迭代中“重置”选择
答案 1 :(得分:1)
您的代码在各方面都是完全正确的,除非您忘记在每个循环中重置$selected
。
$selected = '';
if ($catId == $chosenCategory) {
$selected = "selected='selected'";
}
答案 2 :(得分:0)
while($row = mysql_fetch_array($result)){
$preSelect = ($value == $preSelect)? "selected='selected'" : null;
echo "<option value='someValue' ".$preSelect.">SomeOption</option>";
}