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

Я заметил, что PHP, кажется, возвращает только значения проверенных флажков. Я хотел бы видеть список флажков, не только значения проверенных флажков. Существует ли способ обнаружить переменные снятых флажков?

Я спросил, потому что я хочу быть в состоянии к настройкам обновления. Например, у меня есть несколько опций, которые уже проверяются, но если пользователь решает снять флажок с опцией, я должен знать, что неконтролируемое значение, таким образом, я могу обновить опцию, которая будет отключена.

24
задан netrox 22 December 2009 в 03:37
поделиться

5 ответов

Я только что сам столкнулся с этой проблемой. Я решил ее, добавив дубликат - скрытое поле с тем же именем. Когда браузер посылает эту информацию, второе поле перекрывает первое (так что убедитесь, что поле hidden идет первым).

<input type="hidden" name="foo" value="">
<input type="checkbox" name="foo" value="bar">

Если не установлен флажок -

$_REQUEST[ 'foo' ] == ""

Если установлен флажок - -

$_REQUEST[ 'foo' ] == "bar"
60
ответ дан 28 November 2019 в 22:41
поделиться

Это не то, что может быть сделано только в PHP.

Браузеры посылают информацию о флажках только в том случае, если они отмечены, если вы также хотите посылать информацию о не отмеченных флажках, вам придется добавить скрытые поля в форму и использовать javascript для управления ими.[11455]

2
ответ дан 28 November 2019 в 22:41
поделиться

Чистая реализация PHP не кажется возможной, но можно попробовать использовать jQuery/AJAX.

.
0
ответ дан 28 November 2019 в 22:41
поделиться

Предположим, что у вас есть 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.

.
0
ответ дан 28 November 2019 в 22:41
поделиться

Я сам наткнулся на эту проблему и отсортировал ее, обновив все значения в базе данных до снятых флажков, а затем повторно проверив только те, которые есть в данных POST, это отлично работает для меня, но может быть чашкой чая не для всех.

1
ответ дан 28 November 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: