В настоящее время я использую флажки в форме и хочу сохранить значение флажка в столбце базы данных типа 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 или переключателя.
решение в https://stackoverflow.com/a/29288171/3923450 должно сработать,
но если вы ищете встроенную функцию, попробуйте
intval
$_POST
Переменная для флажка будет установлена, только если флажок установлен, поэтому вы можете использовать что-то вроде этого:
$active = isset($_POST['active']) ? 1 : 0;
Я подозреваю, что вы получаете строку «true», а не логическое «true», и в этом случае вы можете использовать аналогичную конструкцию:
$active = $_POST['active'] === "true" ? 1 : 0;
добавить атрибут значения во входной тег
<input name='active' value='1' ...>
Теперь все должно работать так, как вам нужно.
Прежде всего, ваш ввод в HTML «липкий», а в PHP вы тестируете «активный».
Но в любом случае, попробуйте в PHP следующий тест:
if (isset($_POST['sticky']) and ($_POST['sticky']=='on')) $active=1;
else $active=0;
Оглядываясь в руководстве по PHP, можно найти следующий код:
filter_var('FALSE', FILTER_VALIDATE_BOOLEAN, array('flags' => FILTER_NULL_ON_FAILURE)
Ссылка: http://php.net/manual/en/function.filter-var.php#118356