我用多維數組創建了一個表單,並且我試圖通過將數組的內容寫入文本文件然後讓它讀取數組來使用PHPmailer發送包含數組的電子郵件文件的內容,但當我發送電子郵件它只顯示爲'';} fclose();?>「。我究竟做錯了什麼?用多維數組發送表單
這裏是形式與多維數組的代碼:
<form id="form" name="form" method="post" action="send_mail_tray.php" onsubmit='return packageValidator()'>
<table width="100%">
<tr>
<td><input type="hidden" name="appetizer[]" value="Appetizer 1" />Appetizer 1</td>
<td style="width: 75px" align="right">
Med: <input type="text" name="appetizer[0][Med]" style="width: 30px" /><br />
Lg: <input type="text" name="appetizer[0][Lg]" style="width: 30px" />
</td>
<td><input type="hidden" name="appetizer[]" value="Appetizer 2" />Appetizer 2</td>
<td style="width: 75px" align="right">
Med: <input type="text" name="appetizer[1][Med]" style="width: 30px" /><br />
Lg: <input type="text" name="appetizer[1][Lg]" style="width: 30px" />
</td>
<td><input type="hidden" name="appetizer[]" value="Appetizer 3" />Appetizer 3</td>
<td style="width: 75px" align="right">
Med: <input type="text" name="appetizer[2][Med]" style="width: 30px" /><br />
Lg: <input type="text" name="appetizer[2][Lg]" style="width: 30px" />
</td>
</tr>
...
</table>
<input type="Submit" value="Submit Order" />
</form>
我的PHP代碼:
foreach ($_POST['appetizer'] as $piece => $sizes){
$medSize = $sizes['Med'];
$lgSize = $sizes['Lg'];
if(!empty($medSize) || !empty($lgSize)){
$appetizer .= $_GET['appetizer'] . " - Med: " . $medSize . ", Lg: " . $lgSize;
}
}
$message = ("<p>Thank you for your catering request!</p>
<p><b>Name:</b> $name<br />
<b>Phone #:</b> $phone<br />
<b>Email:</b> $email</p>
<p><b>Appetizers:</b><br />
$appetizer
</p>");
我一直在使用andrewsi的代碼也試過,但使用它之後,我不再接收電子郵件:
foreach ($_POST['appetizer'] as $piece => $sizes){
$medSize = $sizes['Med'];
$lgSize = $sizes['Lg'];
if(!empty($medSize) || !empty($lgSize)){
$message .= $_GET['appetizer'] . " - Med: " . $medSize . ", Lg: " . $lgSize;
}
}
以下是發送電子郵件的代碼:
$email = $_REQUEST['email'];
$mail = new PHPMailer();
$mail->Host = //SMTP server
$mail->Sender = //Sender
$mail->From = //From
$mail->AddReplyTo("[email protected]email.com");
$mail->FromName = //FromName;
$mail->AddAddress($email);
$mail->IsHTML(true);
$mail->Subject = //Subject;
$mail->Body=$message;
$mail->WordWrap = 50;
$mail->Send();
echo"<script>window.location='thankyou.html'</script>";
順便說一下,您是否有理由寫信給文本文件,然後通過電子郵件發送? – andrewsi
您不必在foreach循環中打開和關閉文件,就在打開之前和關閉之後就可以了。 – Peter
我不確定在濾除未使用的數組之後是否有任何其他方式來打印數據(大小爲空值)。有更好的解決方案嗎? –