Как мне выбрать эхо в цикле while? - PullRequest
1 голос
/ 22 января 2010

На моем сайте есть раздел блогов и вопросов, в котором есть категории. Когда пользователь создает вопрос или блог, появляется раскрывающееся меню, в котором можно выбрать свою категорию. Когда вы редактируете любой из них, у вас есть возможность изменить свою категорию через выпадающий список. Когда вы переходите к редактированию блога, выпадающий список категорий представляет собой выпадающий список в стандартном стиле, и я использовал <option value="1" <?php if($blog->category == "1"){echo "selected";}?> >Art and Literature</option> для отображения ранее выбранной категории. Я понимаю, где остановился другой разработчик, поэтому на вопросы, которые он поставил, выпадающий цикл while. Будучи новичком, я не знаю, как «повторить выделение» в цикле 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>

Ответы [ 3 ]

5 голосов
/ 22 января 2010

Вы можете сделать это точно так же. Предполагая, что у вас есть объект $ blog, доступный там, где работает этот код:

while($result = mysql_fetch_array($request)) {
    $selected = ($result['id']==$blog->category) ? ' selected="selected"' : '';
    echo "<option value='" . $result['id'] . "' ".$selected.">" . $result['CategoryName'] . "</option>";
}
0 голосов
/ 22 января 2010

Я бы сделал что-то вроде:

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>";
}
0 голосов
/ 22 января 2010
 while($result = mysql_fetch_array($request)) {
   $selected = ($result['id'] == $blog->category) ? "selected" : "";
   echo "<option value='" . $result['id'] . "' $selected>" . $result['CategoryName'] . "</option>";
 }

Если вы не знаете, что он делает, это троичный оператор . По сути, он проверяет, равняется ли $result['id'] текущему $blog->category, и если да, то $selected будет содержать строку "selected" Если это не так, он просто содержит пустую строку. Затем внутри вашего элемента <option> вы либо выводите пустую строку, либо "selected".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...