2012-05-31 54 views
1
// Get Series List 
    $this->load->model('Series_model'); 
    $serieslist = $this->Series_model->gettypelist($userid, 'e'); 

    $series_item_id = 0; 

    $this->db->select('series_id'); 
    $this->db->where('type_id', 13); 
    $this->db->where('series_type', 'e'); 
    $series_item_query = $this->db->get('series_items'); 

    if ($series_item_query->num_rows() > 0) { 
     $series_item_id = $series_item_query->result(); 
    } 
    //print_r($series_item_id); 

    $data['serieslist'] = '<select name="series_id[]" class="type input_select" multiple="multiple">'; 
    $data['serieslist'] .= '<option value="">None</option>'; 
    foreach ($serieslist as $list) { 
     $data['serieslist'] .= '<option value="' . $list->id . '" ' . ($series_item_id[0]->series_id === $list->id ? 'selected="selected"' : '') . '>' . $list->title . '</option>'; 
    } 
    $data['serieslist'] .= '</select>'; 

上面是我正在使用的代碼。我希望能夠做的是爲選擇下拉菜單的多個值設置多個selected =「selected」。因此,例如:在多選下拉菜單中設置多個默認選定值

<select name="series_id[]" class="type input_select" multiple="multiple"> 
    <option value="">None</option> 
    <option value="4">Event Series: Test 1</option> 
    <option value="5">Event Series: Test 2</option> 
    <option value="16">Event Series: Test 3</option> 
    <option value="17">Event Series: Test 4</option> 
    <option value="18">Event Series: Test 5</option> 
    <option value="19">Event Series: Test 6</option> 
    <option value="20">Event Series: Test 7</option> 
    <option value="21">Event Series: Test 8</option> 
</select> 

我想的4 16和19的選項值被選擇=「選擇」,但在我的代碼以上它只選擇4,然後停止。我錯過了什麼?如果您需要更多信息,請告訴我。

在此先感謝。

編輯:

的print_r的結果:

Array ([0] => stdClass Object ([series_id] => 4) [1] => stdClass Object ([series_id] => 16) [2] => stdClass Object ([series_id] => 19)) 

更新代碼:

foreach ($serieslist as $list) { 
     $data['serieslist'] .= '<option value="' . $list->id . '" ' . (in_array($list->id, $series_item_id, TRUE) ? 'selected="selected"' : '') . '>' . $list->title . '</option>'; 
    } 

上面更新代碼不起作用。

+1

爲什麼不使用'in_array()'調用而不是'for each'? – Rijk

+0

'print_r($ series_item_id);'?的結果是什麼? – webbiedave

+0

請根據我的代碼提供in_array()的示例?並且print_r結果是Array([0] => stdClass Object([series_id] => 4)[1] => stdClass Object([series_id] => 16)[2] => stdClass Object([series_id] => 19)),請參閱有關更新的代碼。 –

回答

3

你比較$list->id先$ series_item_id:$ series_item_id [0] - > series_id

你需要把其他foreach在現有的一個:

foreach ($serieslist as $list) { 
    foreach ($series_item_id as $series_item) { 
     $data['serieslist'] .= '<option value="' . $list->id . '" ' . ($series_item->series_id === $list->id ? 'selected="selected"' : '') . '>' . $list->title . '</option>'; 
    } 
} 

或取series_id作爲陣列和使用in_array()

$series_array = array(); 

foreach ($series_item_id as $series_item) { 
    $series_array[] = $series_item->series_id; 
} 

foreach ($serieslist as $list) { 

     $data['serieslist'] .= '<option value="' . $list->id . '" ' . (in_array($series_array, $list->id) ? 'selected="selected"' : '') . '>' . $list->title . '</option>'; 

} 
+0

請參閱更新以上代碼 –

+0

嘗試任何這些... $ series_item_id是一個對象數組,$ list-> id是一個整數,所以AFAIK直接比較它們會失敗,尤其是嚴格比較啓用 – bjauy

相關問題