PHP:选择当前选项

时间:2014-09-24 09:50:01

标签: php mysql

我有一个包含所有类别(id,category)的DB表和包含所有事件(id,event,categoryID)的表。

在事件编辑表单中,我有select字段,其中包含所有类别(从数据库获取)。但是我正在开发一个编辑表单,我需要默认选择当前类别。

这是我的选择字段(PHP方法从DB获取所有类别并按以下顺序放置):

<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>';
  }
}

4 个答案:

答案 0 :(得分:1)

你可以这样做

while($row = mysqli_fetch_array($result)) {3

  echo '<option value="' . $row['id'] . '"';
  //if condition is met then make the option selected
  if($row['categoryID'] == 3) {
      echo " selected='selected' ";
  }
  echo '>' . $row['category'] . '</option>';

}

答案 1 :(得分:1)

附加到while次迭代条件将为您解决此问题:

while($row = mysqli_fetch_array($result)) {
    $isSelected = $row['id'] == $catID;
    echo '<option '.($isSelected ? 'selected="selected"' : '').' value="' . $row['id'] . '">' . $row['category'] . '</option>';
}    

如果当前值与$catID中存储的值相同,则进行比较 - 并将布尔结果存储在变量中。在echo中,如果值为true,则只执行条件分叉并附加selected属性,否则不附加任何空字符串。

答案 2 :(得分:0)

您应该将选定的catID作为参数添加到getCatList - 函数中。然后只需更改HTML的创建以包含selected-attribute:

public function getCatList($conf, $catID = 0) {
  $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['id']==$catID?' selected':'') . '>' . $row['category'] . '</option>';
  }
}

现在您可以将catID传递给您的函数:

$myConf = "something";
$myCatID = 3;
getCatList($myConf, $myCatID);

答案 3 :(得分:0)

 //query for the categories and options
 $current_value = 3;
 $total_num_of_options = mysql_num_rows($your_query_result);
 for($count = 1; $count <= $total_num_of_options){
   echo "<option value='".$count."' ";
   if($count == $current_value)
      echo "selected";
   echo ">cat".$count."</option>";
 }