わざわざDBに登録するほどではないけれど、注文した商品に対して、
個別のIDを振る必要がある案件があったので備忘録メモ。
大したことしてないけど、また今度使うかもしれないので、こっちに置いときます。
##方法
簡単な話で、注文番号IDをある指定したディレクトリのファイルの中に保存しておいて、
新しく注文があったら、IDを作って追加したり、
通知メールを送るときに、データを読み込んでセットしたりするだけのものです。
注文番号ID・・・fkd-注文年月日-通し番号 という決まりにしました。
##プログラム
注文番号IDをつくる関数と、その注文番号IDをセットする関数をつくりました。
<?php
function makeOrderNum() {
//ファイル読み込み最新の注文情報取得
$dp = opendir("order_number") or die('ディレクトリが開けません');
$fp = fopen("order_number/ordernumber.txt","r") or die("ファイルが開けません");
while(!feof($fp)){
$data = fgets($fp);
}
$order_array = explode(",", $data);
$array_num = count($order_array)-1;
$order_last_array = explode("-", $order_array[$array_num]);
fclose($fp);
//注文番号作成
$date = date('ymd');
$order_num = '';
$num = 0;
if($order_last_array[1] == $date) {
$num = $order_last_array[2];
$order_num = 'fkd-'.date('ymd').'-'.($num+1);
} else {
$order_num = 'fkd-'.date('ymd').'-'.$num;
}
//新規注文番号を追加登録
$fp = fopen("order_number/ordernumber.txt","a");
fputs($fp, $order_num.',');
fclose($fp);
}
?>
<?php
function setOrderNum() {
$num = 0;
//ファイル読み込み最新の注文情報取得
$dp = opendir("order_number") or die('ディレクトリが開けません');
$fp = fopen("order_number/ordernumber.txt","r") or die("ファイルが開けません");
while(!feof($fp)){
$data = fgets($fp);
}
$order_array = explode(",", $data);
$array_num = count($order_array)-1;
fclose($fp);
$order_last_array = explode("-", $order_array[$array_num]);
$num = $order_last_array[2]+1;
$order_num = $order_last_array[0].'-'.$order_last_array[1].'-'.$num;
return $order_num;
}
?>
以上になります。
特にPHPは習いたてなので、無駄な処理・スマートじゃない処理に対する
ご指摘をいただければ、喜びますので心優しい方、よろしくお願いします。