//tips
//php理解
注文者へのメール送信プログラムを確認していく。
$title='ご注文ありがとうございます';
$header='From:info@aaa.co.jp';
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_send_mail($email,$honbun,$header);
PHPではメールを送るための関数が標準で備わっており、簡単にメールを送信することが可能。
ただ、日本語でメールを送るためには
mb_language("Japanese");
mb_internal_encoding("UTF-8");
を設定しておく必要がある。
メールを送るには mb_send_mail 関数を使用する。
mb_send_mail(送信先, 題名, 本文, ヘッダ);
https://qiita.com/wakahara3/items/3261c59f859f4905610b
https://qiita.com/ka215/items/e5d21fe91a30fa968a2a
Xamppでは実際にメールが送信できないのが残念。
これで顧客への自動メール送信機能が作れたので、販売先にも同時にメールを送れるようにしておく。
これは簡単で、店側用のメール送信先に先のメールを送れば良いので
$title='ご注文ありがとうございます';
$header='From:info@aaa.co.jp';
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_send_mail($email,$honbun,$header);
$title='お客様から注文がありました';
$header='From:'.$email;
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_send_mail('shop@shop.co.jp',$honbun,$header);
このように追加項目を一部修正するだけでよい。
注文情報をデータベースに蓄積していきたいので、データベースに注文情報テーブルを新たに作成し、INSERT INTOで追加していく。
注文情報にはTIMESTAMP型を導入し、日時も追加で記録する。
早速注文データの追加プログラムを追加していく。
<?php
session_start();
session_regenerate_id(true);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
try{
require_once('../common/common.php');
$post=sanitize($_POST);
$onamae=$post['onamae'];
$email=$post['email'];
$postal1=$post['postal1'];
$postal2=$post['postal2'];
$address=$post['address'];
$tel=$post['tel'];
print $onamae.'様';
print 'ご注文ありがとうございました<br/>';
print $email.'にメールを送りましたのでご確認ください<br/>';
print '商品は以下の住所に発送させていただきます<br/>';
print $postal1.'-'.$postal2.'<br/>';
print $address.'<br/>';
print $tel.'<br/>';
$honbun='';
$honbun.=$onamae."様\n\nこの度はご注文ありがとうございました。\n";
$honbun.="\n";
$honbun.="ご注文商品\n";
$honbun.="-----------\n";
$cart=$_SESSION['cart'];
$kazu=$_SESSION['kazu'];
$max=count($cart);
$dsn='mysql:dbname=shop;host=localhost;charset=utf8';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
for($i=0;$i<$max;$i++){
$sql='SELECT name,price FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[0]=$cart[$i];
$stmt->execute($data);
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$name=$rec['name'];
$price=$rec['price'];
$kakaku[]=$price;
$suryo=$kazu[$i];
$shokei=$price*$suryo;
$honbun.=$name.'';
$honbun.=$price.'円×';
$honbun.=$suryo.'個=';
$honbun.=$shokei."円\n";
}
$sql='INSERT INTO dat_sales(code_member,name,email,postal1,postal2,address,tel)VALUES(?,?,?,?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();//データを一旦クリア
$data[0]=0;
$data[]=$onamae;
$data[]=$email;
$data[]=$postal;
$data[]=$postal2;
$data[]=$address;
$data[]=$tel;
$stmt->execute($data);
$sql='SELECT LAST_INSERT_ID()';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$lastcode=$rec['LAST_INSERT_ID()'];
for($i=0;$i<$max;$i++){
$sql='INSERT INTO dat_sales_product(code_sales,code_product,price,quantity)VALUES(?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=$lastcode;
$data[]=$cart[$i];
$data[]=$kakaku[$i];
$data[]=$kazu[$i];
$stmt->execute($data);
}
$dbh=null;
$honbun.="送料は無料です。\n";
$honbun.="-------------\n";
$honbun.="\n";
$honbun.="代金は以下の口座に振り込みください。\n";
$honbun.="○○銀行 ○○支店 普通口座12345\n";
$honbun.="入金確認が取れ次第、梱包、発送させていただきます\n";
$honbun.="\n";
//$honbun.="○○県○○市12-345\n";
//$honbun.="○○銀行 ○○支店 普通口座12345\n";
print'<br/>';
//print nl2br($honbun);
$title='ご注文ありがとうございます';
$header='From:info@aaa.co.jp';
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_send_mail($email,$honbun,$header);
$title='お客様から注文がありました';
$header='From:'.$email;
$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8');
mb_language('Japanese');
mb_internal_encoding('UTF-8');
mb_send_mail('shop@shop.co.jp',$honbun,$header);
}
catch(Exception $e)
{
print'ただいま障害により大変ご迷惑をおかけしております。';
exit();
}
?>
</body>
</html>
このスクリプトの動作確認のためいくつか商品を追加し、カートに入れていく。
製品登録がログインエラーによりできなくなっているのでstaff_login_check周りの要因を探っていく。