2011-08-16 22 views
0

我一直致力於最近創建一個PHP電子郵件表單,並且無法正確發送複選框值。該表格是我在其他地方找到的並且一直在修改的表單。 HTML相當簡單。如何使用POST在郵件中放置複選框值?

<label for="needs">I am looking for...</label> 
<input name="needs[]" id="needs" type="checkbox" value="product list">A Product List<br> 
<input name="needs[]" id="needs" type="checkbox" value="educational support">Educational Support<br> 
<input name="needs[]" id="needs" type="checkbox" value="catering options">Catering Options<br> 
<input name="needs[]" id="needs" type="checkbox" value="party ideas">Party Ideas<br> 
<input name="needs[]" id="needs" type="checkbox" value="healthy alternatives">Healthy Alternatives<br> 
<input name="needs[]" id="needs" type="checkbox" value="other">Other (please specify)<br> 

截至目前,當我發送它通過它簡單地返回單個選定的值,或者如果多個被選擇是說「陣列」的PHP。我想要的是發送給我的郵件消息列出所選的值。我在其他地方搜索過,但還沒有找到與我的情況相同的情況。這裏是PHP:

<?php 
$msg= 
'Name:  '.$_POST['name'].'<br /> 
Category: '.$_POST['category'].'<br /> 
Email:  '.$_POST['email'].'<br /> 
Phone:  '.$_POST['telephone'].'<br /> 
Looking for: '.$_POST['needs'].'<br /> 
IP:  '.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 

'.nl2br($_POST['message']).' 

'; 
?> 

其餘的代碼是安裝和發送的消息。我意識到還有其他的方式來做我想做的,但是想繼續使用這裏包含的$ msg。

任何幫助將不勝感激,謝謝。

修改後的代碼:

$msg= 
'Name:  '.$_POST['name'].'<br /> 
Category: '.$_POST['category'].'<br /> 
Email:  '.$_POST['email'].'<br /> 
Phone:  '.$_POST['telephone'].'<br /> 
Looking for: '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br /> 
IP:  '.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 

'.nl2br($_POST['message']).' 

'; 
+0

爲了改善您的HTML,您還應該從輸入標籤中刪除id =「needs」屬性。 ID值應該是唯一的 –

+0

同上名稱 –

回答

1

你應該$ _ POST [「需要」]工作與陣列,因爲它是真正的數組。如果你只想得到選中的複選框的列表,你可以在陣列連接字符串:

$checked_options = implode("\n", $_POST['needs']); 

你可以檢查某些選項是否被選中與否:

if (in_array("educational support", $_POST['needs'])) echo ("educational support is checked"); 

等.. 。

你的情況

我會做到以下幾點:

<?php 
$msg= 
'Name:  '.$_POST['name'].'<br /> 
Category: '.$_POST['category'].'<br /> 
Email:  '.$_POST['email'].'<br /> 
Phone:  '.$_POST['telephone'].'<br /> 
Looking for: '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br /> 
IP:  '.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 
'.nl2br($_POST['message']).' 

'; 
?> 

'.nl2br($_POST['message']).' 

「; ?>

+0

我會將它放在上面的代碼中嗎?我一直在尋找內爆功能,但還沒有設法讓它工作。 – foochow

+0

是的,你會的。我已經更新了我的回答 – heximal

+0

嗯,我試過了,它返回了以下內容:尋找:Array – foochow