質問 > フロント機能 > 同時同じ商品を注文する時の在庫の問題 |
フロント機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
hakuei |
投稿日時: 2010/8/4 15:23
対応状況: −−−
|
常連 ![]() ![]() 登録日: 2009/12/7 居住地: 投稿: 36 |
同時同じ商品を注文する時の在庫の問題 ログインIdが違う二人が
ログインして同じ商品を数量は1にして、同時に注文ボタンを押したとしたら在庫が二つ減るべきなのですが、なぜか注文Id(order_id)は二つできても商品の在庫は1つしか減ってません。 在庫logの結果を見ると、 "2010/08/04 15:55:15","510043","87","1","86","227396" "2010/08/04 15:55:15","510043","87","1","86","227397" 227396(order_id)の在庫数が87個→86個 同時に注文した227397の在庫数が87個→86個 二つの中でどっちかの在庫数が86個→85個にならなきゃいけないのですが・・同時に注文するとこんな状況になってしまします。 同じ瞬間に押した時だけです。 どうすればこの問題を防ぐことができるんでしょう・・ ---------------------------------------------------------- // 在庫を減らす処理 function lfReduceStock(&$objQuery, $arrID, $quantity, $order_id) { $where = "product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?"; $arrRet = $objQuery->select("*", "dtb_products_class", $where, $arrID); //$arrRet = $objQuery->select("stock, stock_unlimited", "dtb_products_class", $where, $arrID); 20100414 by.bonee org. $arrProduct = $objQuery->select('name', 'dtb_products','product_id = ' . $arrRet[0]['product_id']); // 売り切れエラー if(($arrRet[0]['stock_unlimited'] != '1' && $arrRet[0]['stock'] < $quantity) || $quantity == 0) { $objQuery->rollback(); SC_Utils_Ex::sfDispSiteError(SOLD_OUT, "", true); // 無制限の場合、在庫はNULL } elseif($arrRet[0]['stock_unlimited'] == '1') { $sqlval['stock'] = null; $objQuery->update("dtb_products_class", $sqlval, $where, $arrID); // 在庫を減らす } else { $sqlval['stock'] = ($arrRet[0]['stock'] - $quantity); if($sqlval['stock'] == "") { $sqlval['stock'] = '0'; } if($sqlval['stock'] < 0){ mb_send_mail('[email protected]';,'stock_error','stock_error'); } $objQuery->update("dtb_products_class", $sqlval, $where, $arrID); } ---------------------------------------------------------- このあたりの問題だと思いますが・・ 教えて頂ければ助かります。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
» ![]() |
hakuei | 2010/8/4 15:23 |
![]() |
AMUAMU | 2010/8/4 16:36 |
![]() |
seasoft | 2010/8/4 17:50 |
![]() |
AMUAMU | 2010/8/4 19:03 |
![]() |
hakuei | 2010/8/5 12:15 |
![](images/pixel.gif)