2010-01-22 50 views
1

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

     <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> 

回答

5

你可以这样做完全一样的方式。假设您获得了$博客对象,其中的代码运行:

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

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

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>"; 
} 
+2

凡 “check_if_selected” 定义?这不是PHP中的内置函数。 – Jage 2010-01-22 18:25:39