• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでの注文フォーム作成について)

注文フォーム作成について

このQ&Aのポイント
  • PHPでの注文フォーム作成について初心者が質問しています。
  • 注文フォームの入力画面で自動計算した内容を確認画面に表示させたいができない状態です。
  • 送信確認画面で注文内容のメールが届くものの、入力された内容が反映されていない状態で届いてしまいます。

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

  • ベストアンサー
noname#129900
noname#129900
回答No.1

このシステムを完成させたとしても、 注文者によって注文情報が変更できてしまうので、本番では使えません。 問題箇所は以下の通り。 ・JavaScriptで計算し、結果を表示するだけなら良い、それを注文情報として送っては駄目。 ・$_GETで送信するのも駄目。 ・金額の計算はサーバサイドで行うべき。 -- まずは、どの画面で、どの情報を使うかを整理されると良いでしょう。 事前に商品情報をPHP側で配列に入れておきましょう。 (データベース等からデータを取得しているならそれを使用してください) $datas = array( array('id'=>'xxx1', 'name'=>'商品名', 'price'=>0), array('id'=>'xxx2', 'name'=>'商品名', 'price'=>0) ); 配送オプション情報をPHP側で配列に入れておきましょう。 $option_time = array( '午前', '午後' ); -- 入力画面から送られる情報を、以下に限定してください。 (小計や税込み合計は入力画面からPOSTしない) ・商品ID(英数。今は無いので付与する) ・注文個数(数値) ・配送オプション(日時指定、時間帯指定) そして、POSTで送信してください。 -- 確認画面では。 注文者が入力した商品の個数の金額をPHP側で計算します。

mililin
質問者

補足

詳しくご回答頂き、ありがとうございます! 本番で使えないんですか… 注文フォームはユーザーが注文(入力)する画面で注文個数や合計金額をが確認できるようにしたいです。 https://sv62.xserver.jp/~healing-rose/healing-rose.com/form_test/order_form.php ↑このサイトの注文フォームのような感じです。 参考サイトのような感じにするには、PHPでもすべて出来るのでしょうか? 「PHP 自動計算」などで検索したのですが、javascriptの自動計算ばかり出てきてしまって。。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#129900
noname#129900
回答No.3

提示したコードは、一つのファイルで入力&確認をしていますが、 本来は、入力-->確認と別のファイルへ遷移していたはずです。 なので、画面を別ファイルに分ければ、選択個数を保持する必要は無いです。 選択個数は、PHPで計算した値を表示すればいいのではないでしょうか。 そもそも、選択個数を保持しておくのは変ですよね。 個数のselectboxを、『注文者が手でつかんだ数』と考えると… 例: ・商品を2個手に取る ・カートに入れる(POST) ・カートに商品が2個ある状態で、強制的に商品を2個取らされる (※カートに入れてある商品だけが精算される とします) こういう状態ではありませんか?

mililin
質問者

お礼

ありがとうございます! なにもわかっていなくて、すみません。 細かく説明して頂いて助かりました。 作って頂いたコードを使わせて頂いて、なんとかできそうです。

すると、全ての回答が全文表示されます。
noname#129900
noname#129900
回答No.2

<?php $price = 100; $total = 0; if (isset($_POST['order'])) { $total = $price * $_POST['count'] * 1.05; } ?> <form method="post"> <input type="text" id="price" value="<?php echo $price; ?>" /> <select id="count" name="count"> <option value="0">-----</option> <option value="1">1</option> <option value="2">2</option> </select> <input type="text" id="total" value="0" /> <input type="submit" name="order" value="注 文" /> </form> <script> var price = document.getElementById('price'); var cnt = document.getElementById('count'); var total = document.getElementById('total'); cnt.onchange = function() { total.value = price.value * cnt.value * 1.05; } </script> <div>PHPで計算 合計:<?php echo $total; ?></div> ・JavaScriptで計算しても良い。でも、注文情報としては使えない。 上記のサンプルコードは、合計金額の計算をJavaScriptとPHPで行っています。 しかし、JavaScriptで計算した値をPHPへ送信してはいません。 ・GETで送ってはいけない。 POSTにしたから安全という訳ではありませんが、 URLにパラメータが表示されるのは避けたいです。

mililin
質問者

補足

なるほど、ありがとうございます! 作って頂いたソースをいじらせてもらいました! もうひとつお聞きしたいのですが、セレクトボックスで選んだ商品の個数を、 フォーム送信(簡易見積)したあとにも、そのまま表示しておきたいのですが、可能でしょうか・・? 現在はフォーム送信するとセレクトボックスが0個になってしまうので… 何度も質問して申し訳ございません。 よろしくお願い致します。 <?php $price1 = 100; $total1 = 0; if (isset($_POST['order'])) { $total1 = $price1 * $_POST['count1'] * 1.05; } $price2 = 120; $total2 = 0; if (isset($_POST['order'])) { $total2 = $price2 * $_POST['count2'] * 1.05; } ?> <style type="text/css"> <!-- .style1 {font-size: smaller} --> </style> <form method="post"> 1、商品01:<?php echo $price1; ?>円 <select id="count1" name="count1"method="post"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <br /><br /> 2、商品02:<?php echo $price2; ?>円 <select id="count2" name="count2"method="post"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <br /> <br /> <input type="submit" name="order" value="簡易見積" /> </form> <div> 税込合計:<?php echo $total1 + $total2; ?>円 </div>

すると、全ての回答が全文表示されます。

関連するQ&A