【问题标题】:Only display dropdown menu contents if selected In A PHP Mail如果在 PHP 邮件中选择,则仅显示下拉菜单内容
【发布时间】:2017-09-11 02:17:18
【问题描述】:

我创建了一个通过 PHP 邮件发送的 HTML 表单。一切都很好,但我想简化它,以便在发送的电子邮件中,只显示具有实际选择的下拉菜单。现在它的设置是这样的,即使用户选择了 0,每个下拉菜单都会显示在电子邮件中。我已经有很多下拉菜单,还有更多要添加,所以电子邮件很快就会变得非常混乱。

从逻辑上讲,一个简单的 if 语句应该可以完成这项工作,但我不确定该怎么做,因为我只有一行 $email_body="" 可以将内容发送到电子邮件,而且我无法插入 if/else 语句在那里。我研究了三元运算符,但我的 PHP 知识有限,我无法让它工作。谢谢!

HTML(为了得到一个想法而简化)

<form>    
  <div class="tab-content clearfix">
        <div class="tab-pane active" id="carpet-cleaning">
            <h3 class="options-text">Carpet Cleaning Options</h3>
                <!--how many bedrooms-->
                <label class="control-label" for="carpet_cleaning">Bedrooms</label><br>
                <select class="form-control-1" id="carpet_cleaning" name ="bedrooms_selection">
                    <option value="0">0</option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                </select>
                <!--how many dining rooms-->
                <br><label class="control-label" for="dining_rooms">Dining Rooms</label><br>
                <select class="form-control-1" id="dining_rooms" name="dining_selection">
                    <option value="0">0</option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <!--how many family rooms-->
                    <br><label class="control-label" for="family_rooms">Family Rooms</label><br>
                <select class="form-control-1" id="family_rooms" name="family_room_selection">
                    <option value="0">0</option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                </select>
  </div>
 </div>
</form>

PHP

<?php
$bedrooms = $_POST['bedrooms_selection'];
$diningRooms = $_POST['dining_selection'];
$familyRooms = $_POST['family_room_selection'];
$email_subject = "Price Quote";
$email_body="Carpet Services Needed: \n Bedrooms: $bedrooms \n Dining Rooms: $diningRooms \n Family Rooms: $familyRooms";
$to = "jon@example.com";
$headers = "From: $email";
mail($to, $email_subject, $email_body, $headers);
header("Location: http://example.com");
?>

所以为了简化,如果用户在下拉菜单中选择 0,我不希望它显示在正在发送的电子邮件中。仅使用一个不允许使用 if/else 语句的字符串无法解决此问题。

【问题讨论】:

  • 旁注:技术上;您的 POST 数组将失败。
  • 你能详细说明一下吗?它现在正在工作,但我想知道你的意思。我对 PHP 很陌生,所以解释一下会很有帮助。
  • 没关系,没关系。你的 "(simplified just to get an idea)" 似乎意味着该方法被遗漏了。
  • 哦,是的,没错。不过感谢您的关注!

标签: php html email drop-down-menu ternary-operator


【解决方案1】:

您可以与 if 进行比较,然后构建 email_body 字符串

<?php
if(!empty($_POST['bedrooms_selection'])){
$services[]='Bedrooms: '.$_POST['bedrooms_selection'];
}
if(!empty($_POST['dining_selection'])){
$services[]='Dining Rooms: '.$_POST['dining_selection'];
}
if(!empty($_POST['family_room_selection'])){
$services[]='Family Rooms: '.$_POST['family_room_selection'];
}
if($services){
$email_subject = "Price Quote";
$email_body='Carpet Services Needed: \n'.implode("\n",$services);
$to = "jon@example.com";
$headers = "From: $email";
mail($to, $email_subject, $email_body, $headers);
header("Location: http://example.com");
}
else{
echo 'You have to select at least one service';
}
?>

【讨论】:

  • 好的,这正是我想要的。因此,如果每个服务不为空,则每个服务都将被声明并放入一个数组中,对吗?然后你只需用$services显示数组?
  • 是的。零是空的。除非声明一个变量是假的。该数组只保存可显示的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
相关资源
最近更新 更多