如何从数据库中预先选择当前选择的下拉菜单项?

时间:2010-06-26 18:43:29

标签: php mysql

我自己尝试了这个但却无法让它正常工作。基本上我正在编辑一个编辑页面,可以编辑之前提交的帖子。在此新页面上,表单预先填充了先前提交的数据。之前选择的一件事是下拉类别。我试图让以前的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>

它应该在棒球的开始和结束处,而是从那里开始并在最后一个菜单项结束,所以自然就是预选的那个。

如何解决这个问题?

3 个答案:

答案 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>";
}