Как предотвратить отображение отправленных пустых полей в форме электронной почты - PullRequest
0 голосов
/ 14 января 2019

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

Я настроил оператор IF, который проверяет, чтобы видеть переменную! Null для отображения в электронном письме, если оно пустое, а не для отображения. Это работает в определенной степени. Он предотвращает отображение первого встречного поля, которое является пустым, для отображения в электронном письме, но затем запрещает показ других допустимых полей. Я считаю, что это синтаксическая ошибка с моей стороны.

<?php
$company_name = $_REQUEST['company_name'];
$contact = $_REQUEST['contact'];
$delivery_date = $_REQUEST['delivery_date'];
$delivery_time = $_REQUEST['delivery_time'];
$delivery_address = $_REQUEST['delivery_address'];
$phone = $_REQUEST['phone'];
$special_instruction = $_REQUEST['special_instruction'];
$email = $_REQUEST['email'];
$payment = $_REQUEST['payment'];

$mail->Body    = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
  <p>
    <strong>Company Name:</strong> <span style="color:red;">'.$company_name.'</span><br />';
    if(!is_null($contact)){echo'<strong>Contact:</strong> <span style="color:red;">'.$contact.'</span><br />';};
    '<strong>Delivery Date:</strong> <span style="color:red;">'.$delivery_date.'</span><br />
    <strong>Delivery Time:</strong> <span style="color:red;">'.$delivery_time.'</span><br />
    <strong>Delivery Address:</strong> <span style="color:red;">'.$delivery_address.'</span><br />
    <strong>Phone:</strong> <span style="color:red;">'.$phone.'</span><br />
    <strong>Special Instruction:</strong> <span style="color:red;">'.$special_instruction.'</span><br />
    <strong>Email:</strong> <span style="color:red;">'.$email.'</span><br />
    <strong>Type of Payment:</strong> <span style="color:red;">'.$payment.'</span><br />
  </p>
</body>
</html>';
?>

Поле "Контакт" иногда заполняется, но не всегда. Я пытаюсь настроить PHP для отображения информации, только если поле имеет данные, отправленные в него. Результаты должны выглядеть примерно так, если в поле «Контакт» нет данных:

* Общая информация *

Название компании: Bl

Дата доставки: 01/03/2019

Срок поставки: 12: 00

Адрес доставки: Тестер

Телефон: 763601789

E-mail: Test@yahoo.com

Вид оплаты: Mastercard

Результаты должны выглядеть следующим образом, если заполнено поле «Контакт»:

* Общая информация *

Название компании: Bl

Контакт: Guy Tester

Дата доставки: 01/03/2019

Срок поставки: 12: 00

Адрес доставки: Тестер

Телефон: 763601789

Специальная инструкция: Справка

Электронная почта: Test@yahoo.com

Вид оплаты: Mastercard

В настоящее время результаты выглядят так:

* Общая информация *

Название компании: Test

1 Ответ

0 голосов
/ 14 января 2019

Вы не строите строку после вашего условного выражения. Вместо использования echo необходимо добавить строку, используя оператор .=. Другими словами, убедитесь, что вы присваиваете и добавляете свою строку в переменную $mail->Body. Вы, вероятно, также хотите использовать !empty($contact) вместо !null($contact):)

<?php
$mail->Body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
  <p>
    <strong>Company Name:</strong> <span style="color:red;">'.$company_name.'</span><br />';
    if (!empty($contact))
    {
        $mail->Body .= '<strong>Contact:</strong> <span style="color:red;">'.$contact.'</span><br />';
    }
    $mail->Body .= '<strong>Delivery Date:</strong> <span style="color:red;">'.$delivery_date.'</span><br />
    <strong>Delivery Time:</strong> <span style="color:red;">'.$delivery_time.'</span><br />
    <strong>Delivery Address:</strong> <span style="color:red;">'.$delivery_address.'</span><br />
    <strong>Phone:</strong> <span style="color:red;">'.$phone.'</span><br />
    <strong>Special Instruction:</strong> <span style="color:red;">'.$special_instruction.'</span><br />
    <strong>Email:</strong> <span style="color:red;">'.$email.'</span><br />
    <strong>Type of Payment:</strong> <span style="color:red;">'.$payment.'</span><br />
  </p>
</body>
</html>';
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...