Я заметил, что PHP, похоже, возвращает только значения отмеченных флажков. Я хотел бы видеть список флажков, а не только значения отмеченных флажков. Есть ли способ обнаружить переменные непроверенных полей?
Я спросил, потому что хочу обновить настройки. Например, у меня есть несколько опций, которые уже проверены, но если пользователь решает снять флажок, мне нужно знать это непроверенное значение, чтобы я мог обновить параметр, который нужно отключить.
Я сам столкнулся с этой проблемой. Я решил это, добавив дублирующее hidden
поле с тем же именем. Когда браузер отправляет эту информацию, второе поле переопределяет первое (поэтому убедитесь, что первое hidden
поле).
<input type="hidden" name="foo" value=""> <input type="checkbox" name="foo" value="bar">
Если checkbox
не установлен, вы получаете:
$_REQUEST[ 'foo' ] == ""
Если checkbox
установлен, вы получаете:
$_REQUEST[ 'foo' ] == "bar"
Это не то, что можно сделать исключительно на PHP.
Браузеры только отправляют информацию о флажках, если они отмечены, если вы хотите также отправить информацию о снятых флажках, вам нужно будет добавить скрытые поля в форму и использовать javascript для их управления.
Я просто наткнулся на эту проблему самостоятельно, и я ее отсортировал, обновив все значения в базе данных, чтобы не проверять, а затем перепроверить только те, которые находятся в данных POST, это отлично работает для меня, но может не быть чашкой чая каждого.
Чистая реализация PHP не представляется возможной, но вы можете попробовать использовать jQuery / AJAX.
Предположим, у вас есть 3 флажка, которые вы хотите проверить, а update_settings – это имя ваших функций, которые принимают имя флажка в качестве первого аргумента и значение bool как второе (активировать или нет).
Возьмите следующий фрагмент:
$checkboxes = array("checkbox1", "checkbox2", "checkbox3"); foreach($checkboxes as $checkbox){ $checked = isset($_POST[$checkbox]); update_settings($checkbox, $checked); }
Решение Althouth Peter Kovacs, это будет работать, я не думаю, что это практично, так как вы уже можете проверить свои переменные, используя isset.