PHPは人が作ったものをいじる程度しかできない初心者です。
今回、ショッピングサイトでよく見かける注文フォームを作りたいと思い、
(1)注文(入力画面)
↓
(2)注文内容確認画面
↓
(3)送信確認画面
という感じで作っています。
(1)注文(入力画面)では、javascriptで商品 × 個数を自動計算できるようにしています。
その自動計算した内容を(2)注文内容確認画面に表示させるところまではできました。
ここから質問なのですが、
(3)送信確認画面で、私のメールアドレス宛てに注文内容のメールが届くようにPHPを書いたのですが、メールは届くものの、入力された内容が反映されていない状態で届いてしまいます。
↓メールはこんな感じで届きます
商品1:個、円
商品2:個、円
商品3:個、円
-----------------------------------------------------------------
税込合計:円
-----------------------------------------------------------------
お届け指定日:
時間帯指定:
送信完了画面(send.php)のPHP部分は下記の通りです
<?php
mb_language("Japanese");
mb_internal_encoding("SHIFT-JIS");
$subject = "★★注文★★";
$message = "\n商品1:" . $_GET["goods1"] . "個、" . $_GET["field1"] . "円" .
"\n商品2:" . $_GET["goods2"] . "個、" . $_GET["field2"] . "円" .
"\n商品3:" . $_GET["goods3"] . "個、" . $_GET["field3"] . "円" .
"\n-----------------------------------------------------------------" .
"\n税込合計:" . $_GET["field_total2"] . "円" .
"\n-----------------------------------------------------------------" .
"\nお届け指定日:" . $_GET["specifiedday"] .
"\n時間帯指定:" . $_GET["time"];
// メール送信
$rcd = mb_send_mail("info@▲▲▲.com", $subject, $message, "From: " . $_GET["mail"]);
?>
どこが間違っているのでしょうか?
どなたかご指摘お願い致します。
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側で計算します。
この回答への補足
詳しくご回答頂き、ありがとうございます!
本番で使えないんですか…
注文フォームはユーザーが注文(入力)する画面で注文個数や合計金額をが確認できるようにしたいです。
https://sv62.xserver.jp/~healing-rose/healing-ro …
↑このサイトの注文フォームのような感じです。
参考サイトのような感じにするには、PHPでもすべて出来るのでしょうか?
「PHP 自動計算」などで検索したのですが、javascriptの自動計算ばかり出てきてしまって。。
No.3
- 回答日時:
提示したコードは、一つのファイルで入力&確認をしていますが、
本来は、入力-->確認と別のファイルへ遷移していたはずです。
なので、画面を別ファイルに分ければ、選択個数を保持する必要は無いです。
選択個数は、PHPで計算した値を表示すればいいのではないでしょうか。
そもそも、選択個数を保持しておくのは変ですよね。
個数のselectboxを、『注文者が手でつかんだ数』と考えると…
例:
・商品を2個手に取る
・カートに入れる(POST)
・カートに商品が2個ある状態で、強制的に商品を2個取らされる
(※カートに入れてある商品だけが精算される とします)
こういう状態ではありませんか?
ありがとうございます!
なにもわかっていなくて、すみません。
細かく説明して頂いて助かりました。
作って頂いたコードを使わせて頂いて、なんとかできそうです。
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にパラメータが表示されるのは避けたいです。
この回答への補足
なるほど、ありがとうございます!
作って頂いたソースをいじらせてもらいました!
もうひとつお聞きしたいのですが、セレクトボックスで選んだ商品の個数を、
フォーム送信(簡易見積)したあとにも、そのまま表示しておきたいのですが、可能でしょうか・・?
現在はフォーム送信するとセレクトボックスが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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Amazon アマゾン 7 2022/06/11 11:03
- Amazon AmazonでSSDを返品しました。返品しても購入履歴のところは返品完了にならないのですか?? 3 2023/01/05 17:38
- その他(ネットショッピング・通販・ECサイト) moonwalkbabyで注文されて届いた方いますか? 2 2023/04/12 23:31
- Amazon Amazonの商品到着の日時がコロコロ変動… 皆さん、Amazonで商品を注文しても 「お届け日」が 4 2023/06/04 13:07
- その他(ネットショッピング・通販・ECサイト) オンライン注文の予約商品に関しての ショップ側の対応に関して意見ください 1 2023/07/26 20:29
- その他(ネットショッピング・通販・ECサイト) 先日あるサプリを定期購入で注文し、支払いはコンビニ後払いにしました。 同時期に複数同じような方法で色 2 2022/08/09 20:42
- その他(パソコン・スマホ・電化製品) ソフトバンクのオンラインショップの予約商品について 予約した日時はこれです 2023年01月16日 2 2023/01/20 08:27
- ネットスーパー 個人輸入でサプリを購入しようと考えています。 商品代金と輸送費を合わせて16666円以内ならば関税が 1 2023/02/01 21:50
- 消費税 消費税の納税額の計算 1 2023/02/19 18:12
- 楽天市場 先程のにありがとうございます。ご入金の確認できました。 早速出荷の準備を行いますので、ご安心ください 1 2022/12/21 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB2005 複数のフォームを同時...
-
WordPressで画面還移なしの掲示...
-
php 確認表示画面で値をSESSION...
-
掲示板のセキュリティについて...
-
問い合わせフォームにくる無記...
-
出勤時刻と退勤時刻のみを管理...
-
ワードプレスプラグイン MW WP ...
-
ウェブサイト上のボタンを自動...
-
docomoのsimロック解除について
-
ビジネスメールの敬称
-
数字以外の入力をエラーにする...
-
EXCEL VBAで、URLを入力して、...
-
初歩的な事だと思います。 Sub...
-
アルファベットGの小文字の入力
-
エクセルVBA テキストボックス...
-
入力フォームへ、データを自動...
-
VBAで質問があります
-
「イ分」・・・フンという文字...
-
テキストボックスの番号を使っ...
-
DATE型変数を初期化する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
docomoのsimロック解除について
-
アイフォン使ってたらちょくち...
-
掲示板のセキュリティについて...
-
大学の出欠確認でQRコードを読...
-
php 確認表示画面で値をSESSION...
-
htmlからbatファイルを起動する
-
ページ移動した場合の、フォー...
-
ワードプレスプラグイン MW WP ...
-
値だけ送信してページは遷移さ...
-
ウェブサイト上のボタンを自動...
-
メールフォームの確認画面が表...
-
ブラウザの「戻る」ボタンを押...
-
メール送信フォームとhistory.b...
-
非同期通信で掲示板を作る際の...
-
ヤフージャパンへの問合せ 「次...
-
vb6で画面コピーで不具合対応方法
-
phpのsubmit処理について
-
iframe内のformから送信したあ...
-
フォームに入力した内容をXMLに...
-
他のPCにメッセージを表示
おすすめ情報