0

から値を含む選択リストを取得しようとしています$staff が、すでに登録されているスタッフを選択するのに苦労してい$entry->enrolmentsます。

$staff idが存在する場合$entry->enrolmentsは、選択リストで選択します

$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>

ヘルプ/ガイダンスをいただければ幸いです。前もって感謝します

4

2 に答える 2

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

また、変数の名前をpeopleからenrolled_staffまたはもう少し明確なものに変更することもできます。

于 2012-05-29T14:41:10.410 に答える
1

あなたのifブロックは混乱しています。オプションタグを開くときはチェックして$tutor->id > 1いますが、閉じるときはチェックしていません。 PaulP.RO は in_array、foreach ループを何に置き換えるかについて言及しています。ifブロックがクリーンアップされ、インラインでの選択のチェックが設定されます。

if($tutor->id > 1) {
    echo '<option value="'.$tutor->id.'" ' . (($person==$tutor->id) ? ' selected="selected"': '') . '>';
    echo $tutor->lastname.' '.$tutor->firstname;
    echo '</option>';
}
于 2012-05-29T14:47:56.350 に答える