4

これに関するいくつかの助けに感謝します:

ユーザーが少なくとも 1 つのオプションを選択することを推奨する一連のチェックボックスがあります。PHP を使用してこれらすべてのオプションを 1 つの変数に格納し、この変数を電子メール本文の末尾に添付して、電子メールを使用してサイト ホストに送信したいと考えています。ただし、ユーザーが選択した最後のオプションしか取得できないようです。配列構文 (例: name="instrument[]") を使用してみましたが、この配列から値を取得する方法が見つからないようです。「implode」メソッドを使用して投稿値を保存しましたが、「警告: implode(): 無効な引数が C:\xampp\htdocs\academy\contact-process.php に渡されました」というエラー メッセージが表示され続けます。 8".

私のコードは以下の通りです:

Contact.html

<tr>
    <td>
        <label id="checkbox">Piano</label>
        <input id="piano" type="checkbox" name="instrument[]" value="Piano" class="required" title="Please check at least one option.">
    </td>
    <td>
        <label id="checkbox">Flute</label>
        <input id="flute" type="checkbox" name="instrument[]" value="Flute">
    </td>
    <td>
        <label id="checkbox">Singing</label>
        <input id="singing" type="checkbox" name="instrument[]" value="Singing">
    </td>
</tr>


<tr>
    <td>
        <label id="checkbox">Violin</label>
        <input id="violin" type="checkbox" name="instrument[]" value="Violin">
    </td>

連絡先-process.php:

<pre><?php


$title = $_POST["title"];
$forname = $_POST["firstname"];
$surname = $_POST["lastname"];
$phone = $_POST["phone"];
$instrument = implode(' ', $_POST["instrument"]);
$hear = $_POST["method"];       
$enrole = $_POST["child"];
$dob = $_POST["date"];
$message = $_POST["enquiry"];




$email_body = "";
$email_body = $email_body . "Title: " . $title . "\n";
$email_body = $email_body . "Forname: " . $forname . "\n";
$email_body = $email_body . "Surname: " . $surname . "\n";
$email_body = $email_body . "Telephone Number: " . $phone . "\n";
$email_body = $email_body . "Heard About You From: " . $hear . "\n";
$email_body = $email_body . "Interested In Learning: " . $instrument . "\n";
$email_body = $email_body . "Would Like To Enrole A(n): " . $enrole . "\n";
$email_body = $email_body . "Child's Date of Birth: " . $dob . "\n";
$email_body = $email_body . "Message: " . $message;

echo $email_body; 

?></pre>

現時点では、これにより上記のエラーメッセージが生成されます。

誰でも解決策を知っていますか?

返信ありがとうございます。

ロバート。

4

5 に答える 5

3

以下は、現在の配列入力タイプです。

 <input id="singing" type="checkbox" name="instrument[]" value="Singing">

このようにループして処理する必要があります

 foreach($_POST['instrument'] as $instrument)
{
    echo $instrument.'<br>';
}
于 2013-06-24T11:56:15.117 に答える
2

これを試して、

$instrument = (is_array($_POST["instrument"])) ? implode(' ', $_POST["instrument"]) : '';
于 2013-06-24T11:51:01.330 に答える
0

このように $intrument 配列を参照してみましたか?

$email_body .= "Interested In Learning: ";
foreach($_POST['instrument'] as $value){
    $email_body .= $value;
}
$email_body .= "\n";

ところで、私は "$email_body = $email_body ." と同等の "$email_body .=" を使用することを好みます。(しかし短い:P)。

于 2013-06-24T11:48:41.480 に答える
0

json_encodeこの問題にもメソッドを使用できます。

json_encode($_POST['instrument']);

配列をjson文字列に変換します。{'piono','Flute','Singing','Violin'}

次回、すでに選択されているものを表示するときに使用できます

json_decode({'piono','Flute','Singing','Violin'});

json 文字列を配列に変換し、この json 文字列の重みも低くなります。この json 文字列を DB に直接保存できます。

于 2013-06-24T11:53:02.277 に答える