как я могу получить все флажки, даже если они не проверены с HTML на PHP?

Я заметил, что 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.