Как показать выбранное значение в множественном выборе без повторения при редактировании в Переполнение стека

Я использую ту же форму для новой записи, а также для редактирования деталей обучения. У меня есть список стажеров, который сохраняется в отдельной таблице. Так что, при редактировании конкретной записи, я должен показывать данные выбранной записи в форма. Для этого я использую $_GET['act'] =="edit" показать значение из базы данных или пустые элементы управления для новой записи.
В этом у меня есть контроль выбора, где я могу выбрать несколько слушателей для тренировки. Поэтому во время редактирования я читаю таблицу базы данных стажеров и показываю выбранных стажеров.
Если у меня всего 10 сотрудников, теперь я выбрал 5 сотрудников из вариантов.
Я должен отобразить этих 5 сотрудников как выбранных и еще 5 как невыбранных. Но когда я делаю это с использованием приведенных ниже кодов, у моих «избранных» элементов управления появляются такие параметры, как «5 сотрудников как выбранные» и все 10 сотрудников как невыбранные. Всего 15 вариантов. Но я хочу иметь только 10 вариантов.

<?php
try {
$sql = "SELECT * FROM enrollment WHERE enrollid = :cid";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":cid",intval($_GET['cid']));
$stmt->execute();
$enrollresults = $stmt->fetchAll();
} catch (Exception $ex) {
echo $ex->getMessage();
}
}

try {
$sql = "SELECT * FROM traineelist WHERE trainingid = :trid";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":trid",$enrollresults[0]["enrollid"]);
$stmt->execute();
$trlistresult = $stmt->fetchAll();

}
catch (Exception $ex)
{  echo $ex->getMessage(); }

try {
$sql = "SELECT * FROM employees";
$stmt = $EMPDB->prepare($sql);
$stmt->execute();
$empresult = $stmt->fetchAll();

}
catch (Exception $ex)
{  echo $ex->getMessage(); }

?>

<div class="form-group">
<label for="tr" class="control-label col-md-2">Trainee</label>
<div class="col-md-4">
<select id="trainee" name="tr[]"  multiple="multiple">
<?php
if(isset($_GET['act']) && $_GET['act']=="edit")
{ ?>
<?php foreach($trlistresult as $row1){ ?>
<option value="<?php echo $row1["trainee"]?>" selected="selected"><?php echo $row1["trainee"]?></option>
<?php  } ?>
<?php foreach($empresult as $row){ ?>
<option><?php echo $row['first_name']?></option>
<?php  } ?>

<?php
}
else
{
foreach($empresult as $row){ ?>
<option><?php echo $row['first_name']?></option>
<?php } }?>

</select>
</div>
</div>

I want like, it shows the default options with the selected value.

Например:
Status: Active, InActive — если я выбираю «active» в поле from, при редактировании элемента управления «Status» отображается как Active (выбранный), Active, InActive. Как избежать этого дублирования?

1

Решение

Вы можете подготовить массив значений $row1["trainee"], Тогда замени свой код

<?php
if(isset($_GET['act']) && $_GET['act']=="edit")
{ ?>
<?php foreach($trlistresult as $row1){ ?>
<option value="<?php echo $row1["trainee"]?>" selected="selected"><?php echo $row1["trainee"]?></option>
<?php  } ?>
<?php foreach($empresult as $row){ ?>
<option><?php echo $row['first_name']?></option>
<?php  }
} ?>

С :

if(isset($_GET['act']) && $_GET['act']=="edit")
{
foreach($empresult as $row){
if(in_array($row['first_name'], $trlistResultArray)) $selected = "selected";
else  $selected = "";
?>
<option <?php echo $selected; ?> ><?php echo $row['first_name']?></option>
<?php
}
}

Если ваше имя от $empresult находится в массиве стажера, затем установите его выбранным.

Хоп это помогает!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]