2011-08-16 14 views
0

私は最近PHP電子メールフォームを作成しており、チェックボックスの値を正しく送信できません。フォームは私が他の場所で見つけたものであり、変更されています。 HTMLはかなり簡単です。今、私はそれは単純にどちらかの選択された単一の値を返す、または複数が選択されている場合は、「配列」とは言うPHPを通してそれを送信したときのようPOSTを使用してメッセージにチェックボックスの値を配置するにはどうすればよいですか?

<label for="needs">I am looking for...</label> 
<input name="needs[]" id="needs" type="checkbox" value="product list">A Product List<br> 
<input name="needs[]" id="needs" type="checkbox" value="educational support">Educational Support<br> 
<input name="needs[]" id="needs" type="checkbox" value="catering options">Catering Options<br> 
<input name="needs[]" id="needs" type="checkbox" value="party ideas">Party Ideas<br> 
<input name="needs[]" id="needs" type="checkbox" value="healthy alternatives">Healthy Alternatives<br> 
<input name="needs[]" id="needs" type="checkbox" value="other">Other (please specify)<br> 

。私が望むのは、選択された値をリストするために私に送られるメールのメッセージです。私は他の場所で検索しましたが、私と同じ状況はまだ見つかりませんでした。ここにPHPがあります:

<?php 
$msg= 
'Name:  '.$_POST['name'].'<br /> 
Category: '.$_POST['category'].'<br /> 
Email:  '.$_POST['email'].'<br /> 
Phone:  '.$_POST['telephone'].'<br /> 
Looking for: '.$_POST['needs'].'<br /> 
IP:  '.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 

'.nl2br($_POST['message']).' 

'; 
?> 

残りのコードはセットアップとメッセージの送信です。私が望むことをするための他の方法はあるが、ここに含まれている$ msgを使い続けたいと思う。

ご協力いただきありがとうございます。

修正コード:それは本当に配列なので

$msg= 
'Name:  '.$_POST['name'].'<br /> 
Category: '.$_POST['category'].'<br /> 
Email:  '.$_POST['email'].'<br /> 
Phone:  '.$_POST['telephone'].'<br /> 
Looking for: '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br /> 
IP:  '.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 

'.nl2br($_POST['message']).' 

'; 
+0

HTMLを改善するには、入力タグからid = "needs"属性も削除する必要があります。 idの値は一意である必要があります –

+0

名前が同義語 –

答えて

1

あなたは、配列のように$ _POST [ '必要']で動作するはずです。あなただけのチェックをチェックボックスのリストを取得したい場合は、文字列に配列に参加することができます。

$checked_options = implode("\n", $_POST['needs']); 

を、あなたは、特定のオプションがチェックされているかどうかを確認することができますように

if (in_array("educational support", $_POST['needs'])) echo ("educational support is checked"); 

と.. 。あなたのケースで

私は、次の操作を行います。

<?php 
$msg= 
'Name:  '.$_POST['name'].'<br /> 
Category: '.$_POST['category'].'<br /> 
Email:  '.$_POST['email'].'<br /> 
Phone:  '.$_POST['telephone'].'<br /> 
Looking for: '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br /> 
IP:  '.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 
'.nl2br($_POST['message']).' 

'; 
?> 

'.nl2br($_POST['message']).' 

「; ?>

+0

私は上記のコードに記載しますか?私はimplode関数を見てきましたが、まだそれを動作させることはできませんでした。 – foochow

+0

はい、そうです。私は私の答えを更新しました – heximal

+0

うーん、私はそれを試み、それは次を返しました:探して:配列 – foochow

関連する問題