0

私のPHPメールフォームには、チェックボックスの異なるセットであるwebdetailsgraphicdetailsの2つの別々の配列があります。1 つのセットのみが入力されます (前のラジオ ボタンが選択されていない限り、もう 1 つのセットは非表示になります)。PHP でそれらを正しく参照する方法を考えています。

これは私が1つを投稿するために使用したものですが、2つではありません:

foreach($_POST['webdetails'] as $value1) {
    $webdetails_msg .= "$value1\n";
}

そこにグラフィックの詳細を追加するにはどうすればよいですか? スニペットを複製すると、警告が表示されます: foreach() に無効な引数が指定されました

私はこれ以上のPHPを知らないので、説明をいただければ幸いです。

--

エラーが発生するPHPは次のとおりです。

<?php
/* Set mail headers */
$myemail  = "my.email@gmail.com";
$subject    = "New Request";

$webdetails         = $_POST['webdetails'];
$graphicdetails     = $_POST['graphicdetails'];

foreach($_POST['webdetails'] as $value1) {
    $webdetails_msg .= "$value1\n";
}
foreach($_POST['graphicdetails'] as $value2) {
    $graphicdetails_msg .= "$value2\n";
}

/* Let's prepare the message for the e-mail */
$message = "
Details:
$webdetails_msg
$graphicdetails_msg
";

/* Send the message using mail() function */
mail($myemail, $subject, $message);

<?php exit(); } ?>

Webdetails の HTML:

<input type="checkbox" name="webdetails[ ]" id="design" value="Design" />
<input type="checkbox" name="webdetails[ ]" id="development" value="Development" />
<input type="checkbox" name="webdetails[ ]" id="web-updates" value="Web Updates" />
<input type="checkbox" name="webdetails[ ]" id="forum-template" value="Forum Template (Full)" />
<input type="checkbox" name="webdetails[ ]" id="forum-graphics" value="Forum Graphics" />
<input type="checkbox" name="webdetails[ ]" id="web-other" value="Other" />

グラフィック詳細の HTML:

<input type="checkbox" name="graphicdetails[ ]" id="graphic-logo" value="Logo Design" />
<input type="checkbox" name="graphicdetails[ ]" id="graphic-social" value="Social Media Graphics" />
<input type="checkbox" name="graphicdetails[ ]" id="graphic-other" value="Other" />
4

1 に答える 1

4

問題ないように見えるので、これだと思います:

チェックボックスがチェックされていない場合、チェックボックスは投稿されません。

if (isset($_POST['graphicdetails'])){
    foreach($_POST['graphicdetails'] as $value1) {
        $webdetails_msg .= "$value1\n";
    }
}

しかしいずれにせよ

if (isset($_POST['graphicdetails'])){
    $webdetails_msg .= implode("\n", $_POST['graphicdetails'])."\n";
} // you don't need the curly braces for 1 line but SO has a small code width

書くことが少ない

于 2013-01-12T23:58:39.447 に答える