我有一个包含所有类别(ID,类别)和所有事件(ID,事件,类别ID)的表。
在事件编辑表单上,我具有select
字段,其中包含所有类别(从数据库获取)。但是因为我正在开发一个编辑表单,所以我需要默认选择当前类别。
这是我的选择字段(PHP方法可从数据库中获取所有类别,并按以下顺序排列它们):
<option value="1">Cat1</option>
<option value="2">Cat2</option>
<option value="3">Cat3</option>
<option value="4">Cat4</option>
<option value="5">Cat5</option>
假设当前事件在类别3下,所以我需要生成以下HTML:
<option value="1">Cat1</option>
<option value="2">Cat2</option>
<option value="3" selected>Cat3</option>
<option value="4">Cat4</option>
<option value="5">Cat5</option>
如果我有catID,如何使用PHP实现?
希望这个问题很清楚。对不起,我的解释不好
UPD:这是我的生成类别列表的PHP代码:
public function getCatList($conf) {
$mysqli = $this->dbConnect($conf);
// Quering...
$query = "SELECT * FROM categories";
$result = $mysqli->query($query);
while($row = mysqli_fetch_array($result)) {
echo '<option value="' . $row['id'] . '">' . $row['category'] . '</option>';
}
}
最佳答案
将条件附加到您的while
迭代将为您解决以下问题:
while($row = mysqli_fetch_array($result)) {
$isSelected = $row['id'] == $catID;
echo '<option '.($isSelected ? 'selected="selected"' : '').' value="' . $row['id'] . '">' . $row['category'] . '</option>';
}
如果当前值与
$catID
中存储的值相同,则在进行比较-并将布尔结果存储在变量中。在回显中,您只是在进行条件分叉,并在值为true时附加selected
属性,否则不附加任何空字符串。