簡體   English   中英

PHP:選擇當前選項

[英]PHP: select current option

我有一個包含所有類別(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($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>';

}

將條件附加到您的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屬性,否則不附加任何空字符串。

您應該將所選的catID作為參數添加到getCatList 然后只需更改HTML的創建以包括selected屬性:

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);
 //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>";
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM