Вопрос по php, html – Передача состояния флажка в PHP

1
<input type="hidden" name="check_box_1" value="0" />
<input type="checkbox" name="check_box_1" value="1" />

Это работает нормально, однако, когда вы нажимаете на submit, и флажок отмечен, он передает ОБА скрытое значение и исходное значение флажка в переменную $ _POST в php, этого можно избежать?

У меня есть скрытое значение, поэтому флажки, не отмеченные флажком, передаются переменной $ _POST, а также переменным.

Есть ли какая-то причина, по которой вы не можете использовать переключатели вместо флажков? sesser
Вместо этого использовали комбо-боксы, так как мне нужен был способ записи истинного и ложного состояния thejoker

Ваш Ответ

6   ответов
0

он пройдет все данные формы, что бы это ни было. Правильный способ сделать это - не устанавливать флажок через скрытое поле, а установить флажок с тем, какое состояние оно имеет на самом деле!

Я имею в виду ... почему вы добавляете скрытое поле для начала?

Ваш PHP получает два поля с именем check_box_1, и в прошлый раз, когда я проверял, не было никакого способа гарантировать, что параметры будут прочитаны в хэш REQUEST в том же порядке, в котором вы их отправили, поэтому невозможно определить, какие именно один прибудет последним (это тот, чье значение будет установлено). Так что ... это неправильный подход к любой проблеме, которую вы пытаетесь решить здесь.

Добро пожаловать в стек, кстати! Если вы найдете ответы полезными или полезными, обязательно отметьте их как правильные и проголосуйте за них.

да, потому что имя должно быть уникальным! флажок type = вы можете иметь столько, сколько хотите, но имя должно быть checkbox1, checkbox2 и т. д. и т. д.
Когда я сделал $ _POST с массивом флажков, например name = checkbox [], единственными появившимися флажками были те, чьи флажки были отмечены. Остальные не были в списке. thejoker
флажки, которые не отмечены, по-прежнему отправляются в PHP, они просто появляются как «ложные», так что, может быть, вы видите их как неопределенные, потому что вы не ищете их в правильном направлении?
Не должен флажок [] сделать имя уникальным, представив массив следующим образом: [checkbox] = & gt; Array ([0] = & gt; True [1] = & gt; True [2] = & gt; True) Спасибо за поздравления. :) thejoker
Потому что, когда форма обрабатывается, флажки, которые не отмечены, не отправляются в переменную $ _POST. По сути, я пытаюсь создать функциональность, в которой, если флажок уже установлен, и пользователь "unticks" это, тогда поле в базе данных устанавливается в ложь и наоборот (если наоборот) thejoker
0

Они должны быть обаtype="checkbox" передать только 1 значение.

Если вы хотите получить только 1 в любом случае, вы можете сделать:

<input type="checkbox" style="display:none;" name="check_box_1" value="0">
1

му из полей формы, отправленных в первую очередь. Это означает, что вы не можете создавать код, который принимает отправленные поля, и доверять им отправку правильных данных (что, я полагаю, вы делаете сейчас).

Что вы должны сделать, это обработать все поля, которые выexpect получить. Таким образом, если вы не получаете значение флажка, вы все равно можете обработать его, как если бы оно не было отмечено. Затем вы также получаете дополнительную внутреннюю особенность, заключающуюся в отбрасывании данных формы, которые вы не ожидаете в первую очередь.

0

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

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

Если вы хотите иметьdefault установить затем вам придется обрабатывать все это на стороне сервера в зависимости от погоды, флажок имеет значение.

Например:

$myValue = "";
if(isset($_POST['check_box_1']))
{
    $myValue=$_POST['check_box_1'];
}
else
{
    $myValue="0";
}
Спасибо, вместо этого я использовал поле со списком, сделав жизнь намного проще. thejoker
0

что первое поле ввода имеет тип Checkbox, иначе оно не будет вести себя как одно.

<input type="checkbox" name="check_box_0" value="0" />
<input type="checkbox" name="check_box_1" value="1" />
2

if ($_POST['check_box_1']=='1') { /*Do something for ticked*/ }
else { /*Do something for unticked*/ }
как я сказал ниже, они все будут в массиве, если вы назовете их чем-то уникальным. Те, которые не отмечены, будут в массиве как ложные.
Да, это будет работать, но что, если у вас есть массив флажков & quot; name = checkbox [] & quot; те, которые не были отмечены, не будут в массиве $ _POST. В идеале было бы неплохо, если бы в массиве появлялись не отмеченные флажки с определенным значением по моему выбору, и тогда, когда дело доходит до манипулирования данными с помощью foreach, было бы легко определить, какой флажок принадлежит какому. thejoker

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