バージョン選択

フォーラム

メニュー

オンライン状況

24 人のユーザが現在オンラインです。 (16 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 24
もっと...

サイト内検索

バグ報告 > 管理機能 > [Ver.2.1.2]配送業者登録を更新すると配送時間のIDが変わる

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mkimura
投稿日時: 2008/6/10 11:20
対応状況: 解決済
新米
登録日: 2008/5/16
居住地:
投稿: 4
[Ver.2.1.2]配送業者登録を更新すると配送時間のIDが変わる
ver.1.3.4 でポストされていた問題ですが、ver.2.1.2 でも同様の問題があります。

--------
[Ver.1.3.4]配送業者登録を更新すると配送時間のIDが変わる
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=1107&forum=9&post_id=3542#forumpost3542
--------

更新のたびにPKが変わってしまうというのは、単に設計ミスでしょう。プライオリティは低そうですが、直すべき不具合だとは思います。

『とりあえずの解決策』として手を入れた部分を載せておきます。(実装としては美しくありませんが・・)

■ファイル
data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery_Input.php
■変更箇所
135〜181行目付近『lfRegistData()』を丸ごと下記と置き換え。


    function lfRegistData() {
        $arrRet = $this->objFormParam->getHashArray();
        $objQuery = new SC_Query();
        $objQuery->begin();

        // 入力データを渡す。
        $sqlval['name'] = $arrRet['name'];
        $sqlval['service_name'] = $arrRet['service_name'];
        $sqlval['confirm_url'] = $arrRet['confirm_url'];
        $sqlval['creator_id'] = $_SESSION['member_id'];
        $sqlval['update_date'] = 'Now()';


        // deliv_id が決まっていた場合
        if($_POST['deliv_id'] != "") {
            $deliv_id = $_POST['deliv_id'];
            $where = "deliv_id = ?";
            $objQuery->update("dtb_deliv", $sqlval, $where, array($deliv_id));

            // 配送時間の登録
            $table = "dtb_delivtime";
            $where = "deliv_id = ? AND time_id = ?";
            for($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) {
                $sqlval = array();
                $keyname = "deliv_time".$cnt;
                $arrval = array($deliv_id, ($cnt * $deliv_id));
                // 既存データの有無を確認
                $curData = $objQuery->select("*", $table, $where, $arrval);

                if(strcmp($arrRet[$keyname], "") != 0) {
                    $sqlval['deliv_time'] = $arrRet[$keyname];

                    // 入力が空ではなく、DBに情報があれば更新
                    if(count($curData)) {
                        $objQuery->update($table, $sqlval, $where, $arrval);
                    }
                    // DBに情報がなければ登録
                    else {
                        $sqlval['deliv_id'] = $deliv_id;
                        $sqlval['time_id'] = ($cnt * $deliv_id);
                        $objQuery->insert($table, $sqlval);
                    }
                }
                // 入力が空で、DBに情報がある場合は削除
                else if(count($curData)) {
                    $objQuery->delete($table, $where, $arrval);
                }
            }

            // 配送料の登録
            if(INPUT_DELIV_FEE) {
                for($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) {
                    $keyname = "fee".$cnt;
                    if(strcmp($arrRet[$keyname], "") != 0) {
                        $sqlval = array('fee' => $arrRet[$keyname]);
                        $objQuery->update("dtb_delivfee", $sqlval, "deliv_id = ? AND pref = ?", array($deliv_id, $cnt));
                    }
                }
            }
        }
        else {
            // 登録する配送業者IDの取得

            if (DB_TYPE == "pgsql") {
                $deliv_id = $objQuery->nextval('dtb_deliv', 'deliv_id');
                $sqlval['deliv_id'] = $deliv_id;
            }

            $sqlval['rank'] = $objQuery->max("dtb_deliv", "rank") + 1;
            $sqlval['create_date'] = 'Now()';
            // INSERTの実行
            $objQuery->insert("dtb_deliv", $sqlval);

            if (DB_TYPE == "mysql") {
                $deliv_id = $objQuery->nextval('dtb_deliv', 'deliv_id');
            }

            $sqlval = array();
            // 配送時間の設定
            for($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) {
                $keyname = "deliv_time$cnt";
                if($arrRet[$keyname] != "") {
                    $sqlval['deliv_id'] = $deliv_id;
                    $sqlval['time_id'] = ($cnt * $deliv_id);
                    $sqlval['deliv_time'] = $arrRet[$keyname];
                    // INSERTの実行
                    $objQuery->insert("dtb_delivtime", $sqlval);
                }
            }

            if(INPUT_DELIV_FEE) {
                $sqlval = array();
                // 配送料金の設定
                for($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) {
                    $keyname = "fee$cnt";
                    if($arrRet[$keyname] != "") {
                        $sqlval['deliv_id'] = $deliv_id;
                        $sqlval['fee'] = $arrRet[$keyname];
                        $sqlval['pref'] = $cnt;
                        // INSERTの実行
                        $objQuery->insert("dtb_delivfee", $sqlval);
                    }
                }
            }
        }
        $objQuery->commit();
        return $deliv_id;
    }
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は73,062名です
総投稿数は102,118件です

投稿数ランキング

1
seasoft
7333
2
468
3078
3
AMUAMU
2712
4
nanasess
2176
5
umebius
2030
6
yuh
1612
7
red
1453
8
h_tanaka
1090
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.