0

私はphpが初めてです。複数のチェックボックスの値が選択されたときに、フォームから電子メールに投稿したいと思います。フォームですべてのオプションが選択されていても、最後にチェックされたオプションのみが電子メールで送信されます。このために見つけた多くの解決策を試しましたが、自分に合った解決策が見つからないようです。

私は何を間違っていますか?

HTML:

        <input type="checkbox" name="product-types-owned[]" value="Cast_Iron" /> 
        <input type="checkbox" name="product-types-owned[]" value="Braisers" />
        <input type="checkbox" name="product-types-owned[]" value="Ovens" />
        <input type="checkbox" name="product-types-owned[]" value="Skillet" />

php:

        $sendto   = "email@email.com";
        $usermail = $_POST['Email'];
        $firstname  = nl2br($_POST['First_name']);
        $lastname  = nl2br($_POST['Last_name']);
        $address1  = nl2br($_POST['Address1']);
        $address2  = nl2br($_POST['Address2']);
        $city = nl2br($_POST['City']);
        $state = nl2br($_POST['State']);
        $zip = nl2br($_POST['Zip_Code']);
        $phone = nl2br($_POST['Telephone']);
        $ownership = nl2br($_POST['product-types-owned']); 

        $subject  = "Product Registration";
        $headers  = "From: " . strip_tags($usermail) . "\r\n";
        $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html;charset=utf-8 \r\n";

        $msg  = "<html><body style='font-family:Arial,sans-serif;'>";
        $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Product Registration</h2>\r\n";
        $msg .= "<p><strong>Sent by:</strong> ".$usermail."</p>\r\n";
        $msg .= "<p><strong>First Name:</strong> ".$firstname."</p>\r\n";
        $msg .= "<p><strong>Last Name:</strong> ".$lastname."</p>\r\n";
        $msg .= "<p><strong>Address:</strong> ".$address1."</p>\r\n";
        $msg .= "<p><strong>Address Line 2:</strong> ".$address2."</p>\r\n";
        $msg .= "<p><strong>State:</strong> ".$state."</p>\r\n";
        $msg .= "<p><strong>Zip:</strong> ".$zip."</p>\r\n";
        $msg .= "<p><strong>Telephone:</strong> ".$phone."</p>\r\n";
        $msg .= "<p><strong>Products Own or Intend to Own:</strong> ".$ownership."</p>\r\n";
        $msg .= "</body></html>";

ここで解決策を試し、変更しました

$ownership = nl2br($_POST['product-types-owned']);

$ownership = nl2br(implode(',', $_POST['product-types-owned']));

エラーが表示されます: 警告: implode() [function.implode]: Invalid arguments passed in /home/content/99/11039499/html/scripts/warranty.php on line 24

助けてください、私はとてもイライラしています。

4

1 に答える 1

3
    $ownership = nl2br($_POST['product-types-owned']); 

product-types-owned選択されたチェックボックスの値の配列になります。他のことをする前に、内破する必要があります。

$ownership = nl2br(implode(',', $_POST['product-types-owned']));

現在、配列に対して nl2br を実行しようとしていますが、うまくいきません。nl2br は文字列を想定しているため、php は配列をデフォルトの文字列表現 (文字どおり単語 ) に型キャストしますArray

于 2013-06-06T16:52:41.710 に答える