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

您可能还想将变量从 to 重命名peopleenrolled_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 回答