2010-06-05 68 views
2

我試圖爲一個網站設置一個簡單的PHP聯繫表格,我需要一些幫助修改PHP以列出選擇菜單中的多個項目,並希望得到幫助。我是一名平面設計師,而不是開發人員,所以很多都是我的頭腦。這就是問題所在區域位置:PHP電子郵件表格多重選擇

<label for="Events[]">Which Event(s) Will You Be Attending?</label> 
    <div class="input-bg"> 
       <select name="Events[]" size="6" multiple="MULTIPLE" class="required" id="Events[]"> 
       <option value="Wednesday">Portfolio Show June 16</option> 
       <option value="Thursday">Portfolio Show June 17</option> 
       <option value="Saturday">Graduation Ceremony</option> 
       <option value="Saturday Eve">Graduation Party</option> 
       <option value="Not Sure">Not Sure</option> 
       <option value="Not Coming">Not Coming</option> 
       </select> 
     </div> 

而這裏的PHP:

<?php 

// CHANGE THE VARIABLES BELOW 

$EmailFrom = "[email protected]"; 
$EmailTo = "[email protected]"; 
$Subject = "Graduation RSVP"; 

$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Guests = Trim(stripslashes($_POST['Guests'])); 
$Events = Trim(stripslashes($_POST['Events'])); 

// prepare email body text 
$Body = ""; 
$Body .= "Name: "; 
$Body .= $Name; 
$Body .= "\n"; 
$Body .= "Email: "; 
$Body .= $Email; 
$Body .= "\n"; 
$Body .= "Guests: "; 
$Body .= $Guests; 
$Body .= "\n"; 
$Body .= "Events: "; 
$Body .= $Events; 
$Body .= "\n"; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); 

// redirect to success page 
// CHANGE THE URL BELOW TO YOUR "THANK YOU" PAGE 
if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=http://justgooddesign.net/graduation\">"; 
} 
else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=http://justgooddesign.net/graduation/error.html\">"; 
} 
?> 

任何幫助真的表示讚賞!

回答

3

$ _POST ['Events']將是一個數組。您可以使用implode()功能加入他們的一個逗號分隔字符串:

$Events = Trim(stripslashes(implode(",", $_POST['Events']))); 

或者,你可以對他們單獨進行迭代使用foreach聲明。

+0

謝謝,這有很大的幫助!這些東西大部分都在我頭上。 – Justin 2010-06-05 20:18:51

+0

我們都從某個地方開始,只是很樂意幫助:-) – 2010-06-05 21:10:38

1

如果您不想通過逗號加入活動,但希望以其他方式使用它們,則可以使用loop through the events作爲foreach循環。取而代之的

$Body .= $Events; 

你可以使用:

foreach($Events as $event) { 
    $Body .= '- $event\n'; 
} 

這個例子想,但上有自己的行每個事件「 - 」在它前面,使它看起來像一個符號列表。

+0

對於一個'foreach'例子+1,不可否認,我懶得提供:-) – 2010-06-05 19:33:43

3

當表單中的元素名稱以括號結尾時,這意味着PHP會將值放入數組中。換句話說,如果人選擇前兩個選項,則$_POST['Events']的值將與array('Wednesday', 'Thursday')相同。如果你只是想要一個包含所有選項的字符串(類似「星期三星期四」),你可以使用implode()。如果您想檢查是否存在特定項目,可以使用in_array()。例如:

if (in_array('Wednesday', $_POST['Events'])) 
{ 
    echo 'You selected Wednesday!'; 
} 

作爲一個方面說明,我會建議重新考慮選擇控制,允許多個選擇。許多人不習慣這種行爲,也不會意識到他們可以選擇多個人。複選框更清晰。