如何根据$genre变量中存储的值将"selected"属性设置为这些框之一?
即如果$genre=="拼图",则
<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
输入"selected"。只需在所有选项上复制该逻辑:
<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语句选择该选项。