0

OK、私はグーグルとグーグルをもう少ししました、そして私は立ち往生しています。私はphpのアイデアに本当に慣れていませんが、メールに送信するときにチェックしたボックスの1つだけが表示されることを除いて、最終的にフォームがやりたいことを実行できるようになりました。私は本当に助けを求めるのが嫌いですが、ここに行きます。

これが私のhtmlです:

<tr>
 <td valign="left"><p>Please check all items needed *</p>
   <p class="style2">(Default order will be one of each checked item unless otherwise indicated in the comments section.)</p>
 <td valign="top">
     <div align="left">

 <input type="checkbox" name="supplies[]" value="black_toner" /> Black Toner<br />
 <input type="checkbox" name="supplies[]" value="cyan_toner" /> Cyan Toner<br />
 <input type="checkbox" name="supplies[]" value="magenta_toner" /> Magenta Toner<br />
 <input type="checkbox" name="supplies[]" value="yellow_toner" /> Yellow Toner<br />
 <input type="checkbox" name="supplies[]" value="black_drum" /> Black Drum<br />
 <input type="checkbox" name="supplies[]" value="cyan_drum" /> Cyan Drum<br />
 <input type="checkbox" name="supplies[]" value="magenta_drum" /> Magenta Drum<br />
 <input type="checkbox" name="supplies[]" value="yellow_drum" /> Yellow Drum<br />
 <input type="checkbox" name="supplies[]" value="waste_toner" /> Waste Toner<br />
 <input type="checkbox" name="supplies[]" value="staples" /> Staples<br />
     </div>
   <td valign="top"> </td>
</tr>

そしてこれは私のphpです

 }
    $email_message = "Form details below.\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Company: ".clean_string($company)."\n";
$email_message .= "Location: ".clean_string($location)."\n";
$email_message .= "Machine Model: ".clean_string($machine_model)."\n";
$email_message .= "Supplies: ".clean_string($supplies)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Telephone: ".clean_string($telephone)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";


// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

私が言ったように、私は私が思うものすべてを試しましたが、明らかに何かが間違っています。php / htmlに何を追加するか、チェックボックスからすべての応答を1つだけではなく取得するように変更する必要がありますか?誰かアドバイスがあれば大歓迎です。(私が言ったように、できるだけ具体的にしてください、私は初心者です)ありがとう!

4

4 に答える 4

0

http://www.kavoir.com/2009/01/php-checkbox-array-in-form-handling-multiple-checkbox-values-in-an-array.html

1)このHTML:

<input type="checkbox" name="tags[]" value="1" />
<input type="checkbox" name="tags[]" value="2" />
<input type="checkbox" name="tags[]" value="3" />
<input type="checkbox" name="tags[]" value="4" />

2)...このPHPになります:

print_r($_POST['tags']);
// output
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

3)あなたの場合、フォームで「ブラックトナー」と「シアンドラム」のみをチェックした場合、配列に戻す必要がある値は「black_toner」と「cyan_drum」のみです。取得した値を処理するようにコードを変更するだけです。

4)フォームを切り取って貼り付け、「action =」を「phpinfo()」を呼び出すスクリプトに設定しました。これがphpinfoの結果で、black_tonerとcyan_drumのみをチェックしています。

_POST["supplies"]

Array
(
    [0] => black_toner
    [1] => cyan_drum
)
于 2012-07-25T20:59:29.087 に答える
0

[]をその形式にすると、$suppliesは配列になります。それらを分離するには、関数implodeを使用する必要があります。

$supplies = implode(",", $supplies);
于 2012-07-25T20:55:23.740 に答える
0
$string = implode(", " $_POST['supplies']);
于 2012-07-25T20:55:39.460 に答える
0

$ supplyを割り当てている場所は表示されませんが、配列です。割り当てるときにこれを試してください。

$supplies = implode(',',$_POST['supplies']);
于 2012-07-25T20:55:49.287 に答える