2015-11-14 3 views
0
<input name="inform_me" id="inform_me" type="checkbox"> inform me 

Всякий раз, когда я проверяю, если этот флажок установлен, я получаюCheckbox всегда возвращает истину, даже если не проверено

логическое значение (истина)

даже если флажок не очень проверено.

Это как мой PHP выглядит следующим образом:

var_dump(isset($_POST['inform_me'])); 

Что случилось с ним?

+2

Isset проверяет, есть ли что-то или нет. Вы не проверяете, установлен ли флажок, но если флажок установлен. – pregmatch

+0

Вы пытались получить его значение с консоли javascript в браузере перед отправкой формы? Помните, что значение, которое вы пытаетесь получить, это $ _POST ['inform_me'], isset только проверяет, приносит ли форма POSTED это поле – wilsotobianco

ответ

5

Функция PHP isset() проверяет, существует ли переменная!

Например.

$a = false; // or any other value 
echo isset($a); // True, because the variable $a exists! 
echo isset($b); // False, because the variable $b doesn't exist! 

Нет необходимости ставить IsSet там, попробуйте следующее:

echo $_POST['inform_me']; 

Переменная $_POST['inform_me'] будет содержать значение. Если он установлен, он будет содержать значение, которое является значением вашего флажка.

Например, это HTML-код

<input name="inform_me" id="inform_me" type="checkbox" value="test"> inform me </input> 

Тогда переменная $ _POST [ «inform_me»] будет «тест», если установлен, в противном случае (если выбрано) значение будет пустой строкой.

В случае, если вы не указали тег HTML со значением, переменная будет включена, если флажок установлен, в противном случае - пустая строка (если не отмечена).

+0

Если я правильно помню, он возвращает строку «on», если установлен ... –

+0

@ HasseBjörk Это зависит от вашего кода. Он примет атрибут value этого флажка, если он установлен. В противном случае это будет пустая строка. –

+1

Спасибо! Если атрибут value не установлен, он будет возвращать «on» или пустую строку, если не отмечен! –

0

Ну, насколько я знаю, в моем коротком опыте checkbox вернётся вкл. Или выкл. (Так как вы его берете, он всегда будет возвращать true, потому что он существует, но вы не имеете возврата, обусловленного его значением), так как сказал ранее. Тем не менее, есть способ, которым я успешно использовал условие, что на моей странице у меня есть флажок для ввода, если вы хотите RSS или нет, и я сохраняю 1, если хотите RSS (режим включен) или 0, если нет. Находясь в вашем случае, как это:

($_POST['inform_me'] == 'on') ? 1 : 0; 

До сих пор вы можете изменить один и от 0 до любого возврата вы хотите, чтобы вернуться, помня о том, что первый один (1 в этих случаях) будет возвращение, если условие истинно и второй (0 для примера), если условие ложно.

+0

on не является константой, а строкой. Он должен быть включен. Я не думаю, что значение «off» существует, но я могу ошибаться. –

+0

На самом деле вы правы, и я уже отредактировал, чтобы исправить это, спасибо большое. – Ecangis

-1

Я нашел решение. Моя проблема заключалась в том, что я передал переменную $_POST['inform_me'] с Ajax. В Ajax я использовал data: { inform_me: $('#inform_me').val() }, чтобы получить значение этого флажка. Вместо .val() сейчас я использую .is(':checked'), и он работает!

Смежные вопросы