PHP не получает значение радиовхода - PullRequest
1 голос
/ 07 марта 2012

У меня реальная проблема с получением значения переключателя с помощью PHP. , , У меня есть две радиокнопки как таковые:

<input name="admin" type="radio" value="1" />Yes
<input name="admin" type="radio" value="0" checked />No

И условный оператор PHP, проверяющий, может ли PHP извлечь из него какие-либо данные:

if(!empty($_POST['admin'])) {
    // do stuff
}
else {
   echo "Value not set";
}

проблема в том, что PHP может возвращать значение для переключателей, если выбрано «да», но нет, если выбрано «нет», я пытался удалить «проверенную» часть, но безрезультатно. Я просто не могу заставить его получить значение "0", что бы я ни пытался.

Я помню, как использовал массивы PHP для именования флажков, но это не должно быть обязательно для переключателей, так как их можно выбрать только в одно время?

Или PHP просто не может вернуть переключатели со значением 0?

Или я делаю что-то ужасно неправильно, не осознавая этого?

Ответы [ 3 ]

5 голосов
/ 07 марта 2012

Функция PHP empty вернет false для 0, NULL, "" и других.

Цитата из php.net:

"" (пустая строка)

0 (целое число 0)

0,0 (0 в виде числа с плавающей запятой)

"0" (0 в виде строки)

NULL

FALSE

array () (пустой массив)

var $ var; (объявленная переменная, но без значения в классе)

Все они будут возвращать (false), следовательно, сводят на нет выполнение вашего оператора if.

Вы должны будете изменить свое состояние, чтобы оно отражало значение в зависимости от того, чего вы хотите достичь.

Удачи!

3 голосов
/ 07 марта 2012

Ваша проблема в том, что empty () обрабатывает нули как пустые значения, независимо от того, является ли это числом 0 или строкой «0». Таким образом, вместо использования empty () используйте isset () и / или прямые проверки, например,

if (isset($_POST['admin'])) {

или

if (isset($_POST['admin']) && $_POST['admin'] == 0) {
0 голосов
/ 07 марта 2012

Я верю, что ноль - твоя проблема. Попробуйте установить для них «Y» и «N», и вы должны увидеть, что значение N приходит. Это потому, что 0 является пустым значением в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...