PHPで簡単ショッピングカート!【7.注文完了】

PHP

今回で注文完了します。

顧客情報入力完了

ファイル名:inputinfo_end.php

<記述例>

<?php
session_start();
session_regenerate_id(true);
?>
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="../fshopstyle.css">
    <title>さかなショップ顧客情報入力完了</title>
  </head>
  <body>
    <main>
      <section class="txtbox">
<div style="text-align: center;">
  <ul class="cartflow">
    <li>カート</li>
    <li>情報入力</li>
    <li>入力確認</li>
    <li class="choice">注文確定</li>
  </ul>
</div>
<?php
require_once('../com_func.php');
$post=sanitize($_POST);
$cname=$post['cname'];
$email=$post['email'];
$postal=$post['postal'];
$address=$post['address'];
$tel=$post['tel'];
$note=$post['note'];
print $cname.' 様<br>';
print 'ご注文ありがとうございました。<br>';
print $email.' 宛に自動返信メールを送りましたのでご確認ください。<br>';
print 'ご注文いただいた商品は以下の住所に発送させていただきます。<br><br>';
print '入力された内容は以下の通りです。<br>';
print '<h4>お客様ご入力内容</h4>';
print '<table class="info"><tr><th>お名前</th>';
print '<td>'.$cname.'</td></tr>';
print '<tr><th>メールアドレス</th>';
print '<td>'.$email.'</td></tr>';
print '<tr><th>郵便番号</th>';
print '<td>'.substr($postal,0,3).'-'.substr($postal,3,4);
print '<tr><th>住所</th>';
print '<td>'.$address.'</td></tr>';
print '<tr><th>電話番号</th>';
print '<td>'.$tel.'</td></tr>';
print '<tr><th>備 考</th><td>'.nl2br($note).'</td></tr>';
$date_time=new DateTime();
$date_time_disp=$date_time->format("Y-m-d H:i");
print '<tr><th>注文日時</th><td>'.$date_time_disp.'</td></tr>';
print '</table>';
$replymail='';
$replymail.=$cname." 様\n\nこのたびはご注文ありがとうございました。\n";
$replymail.="\n";
$replymail.="入力された内容は以下の通りです。\n";
$replymail.="備考:".$note."\n";
$replymail.="注文日時:".$date_time_disp."\n";
$replymail.="\n";
$replymail.="ご注文商品\n";
$replymail.="**************************\n";

$id=$_SESSION['id'];
$name=$_SESSION['name'];
$price=$_SESSION['price'];
$num=$_SESSION['num'];
$max=count($id);
print '<h4>ご注文商品内容</h4>';
print '<table><tr>';
print '<td>No.</td><td>商品名</td><td>価格</td>';
print '<td>数量</td><td>小計</td></tr>';
$sum=0; $sub=0;
for($i=0; $i<$max; $i++)
{
  $i1=$i+1;
  print '<tr><td>'.$i1.'</td><td>'.$name[$i].'</td>';
  print '<td class="right">'.number_format($price[$i]).'</td>';
  print '<td class="right">'.$num[$i].'</td>';
  $sub=$price[$i] * $num[$i];
  $sum += $sub;
  print '<td class="right">'.number_format($sub).'</td></tr>';
  $replymail.='No.'.$i1."\n";
  $replymail.='商品名:'.$name[$i]."\n";
  $replymail.='価格:'.number_format($price[$i])." 円\n";
  $replymail.='数量:'.$num[$i]."\n";
  $replymail.='小計:'.number_format($sub)." 円\n\n";
}
print '<tr><td colspan="4" class="right">合 計</td>';
print '<td class="right">'.number_format($sum).'</td></tr>';
print '<tr><td colspan="4" class="right">消費税</td>';
print '<td class="right">'.number_format($sum * 0.1).'</td></tr>';
print '<tr><td colspan="4" class="right">合計金額</td>';
print '<td class="right">'.number_format($sum * 1.1).'</td></tr>';
print '</table>';
$replymail.="合計:".number_format($sum)." 円\n";
$replymail.="消費税:".number_format($sum * 0.1)." 円\n";
$replymail.="税込金額:".number_format($sum * 1.1)." 円\n\n";
$replymail.="送料は別途かかります。\n";
$replymail.="**************************\n";
$replymail.="\n";
$replymail.="--------------------------\n";
$replymail.=" さかなショップ\n";
$replymail.="\n";
$replymail.="住所:〇〇〇〇〇〇〇〇〇〇〇〇〇\n";
$replymail.="電話:〇〇-〇〇〇-〇〇〇〇\n";
$replymail.="メール:〇〇@〇〇〇〇〇.com\n";
$replymail.="--------------------------\n";
print '<br>';

$title='ご注文ありがとうございます。';
$header='From:〇〇@〇〇〇〇〇.com';
$mail1=html_entity_decode($replymail,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
//mb_send_mail($email,$title,$mail1,$header);

$title='お客様からおご注文がありました。';
$header='From:'.$email;
$mail1=html_entity_decode($replymail,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
//mb_send_mail('〇〇@〇〇〇〇〇.com',$title,$mail1,$header);

unset($_SESSION['id']);
unset($_SESSION['name']);
unset($_SESSION['price']);
unset($_SESSION['num']);

?>
<br>
<button class="btn1a" onclick="location.href='../index.html'">トップページへ</button>
      </section>
    </main>
  </body>
</html>

<表示例>

1~2行目:セッションスタート
15~22行目:カートの流れを表示(注文確定を選択)
24行目:関数読み込み
25行目:フォームから送られたデータをサニタイズ
26~31行目:サニタイズしたデータを変数に代入
48行目:変数内の改行を表示させるために[nl2br]を使用

49行目:今の日時[new DateTime()]を変数に代入
50行目:日付のフォーマットに変換して変数に代入
例:format(“Y-m-d H:i”)
表示:2020-05-03 17:15

53~61・95~107行目:[$replymail]に自動返信メールの内容を代入
メール本文の改行には[\n]を使います。
[.=]を使って変数に追加で付け加えています。

63~66行目:セッションに保存されたデータを代入

115・122行目:メールを送信
例:mb_send_mail(送信先アドレス,タイトル,本文,ヘッダー)
ここでは、間違って送信されないように[//]でコメントアウトしています。

124~127行目:セッションに保存されたデータを破棄

ダウンロード

今回の一連のファイルをZIPファイルにまとめました。

動作確認

念の為動作確認をします。

PHPの動作確認なのでローカル環境でのPHP動作確認できる
XAMPPなどのソフトをインストールしてください。
インストールしていない方は以下の記事を参考にしてください。

記 事 紹 介
XAMPPを入れPCローカル環境でPHPを表示するには

上記ダウンロードしたZIPファイルを解凍し、
[fshopフォルダ]ローカルホストにコピーします。

XAMPPのコントロールパネルを起動し、
[Apache]列の[Start]をクリックし[Apache]を起動させてください。

ウェブブラウザに「http://localhost」と入力し、
[Enter]キーを押します。

fshopフォルダ[index.html]を実行(フォルダを開けば自動で実行)し、商品一覧から商品を選び、数量を変更し、カートへ入れてみてください。

ショッピングカートに追加されます。
[ご購入手続きへ]をクリックします。

お客様情報入力の各項目を入力後、[確認画面へ]をクリックします。

入力内容の確認画面が表示されましたので間違いがなければ、
[注文確定]をクリックします。

注文が完了しました。

また、入力内容が間違っていた場合、エラー表示します。

終わりましたら、XAMPPのコントロールパネル
[Apache]列の[Stop]をクリックし[Apache]を終了させてください。

これでデータベースを使用しない簡単なショッピングカート作成が終了しました。

コメント

タイトルとURLをコピーしました