アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPで返信メールにチェックボックスの値を表示したいのですが。。。

PHP初心者です。
request.phpという資料請求用のWEBページを作成しており、お問い合わせ項目内に
以下の様なチェックボックスを設けました。

<tr>
<th>ご希望される商品</th>
<td>
<input type="checkbox" name="kibo[]" value="a-set" /> Aセット<br />
<input type="checkbox" name="kibo[]" value="b-set" /> Bセット<br />
<input type="checkbox" name="kibo[]" value="c-set" /> Cセット<br />
<input type="checkbox" name="kibo[]" value="d-set" /> Dセット
</td>
</tr>

入力後の内容確認画面では、

<tr>
<th>ご希望される商品:</th>
<td class="subheader_txt_l"><?php echo implode(' / ', $_POST['kibo']);?></td>
</tr>

として、選択した項目が表示されるところまではできましたが、送信ボタン後、確認メールが
送られてくる仕組になっているのですが、メール本文内では【ご希望される商品】欄が空っぽで
返ってきます。。。

ちなみにメール本文作成の処理では、

$body .=
'【氏名】        '.$_POST['name1']."\n".
'【メールアドレス】   '.$_POST['mail']."\n".
'【住所】        '.$_POST['zyuusyo']."\n".
'【ご希望される項目】  '.$_POST['kibo']."\n".
'【お問い合わせ内容】  '.$_POST['comment']."\n\n".

値取得にあたり特別な関数が必要なのでしょうか。
ご教授頂けますと幸いです。よろしくお願いします。

A 回答 (4件)

まったく何も表示されないならばNo.2の方が言うように値の受け渡しができていないのでしょう。


入力画面-(1)->確認画面-(2)->メール処理とすると
ありがちなのは(2)の部分でデータがPOSTされていないということです。
(1)でPOSTされたデータは特に何もしなければ(2)で再度ポストされることはないです。
(2)で入力画面の入力値を再度POSTするためにはhiddenで値を設定すればよいです。
<tr>
<th>ご希望される商品:</th>
<td class="subheader_txt_l"><?php echo implode(' / ', $_POST['kibo']);?></td>
<input type="hidden" name="kibo" value="<?php echo implode(' / ', $_POST['kibo']);?>" />
</tr>
↑のようにしておくとメール処理では$_POST['kibo']に連結された状態で値がセットされると思います。
氏名とかはメール処理で入ってくるとしたらちょっと不可解ですが確認画面でechoで出力したのではなくテキストフィールドをreadonlyにして表示したのならありかな?とも思います。

POSTはちゃんとやってるはずだよ、というならば正しくPOSTできていないことが考えられます。
(2)でPOSTしたときにnameが'kibo'になってなかったりするかもしれません。
またformの中に入ってないのかもしれません。その辺は確認画面のソース(phpじゃなくてhtmlとして出力されたもの)を表示してみて正しく確認画面が作られているか確認してください。

それでもダメだったら・・・文字コード関係かもしれません。
メール送信処理で、メールを送る直前($bodyの内容が確定した時点)でprint等でブラウザに出力させてみてください。
    • good
    • 0
この回答へのお礼

>duron 様

ご丁寧にありがとうございます!
できました!!
duron様のおっしゃる確認画面段階での受け渡し時に

<input type="hidden" name="kibo[]" value="<?php print(implode(' / ', $_POST['kibo']));?>">

としたら、できました!
ありがとうございます。

お礼日時:2010/07/02 09:35

> ですが、「Array」すら表示されず、【ご希望される項目】のみが表示されております。

。。
いや、うん、だから。。。^^;

『内容確認画面からメール本文作成処理へ受け渡しが出来ているかご確認ください。』

「内容確認画面」から「メール本文作成処理」へhiddenとかで受け渡しているのだと思ったのですが、それは ちゃんと受け渡せていますか?って事だったのですが^^;
    • good
    • 0
この回答へのお礼

>bm_hiro 様

すみません。ほんと無知なものでまともなお応えすらできず、脱力させてしまいました。

お礼日時:2010/07/02 09:36

> '【ご希望される項目】  '.$_POST['kibo']."\n".


ちゃんと、内容が受け渡されていれば、↑これだったとしても、「空っぽ」という事はなく、「Array」と表示されるはずです。

内容確認画面からメール本文作成処理へ受け渡しが出来ているかご確認ください。
    • good
    • 0
この回答へのお礼

>bm_hiro 様

お返事ありがとうございます。
ですが、「Array」すら表示されず、【ご希望される項目】のみが表示されております。。。

お礼日時:2010/07/01 14:33

出力時にimplodeで配列「$_POST['kibo']」を結合して出力しています。


ですのでメール本文作成時も
'【ご希望される項目】  '.implode(' / ', $_POST['kibo'])."\n".
とする必要があります。
    • good
    • 0
この回答へのお礼

> duron 様

ご回答ありがとうございます。
ご教示頂いた通りにしてみましたが、やはりブランクとなってしまいます。。。

その他、考慮すべきことはありますでしょうか?

お礼日時:2010/07/01 13:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!