2014-09-24 104 views
0

我有一個包含所有類別(id,category)和包含所有事件(id,event,categoryID)的表的數據庫表。PHP:選擇當前選項

而在事件編輯窗體上,我有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> 

如何使用PHP實現它,如果我有catID?

希望這個問題很清楚。對不起,我不好解釋

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

顯示您當前的PHP代碼? – mithunsatheesh 2014-09-24 09:52:14

+0

完成。對不起,在開始時不加它 – 2014-09-24 09:54:15

回答

1

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

+0

嗯。這一個似乎更好,那麼我的 – 2014-09-24 10:02:11

+0

這種方法背後的一般想法是你想盡量減少混合你的HTML和PHP。您希望在進行打印/回顯之前執行所有計算,這樣您的輸出部分將更易於理解(與將所有內容全部在線相比,這當然不是一個複雜的情況,但想象有多個數據屬性,條件切換器等)。 – Gabor 2014-09-24 10:06:17

+1

僅僅因爲我發現它很奇怪:爲什麼你沒有,@Gabor,編碼'$ isSelected =($ row ['id'] == $ catID)? 'selected':'';'然後在echo上使用'echo' MoshMage 2014-09-24 10:22:04

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

} 
+0

哦,夥計。我已經發布了這個問題,並且自己找到了解決方案(非常類似於你的)。我很愚蠢......對不起。 – 2014-09-24 09:58:02

+0

@ArtemUshakov:沒問題:) – mithunsatheesh 2014-09-24 10:00:41

0

你應該添加選定CATID作爲參數傳遞給你的getCatList功能。然後,只需改變你的HTML創建包括所選擇的屬性:

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