【问题标题】:PHP Form: If a input field is empty then do not send the table data to mailPHP 表单:如果输入字段为空,则不要将表格数据发送到邮件
【发布时间】:2017-11-01 06:36:07
【问题描述】:

在这里,这个表单不仅会向我发送邮件,还会向用户发送副本。而我想要实现的是:

  1. 输入的数据应以 Html 表格格式发送至邮件。
  2. 如果输入字段为空,则不应将该表数据发送到电子邮件。我还提到了这个链接:(how to make if decision in swiftmailer to check if field is empty then do not send `td` to mail),但我没有得到这个。

注意:我不希望所有字段都是必需的。这里我只给出了 HTML 中要求的姓名、电子邮件和地址字段,其余字段可以留空并提交表单。

但是现在,如果我提交此表单,我将不会收到任何邮件

这是我的 PHP 代码:

<?php 
if(isset($_POST['submit'])){
$to = "...@gmail.com"; // this is your Email address

$from = (!empty($_POST["email"])) ? '<tr><td>' . $_POST["email"] . '</td></tr>' : '';
$name = (!empty($_POST["name"])) ? '<tr><td>' . $_POST["name"] . '</td></tr>' : '';
$address = (!empty($_POST["address"])) ? '<tr><td>' . $_POST["address"] . '</td></tr>' : '';

$book_shelf = (!empty($_POST["book_shelf"])) ? '<tr><td>' . $_POST["book_shelf"] . '</td></tr>' : '';
$glass_ware = (!empty($_POST["glass_ware"])) ? '<tr><td>' . $_POST["glass_ware"] . '</td></tr>' : '';
$speakers = (!empty($_POST["speakers"])) ? '<tr><td>' . $_POST["speakers"] . '</td></tr>' : '';
$carpets = (!empty($_POST["carpets"])) ? '<tr><td>' . $_POST["carpets"] . '</td></tr>' : '';


$content = '<table>'.$name.$from.$address.$book_shelf.$glass_ware.$speakers.$carpets.'</table>';


$content2 = '<table>'.$name.$address.$book_shelf.$glass_ware.$speakers.$carpets.'</table>';


$headers = "From:" . $from;
$subject = "Form submission";

$headers2 = "From:" . $to;  
$subject2 = "Copy of your form submission";

mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
echo "Mail Sent. Thank you " . $name . ", we will contact you shortly.";
// You can also use header('Location: thank_you.php'); to redirect to another page.
}
?>

function add(id) {
  var element = document.getElementById(id),
    value = +element.value || 0;
  element.value = value + 1;
}

function sub(id) {
  var element = document.getElementById(id),
    value = +element.value || 0;
  value--;
  if (value < 0) {
    value = 0;
  }
  element.value = value;
}
HTML Code:

<form action="" method="post">
  <div class="col-md-12">
    <div class="form-group">
      <input type="text" class="form-control" id="name" placeholder="Enter Name" name="name" required>
    </div>
  </div>
  <div class="col-md-12">
    <div class="form-group">
      <input type="email" class="form-control" id="email" placeholder="Enter E-Mail" name="email" required>
    </div>
  </div>
  <div class="col-md-6">
    <div class="form-group">
      <textarea class="form-control" rows="5" id="comment" placeholder="Address" name="address" required></textarea>
    </div>
  </div>
  <div class="col-md-3 col-sm-6">
    <div class="range-label">
      <label>Book Shelf</label>
    </div>
    <div class="range">
      <a onClick="sub('book-shelf')"><i class="fa fa-minus-circle" aria-hidden="true"></i></a><input type="text" id="book-shelf" name="book_shelf"><a onClick="add('book-shelf')"><i class="fa fa-plus-circle" aria-hidden="true"></i></a>
    </div>
  </div>
  <div class="col-md-3 col-sm-6">
    <!--start-->
    <div class="range-label">
      <label>Glass Ware</label>
    </div>
    <div class="range">
      <a onClick="sub('glass-ware')"><i class="fa fa-minus-circle" aria-hidden="true"></i></a><input type="text" id="glass-ware" name="glass_ware"><a onClick="add('glass-ware')"><i class="fa fa-plus-circle" aria-hidden="true"></i></a>
    </div>
  </div>
  <!--end-->

  <div class="col-md-3 col-sm-6">
    <!--start-->
    <div class="range-label">
      <label>Speakers</label>
    </div>
    <div class="range">
      <a onClick="sub('speakers')"><i class="fa fa-minus-circle" aria-hidden="true"></i></a><input type="text" id="speakers" name="speakers"><a onClick="add('speakers')"><i class="fa fa-plus-circle" aria-hidden="true"></i></a>
    </div>
  </div>
  <!--end-->


  <div class="col-md-3 col-sm-6">
    <!--start-->
    <div class="range-label">
      <label>Carpets</label>
    </div>
    <div class="range">
      <a onClick="sub('Carpets')"><i class="fa fa-minus-circle" aria-hidden="true"></i></a><input type="text" id="Carpets" name="carpets"><a onClick="add('Carpets')"><i class="fa fa-plus-circle" aria-hidden="true"></i></a>
    </div>
  </div>
  <!--end-->

  </div>
  <!--    End of row --->
  <input type="submit" name="submit" value="Submit">
</form>

【问题讨论】:

  • 您可以先将required 添加到您的输入中
  • 不,我不希望所有字段都是必需的

标签: javascript php


【解决方案1】:

您可以检查所需的值是否已设置且不为空,如果已设置,则发送电子邮件。

您需要设置它的标题,以便它可以作为 HTML 而不是纯文本发送。此外,here 是电子邮件模板中支持的标签列表

//Set headers
$headers .= 'Content-type: text/html';
$headers2 .= 'Content-type: text/html';

if(
   isset($_POST["email"]) && $_POST["email"] != "" &&
   isset($_POST["name"]) && $_POST["name"] != "" &&
   isset($_POST["address"]) && $_POST["address"] != ""
  )
  {
    // If all required fields are set, then email them
    mail($to,$subject,$content,$headers);
    mail($from,$subject2,$content2,$headers2);
    echo "Mail Sent. Thank you " . $name . ", we will contact you shortly.";
  }

【讨论】:

  • 这里我希望这些数据以 HTML 表格格式发送到我的邮件中。该怎么做?
  • @manjeshwars 您只需要更改变量。我已经更新了我的答案,看看
  • 我已更改变量并显示已发送邮件。但是我没有收到任何邮件。
  • @manjeshwars 你检查你的垃圾邮件文件夹了吗?另外,你是在本地机器上运行这段代码吗?
【解决方案2】:

向您的输入字段添加 HTML 必需属性,如下例所示

function myFunction() {

  var name = document.getElementById("usrname").value;
  var city = document.getElementById("city").value;

  if (city) {
    alert(name + " " + city)

  } else {
    alert(name)

  }


}
<form onsubmit="myFunction()">
  Name: <input type="text" id="usrname" required><br> City: <input type="text" id="city"><br>
  <input type="submit">
</form>

【讨论】:

  • 这里我不希望所有字段都是必需的
  • 不需要在我的示例城市中设置您想要的字段
  • 在您的代码中,如果我提交表单,我会将输出到我的邮件中:姓名:我的姓名,城市:
  • 但如果该字段留空,则不应将其发送到我的邮箱。在您的代码中如果城市留空,则不应将该文本城市发送到我的邮件
  • 最好同时处理前端和后端的验证
猜你喜欢
  • 2013-09-30
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多