2012-11-09 82 views
1

我:多選擇由陣列

$selectedItem = '100,200,300'; 

和MySQL負荷:

<select multiple="multiple" name="product_id"> 
    <?php 
    $query = mysql_query("SELECT * FROM products ORDER BY id"); 
    while($row = mysql_fetch_array($query)){ 
     echo '<option value="$row[id]">$name</option>'; 
    } 
    ?> 
</select> 

我需要$ selectedItem屬性(三個值)是:

<option value="$row[id]" selected>$row[id]</option> 

如何我可以這樣做嗎?我只是無法找到解決方案時的將selectedItem超過1

+0

是不是這個PHP?有人會使用正確的標籤! – nawfal

+0

對不起@nawfal,標記已修復。 – Ogy

回答

1

你應該讓你的$selectedItem變量數組(並將其命名爲複數,因爲它可以有多個值;只是我增加首= P):

$selectedItems = array(100, 200, 300); 

這樣做,你就可以檢查當前行的id是陣列中或沒有(與in_array()),然後在「選擇」該行:

while($row = mysql_fetch_array($query)) { 
    $selected = in_array($row['id'], $selectedItems) ? ' selected="selected"' : ''; 
    echo '<option value="' . $row[id] . '"' . $selected . '>' . $row['id'] . '</option>'; 
} 

或者,如果你不能「定義」您選擇的產品清單作爲一個數組,你會有一個逗號分隔的字符串,就可以使用explode()把它變成一個數組:

$selectedItems = explode(',', $selectedItem); 

這將通過逗號$selectedItem變量分成存入$selectedItems(可用與上面的代碼)的陣列。

+0

哇,它工作!謝謝你幫助我! =) – Ogy

0

你可以這樣說:

while($row = mysql_fetch_array($query)){ 
    if (str_pos($selectedItem.',' , $row[id].',') !== false) { 
     $sel = 'selected'; 
    } else { 
     $sel = ''; 
    } 
    echo "<option value='$row[id]' $sel>$row[id]</option>"; 
}