Причина, по которой вы всегда проверяетесь на последнем, заключается в том, что вы устанавливаете каждую кнопку-переключатель последовательно.
Когда вы передаете набор переключателей с одинаковым именем в браузер, поведение по умолчанию состоит в том, что последняя установленная кнопка, установленная как проверенная, будет той, которая отображается как проверенная.Таким образом, если вы передадите пять радиокнопок, и все они будут установлены как отмеченные, у радиостанции не может быть более одной отмеченной опции.
Когда браузер обнаруживает вторую опцию радиосвязи, которая также помечена как «проверено,«он просто удаляет« проверено »из первого».
Ваш php-код выполняет это в следующей строке:
$checked[$type] = "checked";
Проблема в том, что вы создаете массив, которыйбудет отображаться с:
se_source => флажок
Это означает, что флажок - это значение строки для каждого элемента в вашем массиве.
Я думаю, вам следует переосмыслить структуру таблицыи процесс.Вместо того, чтобы создавать столбец для проверки чего-либо, я использую следующее:
По сути, ваша проблема в том, что вам нужно:
Значение всоответствующая база данных
Значение самой радиокнопки
, которая позволит вам:
Сравнить базу данныхзначение (DBV) со значением переключателя (RBV) и установите его как проверенное, если сравнение вернется как истинное.
Переменные ниже:
$ ar_rvbs = массив значений радиосети(обычно это строки или логические значения), которые вы собираетесь выполнить в цикле и проверить сохраненное DBV.
$ value = значение каждого элемента в массиве значений радиомодуля
$ attrval = сохраненное значениезначение для радиокнопки.это не обязательно должно быть в базе данных.Вы можете использовать метод post для передачи его с одной страницы на следующую.
$ checked = если DBV соответствует RBV при прохождении цикла, это будет установлено в строку «флажок», иначе этопросто пустая строка.
function makeRadioSet($ar_rvbs,$attrval=[DBV] /*A*/
{
foreach ($ar_rvbs as $value)
{
$checked = ''; /*B*/
if ($attrval==$value) /*C*/
$checked = "checked"; /*D*/
echo '<input type="radio" name = "fieldname" value = "'.$value.'" '.$checked.'>';
}
}
/ A / Передать список RBV в виде массива и DBV в качестве переменной
/ B / Установите флажок в пустую строку, потому что это будет по умолчанию для всех переключателей в наборе, кроме той, которая соответствует DBV
/ C / Сравните DBV с текущимRBV обрабатывается циклом из массива RBV
/ D / Если сравнение с шага C возвращает true, сделайте проверенную строку доступной для вставки в элемент ввода
Echo позаботится о том, чтобы генерировать каждую опцию радиостанции и убедиться, что тот, который соответствует DBV, «проверил» в теге элемента ввода