2012-05-29 73 views
0

我試圖從$staff 得到一個選擇列表我正在掙扎的是選擇已經從$entry->enrolments註冊的工作人員。php陣列爲每個在每個

如果存在於$entry->enrolments$staff id在選擇列表中

$entry =記錄從MySQL在陣列中選擇它

$staff =人員的列表。

$entry->enrolments =逗號分隔招收員工

<select name="tutor[]" id="tutor" multiple="multiple" size="5" class="required" title="Select Staff"> 

<?php 
    $entry = get_record("staff_development", "id", $id); 
    $staff = get_records("user", "deleted", "0", "lastname ASC", "id,firstname,lastname,idnumber"); 
    $sdenrolments=array($entry->enrolments); 
    $people = explode(",", $entry->enrolments); 


    foreach($staff as $tutor){ 
    foreach($people as $person){ 

    if($tutor->id>1)echo '<option value="'.$tutor->id.'"'; 
    if ($person==$tutor->id) {echo 'selected="selected"';} 
    echo '>'.$tutor->lastname.' '.$tutor->firstname.'</option>'; 
    } 
    } 
?> 

</select> 

任何幫助/指導值將不勝感激。 在此先感謝

+0

究竟是什麼問題? – jeroen

+0

嘗試在第一次foreach後產生更多輸出 – Gntem

回答

3

in_array是判斷一個值是一個數組:)這個替換您的循環最簡單的方法:

foreach($staff as $tutor){ 
    echo '<option value="'.$tutor->id.'"'; 
    if(in_array($tutor->id, $people)) 
     echo 'selected="selected"'; 
    echo '>'.$tutor->lastname.' '.$tutor->firstname.'</option>'; 
} 

您可能還需要你的變量命名從peopleenrolled_staff或有點更清楚。

1

您的if區塊令人困惑。打開選項標籤時您正在檢查$tutor->id > 1,但在關閉選項標籤時沒有。 PaulP.R.O mentionsin_array你應該用你的foreach循環替換。這是您的if塊清理並設置內聯選擇檢查。

if($tutor->id > 1) { 
    echo '<option value="'.$tutor->id.'" ' . (($person==$tutor->id) ? ' selected="selected"': '') . '>'; 
    echo $tutor->lastname.' '.$tutor->firstname; 
    echo '</option>'; 
}