Задать вопрос

If все поля формы пусты?

Пытаюсь написать код, если все поля формы пусты или произошла ошибка отправки - PHP должен выдать ответ 0, если в форму что-то ввели и оно успешно отправилось - выдать 1.

if ((!name) && (!$email) && (!topic) && (!$message)) {$answer=0;}
elseif (!mail(отправляет)) {$answer=0;}
else {$answer=1;}
echo $answer;


JS, получив от PHP 0, должен подсветить границы формы красным в знак ошибки, а получив 1 - очистить форму.

if(answer==0){$(".clear").css("border-color","red");}
else{$('.clear').val('');}


На самом деле у меня отправляется даже пустая форма. То есть часть про "0 - подсветить границы красным" не работает. В чём может быть ошибка? И как ещё можно написать "если все поля формы пусты" кроме (!name) && (!$email) && (!topic) && (!$message)?
  • Вопрос задан
  • 2456 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Shaks К ответам на вопрос (3)
shaks
@shaks
И как ещё можно написать "если все поля формы пусты" кроме (!name) && (!$email) && (!topic) && (!$message)?

Старайтесь избегать такой нечитабельной писанины, это во первых, во вторых !$var - в первую очередь проверка на булево значение а не на пустоту. Хоть в контексте задачи на это плевать, но об этом лучше знать, и всегда проверять именно на то значение, которое ожидается или же наоборот, - не ожидается.
if($var) - вернет true на то что внутри переменной или чтто есть (пробел например), или оно булевое ДА. и вернет false если переменная пустая, булевое НЕТ или же равно NULL.

Задача весьма "странная" если честно

$answer = false;
$fields  = ['name', 'email', 'topic', 'message'];
foreach($fields as $field)
{
    $$field=trim($$field);
    if(false===(empty($$field))) // Если поле не пустое, значит надо пробовать отправлять (исправил !empty() на 'false===empty()" см. коммент от @FanatPHP )
    {
        $mail_send = true || false;# здесь код отвечающий за отправку мыла
        if($mail_send)
            $answer=true;
        break; // выходим из цикла независимо от результата отправки
    }
}


var answer = 0;
if (a === 0) {
      $(".clear").css("border-color", "red");
    } else {
      $('.clear').val('');
    }
Ответ написан