我有一个包含所有类别(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属性,否则不附加任何空字符串。

10-05 20:39
查看更多