2015-12-15 2 views
-2

У меня есть поле формы на моем сайте, которое я использую для таблицы в моей базе данных. Я использую флажки для значения true/false. В моем случае мои флажки отправляют пустую строку, если ее не остановить.chaining if else statements

Я сделал оператор if else, чтобы убедиться, что пустая строка сделана логической. однако мои утверждения if else работают только для первого ($ ringe). последние два ($ halskaeder и $ armbaand), похоже, не работают, так как моя база данных не регистрирует никаких входов.

Я предполагаю, что мои инструкции if else имеют ошибки или синтаксические ошибки, я просто слишком безнадежен на PHP, чтобы понять, что не так.

if ($_REQUEST['ringe'] == ""){ 
$ringe = '0'; 
} 
else { 
$ringe = '1'; 
} 


if ($_REQUEST['halskaeder'] == ""){ 
$halskaeder = '0'; 
} 
else { 
$halskaeder = '1'; 
} 


if ($_REQUEST['armbaand'] == ""){ 
$armbaand = '0'; 
} 
else { 
$armbaand = '1'; 
} 

Любая помощь очень ценится!

ОБНОВЛЕНИЕ !!!

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

+2

напишите свой HTML-форму в своем вопросе. –

+2

Вы могли бы использовать [тройной оператор] (http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary) вместо этого? '$ ringe = (! empty ($ _ REQUEST ['ringe']))? 1: 0; ' – Epodax

ответ

2

AFAIK флажок не отправлен, если он не установлен. Вы можете сделать что-то вроде:

$default = array(
    'ringe' => 0, 
    'halskaeder' => 0, 
    'armbaand' => 0, 
); 

$myFormParams = array_replace($default, $_REQUEST); 

var_dump($myFormParams); 
0

несколько предложений ... Я могу добавить больше, если вы разместите форму ..

1) Обрезать пробелы из пользовательского ввода (если вам это нужно)

$input = trim($_REQUEST['user_input']); 

2) В этом случае вы должны использовать empty(), потому что эта функция проверяет, существует ли переменная, и если она пуста, и если она ложна. Вы можете убить трех птиц одним камнем.

3) Используйте тройной. Это сокращение от того, что вы делаете.

$input = trim($_REQUEST['user_input']); 
$input = empty($input) ? "0" : "1"; 
-1

Я нашел ответ. Моя проблема не была в php-коде, но флажок не посылал никаких данных, когда они были сняты. Обходной путь - это просто ввести скрытое поле ввода для отправки ложного сигнала независимо от того, что. Вы даете ему тот же самый атрибут имени, что и ваш реальный флажок, который будет переопределяться при проверке.

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

<input type="hidden" name="ringe" value="0" /><input type="checkbox" name="ringe" value="1" /><p>Ringe</p> 

спасибо за помощь, хотя!

+0

Это решение заняло наименьшее количество времени и сократило мой PHP пополам. Это было решение, с которым я мог бы работать с ограниченными знаниями языков кодирования. Это прекрасно решает мою проблему. Кроме того, я не мог заставить любые другие решения работать. Спасибо за трезвый тон. –