Переключатель переключается на статус по умолчанию при обновлении страницы с помощью PHP

У меня есть ситуация, когда есть 5 переключателей, одна из которых по умолчанию проверяется на открытой странице. Эти переключатели представляют 5 категорий. В каждой категории есть несколько кнопок отправки в подкатегории. Кнопки подкатегории скрыты, за исключением кнопок в категории, которая в данный момент выбрана переключателем.

Я хочу, чтобы пользователи могли выбирать категорию с помощью переключателя, а затем выбрать одну из подкатегорий, но при обновлении страницы (из запроса $_POST) я хочу, чтобы переключатель категории "текущая" оставался отмеченным. В текущем состоянии страница обновляется с отправкой в ​​подкатегорию, и радио по умолчанию устанавливается на первую категорию переключателей.

У меня есть javascript, координирующий действие контейнера скрытия радио, поэтому теги формы должны охватывать все пять переключателей, и все пять переключателей имеют одинаковое имя, которое нельзя изменить из-за моего базового JavaScript. Так что я не могу просто изменить название и код каждого радио в PHP соответственно с сеансами и тому подобное.

Я фактически получил категорию, чтобы остаться при отправке $_POST, используя переменную сеанса в теге радиосвязи, где вы найдете флажок, но мне пришлось инкапсулировать каждую радиостанцию ​​и соответствующий раздел подкатегории в свои теги формы. Это вызывает проблемы с javascript, конечно, и переключатели, после нажатия, не смогут быть нажаты снова.

Есть ли способ решить эту проблему с помощью php?

Любая помощь будет хорошей. Заранее спасибо.

1 ответ

Решение

Я должен был сделать это с классами, это немного громоздко. При загрузке страницы вытяните проверенное значение элемента в переменную (в данном случае $val). и иметь эту строку для каждого элемента ввода:

<input type="radio" ... value="someval" <?php $x = ($val=='someval' ? 'checked="checked"' : ''); echo $x; ?> />

Как я уже сказал, громоздко, но проверяет правильность пункта. Единственное, что вашему первому элементу понадобится еще логика if, поскольку по умолчанию будет проверяться, если значение не выбрано.

<input type="radio" ... value="firstval" <?php $x = ((empty($val)) || ($val=='firstval')) ? 'checked="checked"' : ''); echo $x; ?> />

Вы можете сделать это при необходимости, это было только для встроенного.

Другие вопросы по тегам