我正在尝试获取一个包含$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>
任何帮助/指导将不胜感激。提前致谢
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
或更清晰的名称。
你的if
块令人困惑。 打开选项标记时检查$tutor->id > 1
,但在关闭选项标记时不会检查。 PaulP.R.O提到了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>';
}