1

私はここに新しく、質問する前に既存の投稿を検索しようとしましたが、私のフォームを修正するのに正確に機能するものを見つけることができませんでした. 私はまだこれを学んでいるので、自分のフォームで何が間違っていたのかわかりません。

以下に添付するこのフォームを使用すると、ブラウザの上部にこの警告/エラーが表示されます。

注意: 未定義のインデックス: 25 行目の /home/adk819/public_html/DummyWebs/DCC2/send_form_email.php のcheckbox_group_1
警告: implode() [function.implode]: 無効な引数が /home/adk819/public_html/DummyWebs/DCC2/ で渡されました25 行目の send_form_email.php

これが私のhtmlです(エラーのみが対象です-それは非常に大きなフォームです:/):

<form class="formTemplate" method="POST" action="send_form_email.php">
<div>
<fieldset><!-- Wrap checkbox/radio button groups in fieldsets -->
<legend id="casetype">Case Type</legend>
<div>
<input type="checkbox" id="casetype_1" name="checkbox_group_1[]" value="Rackmount" />
<label for="casetype_1">Unknown</label>
</div>
<div>
<input type="checkbox" id="casetype_2" name="checkbox_group_1[]" value="Injection" />
<label for="casetype_2">Injection Molded</label>
</div>
<div>
<input type="checkbox" id="casetype_3" name="checkbox_group_1[]" value="Rotationally" />
<label for="casetype_3">Rotationally Molded</label>
</div>
<div>
<input type="checkbox" id="casetype_4" name="checkbox_group_1[]" value="Rackmount" />
<label for="casetype_4">Rack Mount</label>
</div>
</fieldset>
</div>
</form>

これが私のphpです(上記の領域用):

$casetype = implode(' | ', $_POST['checkbox_group_1']);

// Construct email body

$email_message .= "Case Type: ". $casetype . "\r\n";

ここで、フォームのこの部分を作成するための情報を見つけました : http://webdesy.com/how-to-create-html-php-contact-form-radio-buttons-checkboxes-dropdown-menu/彼らに助けを求めましたが、まだ修正はありません:(。

あなたが私に与えることができるどんな助けにも感謝します! メアリー~

4

3 に答える 3

1

コードを issset にバインドしようとすると、チェックボックス変数が次のように存在する場合にのみ実行されます

if(is_array($_POST['checkbox_group_1']) && isset($_POST['checkbox_group_1']))
{
$casetype = implode(' | ', $_POST['checkbox_group_1']);

// Construct email body

$email_message .= "Case Type: ". $casetype . "\r\n";
}

エラーは基本的に、チェックボックスが配列として設定されていない場合に発生するため、配列を想定しているため、PHP で implode を実行しようとすると、うまくいきません。

于 2013-10-21T19:03:44.167 に答える
0

内破する前に $_POST 値を確認することをお勧めします。

特定のグループのチェックボックスがチェックされていない場合、その変数は投稿されず、未定義になります。

この例では、PHPempty()三項演算子を使用しています。

$casetype = !empty($_POST['checkbox_group_1']) 
              ? implode(' | ', $_POST['checkbox_group_1'])
              : false;

編集:

グループでオプションが選択されていない場合に、特定のメッセージを表示することもできます。
欠損値を に設定する代わりに、別の値にfalse設定します。

$casetype = !empty($_POST['checkbox_group_1']) 
              ? implode(' | ', $_POST['checkbox_group_1'])
              : "n/a";
于 2013-10-21T19:02:31.720 に答える
0

チェックされていないチェックボックスは、フォームと共に送信されません。特定のグループでチェックボックスがチェックされていない場合、そのグループ名は送信されず、checkbox_group_n未定義になります。次のようなものが必要です

if (isset($_POST['checkbox_group_1'])) {
  implode...
}
于 2013-10-21T19:01:13.817 に答える