2017-01-23 10 views
1

フォームデータを表形式のメールに送信する必要があります。このために私はPHPMailerを使用しています。ユーザーが選択した値を表示しようとすると、配列として表示されるだけです。誰かが私にこのコードの何が間違っているかを見つけるのを助けることができますか?以下は配列の値をエコーすることができません

ここでHTML

<input type="checkbox" name="Favorite_Drink[]" value="Vodka">Vodka 
<input type="checkbox" name="Favorite_Drink[]" value="Vodka">Vodka 
<input type="checkbox" name="Favorite_Drink[]" value="Bear">Bear 

の一部は、PHPの一部今、このインデックスが値を取得するために使用することができます

$Favorite_Drink = $_POST['Favorite_Drink']; 
$mail = new PHPMailer; 

//$mail->SMTPDebug = 3;        // Enable verbose debug output 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = '[email protected]';     // SMTP username 
$mail->Password = 'pass';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable TLS encryption, `ssl` also accepted 
$mail->Port = 587;         // TCP port to connect to 

$mail->setFrom('[email protected]', 'User'); 
$mail->addAddress('[email protected]', 'Joe User');  // Add a recipient 
//$mail->addAddress('[email protected]');    // Name is optional 
$mail->addReplyTo('[email protected]', 'Information'); 
$mail->addCC('[email protected]'); 
//$mail->addBCC('[email protected]'); 
$mail->Subject = 'Here is the subject'; 
//$mail->Body = "Name of patient is "; 
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 
$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$mail->isHTML(true); 
$mail->Subject = ' Test'; 
$mail->Body = <<<EOF 
<html><body> 

    <br> 
    <table rules="all" style="border-color: #666;" cellpadding="10"> 
     <tr style='background: #eee;'> 
      <td>Favorite_Drink </td> 
      <td> echo implode(" ",$Favorite_Drink)."<br>";</td> 
     </tr> 
</table> 
</body> 
</html> 
EOF; 

      //Altbody is used to display plain text message for those email viewers which are not HTML compatible 

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 
     } 
} 
+0

var_dump($ Favorite_Drink); ?? – Kaylined

答えて

3

PHP文はここでは実行されません。したがって、echoは実行されず、implode()関数が呼び出されます。変数を展開するだけなので、$Favorite_Drinkを使用すると、Arrayに展開されます。

implode()の結果を最初に変数に入れる必要があります。

$drinks = implode(" ", $Favorite_Drink); 
$mail->Body = <<<EOF 
<html><body> 

    <br> 
    <table rules="all" style="border-color: #666;" cellpadding="10"> 
     <tr style='background: #eee;'> 
      <td>Favorite_Drink </td> 
      <td> $drinks <br></td> 
     </tr> 
</table> 
</body> 
</html> 
EOF; 
+0

の定義+1。私はhere-docの明確な画像を得た –

-1
<input type="checkbox" name="Favorite_Drink['checkBox']" value="Vodka"> 

です。すべてのチェックボックスにこれを適用してください

+2

もし彼がこれをしたら、彼はそれらのすべてを手に入れません。 'name = xxx []'を使うと、PHPはすべての入力をインデックス配列に結合するよう指示します。 – Barmar

+0

@Barmarはここで正しいです。 –

関連する問題