2017-04-14 38 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

是的。零是空的。除非聲明一個變量是錯誤的。數組只保存可顯示的信息。 –

相關問題