Как мне установить атрибут «selected» для одного из этих полей, основываясь на том, какое значение хранится в переменной $ genre?
т.е. если $ genre == «Puzzle», то
<option value=Puzzle>
становится
<option value=Puzzle selected>
Вот мой текущий код:
<?php
$query = "SELECT * FROM release_dates WHERE id = $id";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$genre = $row['game_genre'];
?><select name=genre>
<option value=Action>Action</option>
<option value=Adventure>Adventure</option>
<option value=Puzzle>Puzzle</option>
<option value=RPG>RPG</option>
<option value=Horror>Horror</option>
<option value=Shooter>Shooter</option>
<option value=Simulator>Simulator</option>
<option value=Sport>Sport</option>
<option value=Strategy>Strategy</option>
</select>
Кроме того, для дополнительных очков брауни, как это применимо к полям выбора с атрибутом «несколько»?
Любая помощь или идеи будут с благодарностью.
Ну, это довольно просто на самом деле:
<option value=Action <?php $genre == "Action" ? "selected":""?> >Action</option>
Просто используйте троичный оператор (condition) ? true:false
ввести «выбранный», если значение установлено. Просто продублируйте эту логику на всех опциях:
<option value=Action <?php $genre == "Action" ? "selected":""?> >Action</option>
<option value=Adventure <?php $genre == "Adventure" ? "selected":""?> >Adventure</option>
<option value=Puzzle <?php $genre == "Puzzle" ? "selected":""?> >Puzzle</option>
<option value=RPG <?php $genre == "RPG" ? "selected":""?> >RPG</option>
Надеюсь, это поможет!
Вы могли бы использовать foreach
цикл для перебора ваших опций, и каждый раз выполняйте проверку с помощью оператора if, чтобы увидеть, соответствует ли он:
foreach ($genres as $genre) {
if ($genre === "Puzzle") {
echo '<option value="'.$genre.'" selected>'.$genre.'</option>';
else {
echo '<option value="'.$genre.'">'.$genre.'</option>';
}
}
Кстати, вы не должны использовать mysql_*
функционирует больше, поскольку они небезопасны, осуждается, и будет удален из PHP в будущем. Взгляни на PDO.
<option value="Strategy" <?php if($genre == "Strategy"){ echo 'selected="selected"';} ?> >Strategy</option>
Я придумал версию, которая хранит все в PHP
<?php
$query = "SELECT * FROM release_dates WHERE id = ". $id;
$result = mysql_query($query);
$row = mysql_fetch_array($result);
// possible options
$genre_options = array(
'Action'
'Adventure'
'Puzzle'
'RPG'
'Horror'
'Shooter'
'Simulator'
'Sport'
'Strategy'
);
// loop over the options, and wrap them in tags
$options = '';
foreach ($genre_options as $genre) {
// check if we have a match
$selected = '';
if ($genre == $row['game_genre']) {
$selected = 'selected="selected"';
}
$options .= '<option value="'. $genre .'" '. $selected .'>'. $genre .'</option>'
}
echo '
<select name=genre>
'. $options .'
</select>
';
?>
Это создает массив возможных жанров, зацикливает их и проверяет, соответствует ли какой-либо из них жанру, возвращенному в запросе. Если это так, он добавит selected="selected"
приписывать.
К сожалению, мне не хватит «очков брауни», потому что я не могу помочь вам с множественным выбором.
Позвольте мне знать, если это помогает!
РЕДАКТИРОВАТЬ: Я также отметил, что в вашем запросе вы где проходили $id
переменная как строка. Исправлено это в запросе в моем примере.
Вместо того, чтобы определять свои жанры, используя обычный HTML, создайте массив со всеми вашими жанрами.
Для этого:
$genres = array(
"Action",
"Adventure",
"Puzzle",
"RPG",
"Horror",
"Shooter",
"Simulator",
"Sport",
"Strategy");
foreach($genres as $currentGenre) {
echo "<option value="'.$currentGenre.'" '.($currentGenre == $genre ? "selected" : "").'>'.$currentGenre.'</option>';
}
Что это делает, это перебрать все ваши жанры и создать единый <option>
для каждого из них. Если $currentGenre
(так один из жанров из массива $genres
) Матчи $genre
(который вы извлекли из MySQL), он выбирает эту опцию, используя встроенный оператор if.