checkbox — От логического до целого числа в переполнении стека

В настоящее время я использую флажки в форме и хочу сохранить значение флажка в столбце базы данных типа int. Что было бы наиболее эффективным способом достижения этого. Я уже пытался привести переменную к (int) но это еще ничего не сделало для меня.

HTML: <input name='active' id='active' ng-model='formData.active' ng-init='formData.active=true' type="checkbox"> Active </br>PHP:
$active = (int) $_POST['active'];
echo $active;
echo $_POST['active'];

Output:
0
true

Примечание: я пытаюсь реализовать это без ужасного оператора if или переключателя.

0

Решение

решение в https://stackoverflow.com/a/29288171/3923450 должно сработать,

но если вы ищете встроенную функцию, попробуйте

intval
0

Другие решения

$_POST Переменная для флажка будет установлена, только если флажок установлен, поэтому вы можете использовать что-то вроде этого:

$active = isset($_POST['active']) ? 1 : 0;

Я подозреваю, что вы получаете строку «true», а не логическое «true», и в этом случае вы можете использовать аналогичную конструкцию:

$active = $_POST['active'] === "true" ? 1 : 0;
0

добавить атрибут значения во входной тег

<input name='active' value='1' ...>

Теперь все должно работать так, как вам нужно.

0

Прежде всего, ваш ввод в HTML «липкий», а в PHP вы тестируете «активный».
Но в любом случае, попробуйте в PHP следующий тест:

if (isset($_POST['sticky']) and ($_POST['sticky']=='on')) $active=1;
else $active=0;
0

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

filter_var('FALSE', FILTER_VALIDATE_BOOLEAN, array('flags' => FILTER_NULL_ON_FAILURE)

Ссылка: http://php.net/manual/en/function.filter-var.php#118356

0
По вопросам рекламы [email protected]