0

お問い合わせフォームを設定し、返信をメールアカウントに送信するように設定しました。フォームの一部は一連のチェックボックスであり、これらをリストとして電子メールに表示する必要があります。これは私が以下に持っているコードであり、現時点ではチェックボックスの値の代わりに「配列」を返します。助言がありますか?

HTML:

<h3>Service required:</h3>
<input type="text" id="name" name="name" placeholder="Name" required />
<input type="email" id="email" name="email" placeholder="Email" required />
<input class="check-box styled" type="checkbox" name="service[]" value="Service / repairs" /><label> Service / repairs</label>
<input class="check-box styled" type="checkbox" name="service[]" value="MOT" /><label> MOT</label>
<input class="check-box styled" type="checkbox" name="service[]" value="Cars for sale" /><label> Cars for sale</label>

これがphpです:

<?php
    if (isset($_POST['service'])) {
    $service = $_POST['service'];
    // $service is an array of selected values
}
$formcontent= "From: $name \n Service(s) required: $service \n";
$recipient = "name@email.com";
$subject = "You have a new message from $name";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You! We will get back to you as soon as we can.";
?>

ありがとう、

ジェイソン

4

4 に答える 4

4

配列要素を文字列に結合する(たとえば、'、'でimplodeする)必要があります。

<?php
$formcontent= "From: $name \n Service(s) required: ".implode(", " ,$service)." \n";
?>
于 2012-08-16T14:47:03.077 に答える
1

配列をループして、目的の結果を文字列に変換してみませんか?

if (isset($_POST['service'])) {
    $service = $_POST['service'];
    // $service is an array of selected values
    $service_string = "";
    for($i=0;$i<count($service);$i++)
    {
        if($i!=0)
        {
            $service_string = $service_string . ", ";
        }
        $service_string = $service_string . $service[$i];
    }
}

次に、チェックされた各項目のコンマ区切りリストの出力が$service_stringとして取得されます。

于 2012-08-16T14:47:48.763 に答える
1

にいくつかのチェックボックスが格納され$_POST['service']ているため、それ自体が配列であり、2次元になっています。そのさまざまなインデックスには、次のようにアクセスできます$_POST['service'][0]

で何かを行うには$_POST['service']、foreachを使用してすべてのインデックスをループします。

foreach($_POST['service'] as $post){
    //Do stuff here
}

または、 implode()を使用して、すべてのインデックスを単純に連結します。

于 2012-08-16T14:49:12.850 に答える
0

入力タイプcheckbixには一意の名前が必要です。それ以外の場合、最後のチェックボックスは$_POSTにあります。または、上記のようにループすることもできます。電子メールのhtml形式を作成し、htmlの文字列を$formcontentに書き込みます。例えば

$formcontent = "<html><head></head><body>";
$formcontent .= "<ul><li>".$_POST["checkbox1"]."</li>";
$formcontent .= "<li>".$_POST["checkbox2"]."</li>";
$formcontent .= "</ul></body></html>";

電子メールをhtml形式で書き込むには、phpWebサイトのメール機能を参照してください。

于 2012-08-16T14:51:10.323 に答える