2017-04-14 84 views
1

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

从逻辑上讲,一个简单的if语句应该可以完成这项工作,但我不确定该怎么做,因为我只有一行$email_body=""向电子邮件发送内容,并且我不能在if/else语句中插入if那里。我研究了三元运算符,但我的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 = "[email protected]"; 
$headers = "From: $email"; 
mail($to, $email_subject, $email_body, $headers); 
header("Location: http://example.com"); 
?> 

因此简化,如果用户在下拉菜单中选择0,我不希望它显示在正在发送的电子邮件中。不能用只有一个不允许if/else语句的字符串来解决这个问题。

+0

旁注比较:从技术上讲,你的POST数组将失败。 –

+0

你能详细说一下吗?它现在正在工作,但我想知道你的意思。我对PHP很新,所以解释会很有帮助。 – Coltvant

+0

没关系,没关系。你的*“(简单来得到一个想法)”*似乎意味着该方法被遗漏了。 –

回答

2

你可以用,如果再建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 = "[email protected]"; 
$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'; 
} 
?> 
+0

好的,这是我所寻找的更多。所以每个服务都会被声明并放入一个数组中,如果它不是空的,那是对的吗?然后你只需要显示'$ services'的数组? – Coltvant

+0

是的。零是空的。除非声明一个变量是错误的。数组只保存可显示的信息。 –