Если я правильно понял, у вас есть список студентов, который будет выделен во втором фрагменте кода в переменной $students
?
А у вас есть другой набор всех учеников, который читается в вашем первом фрагменте кода в цикле while?
Чтобы отобразить, находится ли конкретный пользователь в массиве $students
, вам просто нужно проверить, находится ли идентификатор пользователя в этом массиве.
if (in_array($row_rsStudents['student_id'], $studentsids)) {
echo 'selected="selected"';
}
Это может быть встроено в код формы для вставки выбранного атрибута, если конкретный студент находится в вашем массиве.
Учитывая, что ваш второй фрагмент кода выполняется первым:
<?php
$studentsids = $row_rsClasses['class_students'];
// I assume this array contains all IDs that shall be highlighted
$students = explode(":", $studentsids);
?>
И тогда ваш первый фрагмент кода показывает всех студентов:
<select name="students" size="10" multiple="multiple">
<?php
// why have you used do while? Do you have an existing row before?
// using while(): ... endwhile; is just another style, I prefer it in HTML templates
while ($row_rsStudents = mysql_fetch_assoc($rsStudents):
?>
<option value="<?php echo $row_rsStudents['student_id']?>" <?php if (in_array($row_rsStudents['student_id'], $studentsids)) echo 'selected="selected"' ?> >
<?php echo $row_rsStudents['student_sname1']?>
<?php echo $row_rsStudents['student_sname2']?>
<?php echo $row_rsStudents['student_fname']?>
</option>
<?php endwhile; ?>
<?php
// what was this intended to do?
//
//$rows = mysql_num_rows($rsStudents);
//if($rows > 0) {
// mysql_data_seek($rsStudents, 0);
// $row_rsStudents = mysql_fetch_assoc($rsStudents);
//}
?>
</select>