我正在尝试获取包含$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>
非常感谢任何帮助/指导。 提前致谢
答案 0 :(得分: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
或更清楚一些。
答案 1 :(得分:1)
您的if
区块令人困惑。您在打开选项标签时正在检查$tutor->id > 1
,但在关闭它时不会。 PaulP.R.O mentions 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>';
}