みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【PHP】メールフォームの連動するセレクトボックス

メールフォームを作っているのですが、
連動するセレクトボックスにおいて、
自動返信メールに内容が思った様に記載されません。
複数のチェックボックがあり、それぞれに連動して、
セレクトボックス1でサイズを選び、セレクトボックス2で数を選ぶようになっています。
ソースは最後に記載しますが、希望する返信メールの形は以下の通りです。

ーーーーーー現在ーーーーーー
【色 / サイズ / 数量】
S 1個 L 2個 S 3個

【料金】
(表示なし)

ーーーーーー希望ーーーーーー

【色 / サイズ / 数量】
レッド S 1個
ブルー L 2個
イエロー S 3個

【料金】
S × 4個:600円 =1,800円
L × 2個:900円 =1,800円

ご教示のほど、お願い致します。


以下、ソースです。
<dt>色</dt>
<dd>
<label class="color"><input type="checkbox" name="color[]" id="color_01" value="レッド">レッド</label>
</dd>
<dd>
<select class="parent" name="size_01">
<option value="" class="msg" selected>サイズを選択</option>
<option value="S">S:600円</option>
<option value="L">L:900円</option>
</select>
</dd>
<dd>
<select class="children" name="number_01">
<option value="0" class="msg" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select><br>
</dd>
<dd>
<label class="color"><input type="checkbox" name="color[]" id="color_01" value="ブルー">ブルー</label>
</dd>
<dd>
<select class="parent" name="size_02">
<option value="" class="msg" selected>サイズを選択</option>
<option value="S">S:600円</option>
<option value="L">L:900円</option>
</select>
</dd>
<dd>
<select class="children" name="number_02">
<option value="0" class="msg" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select><br>
</dd>
<以下、他の色が同様に続きます>
<dt>料金</dt>
<dd class="required">
<div id="result">
S:合計<span class="s maisu" name="sum_s_n" value="0">0</span>個 × 600円 = <span class="s kingaku" name="sum_s_p" value="">0</span>円<br>
L:合計<span class="a maisu" name="sum_a_n">0</span>個 × 900円 = <span class="all kingaku" name="sum_all">0</span>

投稿日時 - 2018-12-28 11:09:05

QNo.9572174

困ってます

質問者が選んだベストアンサー

う~ん。質問者さんが、わるいわけではないのですが、
$set_body .= '【'.$this->order_isset[$i][3].'】'.PHP_EOL;
$set_body .= $this->post_isset[$i];
ここら辺がすでに合成済みのパラメーターになっているので、
これの大本を見つけてそこから治さないと
ここだけ見ていても、対処できない感じですね。
該当部が絞りにくいプロジェクトのようで、
困りましたね。

お金をかけてもいいプロジェクトであれば、ホームページ代行などを
使うのも手ですが。趣味レベルだと、ちょっとこのサイトで
ちょいちょい聞いたらわかって~それで直せて~結果~よかったね~
みたいな、シンプルな流れを生み出せそうに感じなかったもので、
お力になれずすいません。

やりたいこと自体は、簡単なことなんです。
しかし何らかのフレームワークが入っているソースのようで、
そこまで質問者さんが把握していない感じなのでこのサイトで、
「これ?」とひたすら聞いてやるには、
無理があるな~というのが、正直な感想になります。

投稿日時 - 2018-12-28 19:38:37

お礼

ありがとうございます。
もうちょっと勉強して、絞り込めるようになったらまた質問させて頂きます。
ご丁寧にありがとうございました!

投稿日時 - 2018-12-28 20:16:45

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

すいませんが、
質問は、PHPに関してなのですが、
>【PHP】メールフォームの連動するセレクトボックス

ソースはこれは、HTMLであり、PHPに送るデータを作るものでしか
ありません。
ですので、現在のPHPソースを貼らないと、解決できない問題になります。

投稿日時 - 2018-12-28 11:38:58

補足

ご返答ありがとうございます。PHPがあまり分からないので、すみません。
該当の部分(と思われる)ソースを貼らせて頂きます。
よろしくお願いします。

public function mail_set( $set ) {

if ( file_exists( dirname( __FILE__ ) .'/../addon/dear-name/variable-init.php' ) ) {
include( dirname( __FILE__ ) .'/../addon/dear-name/variable-init.php' );
}

$send_date = date( 'Y年m月d日 H時i分s秒' );

$set_body = PHP_EOL;
$set_body .= '-----------------------------------------------------------------------------------'.PHP_EOL;
$set_body .= PHP_EOL;
$set_body .= '【送信時刻】'.PHP_EOL;
$set_body .= $send_date;

for ( $i = 1; $i < $this->order_count + 1; $i++ ) {

if ( $this->order_isset[$i][1] === 'mail_address_confirm' ) {
continue;
}

if ( file_exists( dirname( __FILE__ ) .'/../addon/dear-name/name-get.php' ) ) {
include( dirname( __FILE__ ) .'/../addon/dear-name/name-get.php' );
}

if ( $this->post_isset[$i] !== '' ) {
if ( $this->order_isset[$i][2] === 'false' ) {
$set_body .= PHP_EOL;
$set_body .= PHP_EOL;
$set_body .= '【'.$this->order_isset[$i][3].'】'.PHP_EOL;
$set_body .= $this->post_isset[$i];
} else {
$set_body .= ' '.$this->post_isset[$i];
}
}

}

投稿日時 - 2018-12-28 12:20:38

あなたにオススメの質問