LoginSignup
17
15

More than 5 years have passed since last update.

【PHP】DBを使わないで注文番号IDを管理する

Last updated at Posted at 2014-04-24

わざわざ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は習いたてなので、無駄な処理・スマートじゃない処理に対する
ご指摘をいただければ、喜びますので心優しい方、よろしくお願いします。

17
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15