如何在while循环中回显所选?

时间:2010-01-22 18:07:20

标签: php html select drop-down-menu

我的网站上有一个博客和问题部分,其中包含类别。当用户撰写问题或博客时,会出现一个下拉菜单,允许您选择类别。当您编辑其中任何一个时,您可以选择通过下拉列表更改您的类别。当您去编辑博客时,类别下拉列表是标准样式下拉列表,我使用<option value="1" <?php if($blog->category == "1"){echo "selected";}?> >Art and Literature</option>来显示以前选择的类别。我正在接受另一位开发人员离开的地方,所以对于问题,他将下拉放入循环中。作为一个新手,我不知道如何在while循环中“回声选择”以使其拉动之前选择的cat.Here是循环

                       <select name="category">
                            <option value="null">Choose Category</option>
                            <?php
                            $query = "SELECT * FROM `Categories_questions` ORDER BY `CategoryName` ASC";
                            $request = mysql_query($query,$connection);
                            while($result = mysql_fetch_array($request)) {
                                echo "<option value='" . $result['id'] . "'>" . $result['CategoryName'] . "</option>";
                            }
                            ?>

                        </select>

3 个答案:

答案 0 :(得分:5)

你可以用完全相同的方式做到这一点。假设您运行此代码的$ blog对象可用:

while($result = mysql_fetch_array($request)) {
    $selected = ($result['id']==$blog->category) ? ' selected="selected"' : '';
    echo "<option value='" . $result['id'] . "' ".$selected.">" . $result['CategoryName'] . "</option>";
}

答案 1 :(得分:0)

 while($result = mysql_fetch_array($request)) {
   $selected = ($result['id'] == $blog->category) ? "selected" : "";
   echo "<option value='" . $result['id'] . "' $selected>" . $result['CategoryName'] . "</option>";
 }

如果你不知道那是做什么的,那就是ternary operator。实际上,它会检查$result['id']是否等于当前$blog->category,如果是,则$selected将包含字符串“selected”。如果没有,它只包含一个空字符串。然后,在<option>元素内,您要么输出又要空字符串或“已选中”。

答案 2 :(得分:0)

我会做类似的事情:

while($result = mysql_fetch_array($request)) {
    $value = $result['id'];
    $selected = "";
    if (check_if_selected($value)) {
        $selected = "selected";
    }
    echo "<option value='" . $value . "' " . $selected . ">" .
          $result['CategoryName'] . "</option>";
}