バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 基本情報管理>配送設定>配送時間 の追加時にエラー

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
zen
投稿日時: 2008/12/9 18:21
対応状況: −−−
新米
登録日: 2008/12/9
居住地:
投稿: 1
基本情報管理>配送設定>配送時間 の追加時にエラー
はじめまして。
zen というIDで利用させていただいております。

若輩者ですが、よろしくお願い致します。

環境:
EC-CUBE 2.3.1
MySQL 5.0.45
Apache/2.0.63
PHP 5.2.6

問題の画面:
基本情報管理>配送設定>配送時間

問題となる状況:
配送業者の『配送時間』を設定できる機能について質問です。

1.配送業者を登録する。
  このとき、配送時間をいくつか(私の場合は4件ほど)登録しておく。
2.3件ほど、同様に配送業者を登録する。
3.1で設定した配送業者を編集モードで開く。
4.配送時間を新しく追記し、登録ボタンを押下する。

で、システムエラーが発生します。


自分なりに原因を調べてみると、
DBの dtb_delivtime で主キーである time_id について、重複して登録しようとしていることが原因のようです。


私の考察としては、
新規項目に対する主キー値の割り当てに関して、

ソースファイル: LC_Page_Admin_Basis_Delivery_Input.php
$cnt * $deliv_id (166行目など)

という値を利用していることが原因($deliv_id の公倍数で重複する)かと思いました。

そこで、応急処置として、

・新規登録時には $deliv_id を指定しない
・dtb_delivtime テーブルにたいして、配送業者($deliv_id)について連番となる項目 pref フィールド(int(10))を追加
・pref の値は、入力フォームのnameである、「"deliv_time".$cnt」の$cntと対応
・編集時、対症項目へのアクセスキーとして、
 -- 既存:deliv_id = ? AND time_id = ?
-- 対処:deliv_id = ? AND pref = ?

と変更を行いました。


サイト内の検索にて、同様の症状を見つけることができませんでしたが、既にパブリックな解決策が提案されていれば教えていただきたいと思います。

よろしくお願い致します。
tonton
投稿日時: 2008/12/13 1:42
対応状況: −−−
仙人
登録日: 2008/8/14
居住地:
投稿: 437
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
私も現在配送業者の追加をしようとしているのですが、2つ目の宅配業者が登録できない状況です。

エラーコードでdtb_delivtimeへの登録エラーがでていますので、同様の現象ではないかと思います。

時間指定を入力しなければ、業者登録自体はできたので、時間指定のみ手動でphpMyAdminからデータを追加しようと試みたのですが、time_idが主キーに設定されており、時間指定の重複IDが登録できないので、どうしたら良いかわからなくて・・・

お分かりの方がいらっしゃいましたら、対応方法について教えいただけませんでしょうか。
どうぞ宜しくお願いします。

-------------
EC-CUBEバージョン 2.3.3
PHPバージョン PHP 5.2.6
DBバージョン MySQL 5.0.67-community-log
-------------


追記:
とりあえず、主キーを削除し、time_idの重複登録を許可しました。どこかで問題があるのかもしれないのですが・・・
そうしてみると、$cnt*$deliv_idの処理は要らないような気がします。
そもそも、IDがかぶってしまうのに、倍倍処理をする意味があるのでしょうか?
主キーを活かさないといけないとすると、多分、ここが、1つの配送業者に割り当てられる時間指定数16の次から(つまり17から)連番で次の配送業者にtime_idを割り当てるようにならないといけないのでしょうね。そうすれば、飛び飛びながらも重複せずにtime_idを主キーにできるのでしょうけれど・・・
kuro
投稿日時: 2009/3/27 13:27
対応状況: −−−
半人前
登録日: 2008/7/23
居住地:
投稿: 20
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
-------------
EC-CUBEバージョン 2.3.2
PHPバージョン PHP 5.2.4
DBバージョン PostgreSQL 8.1.10
-------------

上記環境で構築しておりますが、
管理画面からの配送時間帯登録で、既存の配送業者とtime_idが重複してしまう現象が起きます。
私の環境ではtime_idに主キーが設定されていませんでしたので、
重複した内容でも登録されてしまっています。
「nextval('dtb_delivtime_time_id_seq'::regclass)」も上手く動いていないようです。
(10個くらい登録した後でも最終値2のままです・・・)

別サーバでeccube-2.2.0-betaでも運営していますが、
そちらの方は最終値11で、time_idも被らず連続して登録されています。

tonton様の「$cnt*$deliv_id」のくだりを拝見してソースを確認したのですが、
「nextval('dtb_delivtime_time_id_seq'::regclass)」は実は使われてないのでしょうか・・・
また、「$cnt*$deliv_id」ではどうしてもtime_idが被ると思うのですが、問題はないのでしょうか・・・

最初から「サンプル業者」というのが設定してあり、それのtime_idと被ってしまいますので、
「サンプル業者」を管理画面から削除して、かつdtb_delivtimeから直接サンプル業者の行を消さないと
正常に動きませんでした。
(time_idが被っているため、例えばB業者の14-16時を選択しても、
確認画面以降ではサンプル業者の午前を指定したことになっていたりしました。)

time_idが被る場合、LC_Page_Shopping_Payment.phpの↓の部分で$whereにdeliv_idでの条件を加えないと
上記のような現象になってしまうと思います。

---------------------------------------------------------------------
■LC_Page_Shopping_Payment.php
---------------------------------------------------------------------
/* 配送時間文字列の取得 */
function lfGetDelivTimeInfo($time_id) {
$objQuery = new SC_Query();
$where = "time_id = ?";
$arrRet = $objQuery->select("deliv_id, deliv_time", "dtb_delivtime", $where, array($time_id));
return (array($arrRet[0]['deliv_id'], $arrRet[0]['deliv_time']));
}
---------------------------------------------------------------------

他にこのような現象の起こった方はいらっしゃらないでしょうか?
管理画面周りは全くカスタマイズしていませんが、
まずは私の環境だけの不具合なのかを知りたいのです。
(そもそもtime_idが重複して登録されること自体がおかしいのかなど)

こちらのトピックが近いかなと思ったので、書かせていただきました。
この件に関しまして、何かご存知の方がいらっしゃいましたら
どうかアドバイスをいただけませんでしょうか。
seasoft
投稿日時: 2009/3/27 14:23
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
斜め読みで返信させていただいております。趣旨が異なりましたら、ごめんなさい。

個人的には、
PRIMARY KEY (deliv_id, time_id)
で動作するように設計すべきではないかと思っております。

そして、シリアル(シーケンス、オートインクリメント)など使わずに、テキストボックスの何番目かを time_id に使用すれば、こんな面倒は無いのでは?と前々から感じています。

当方環境では、
> 「nextval('dtb_delivtime_time_id_seq'::regclass)」も上手く動いていないようです。
> (10個くらい登録した後でも最終値2のままです・・・)
に関しては正常に動作しているのか、ページをリロードしていると登録されるようになります。なので、問題を放置していますが・・・

--- 確認バージョン ---
EC-CUBEバージョン 2.3.0-comu
PHPバージョン PHP 5.2.6
DBバージョン PostgreSQL 8.3.3


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ramrun
投稿日時: 2009/3/27 14:38
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
どうすればいいかはわかりませんが、該当するのはこの変更かな?

[Ver.2.1.2]配送業者登録を更新すると配送時間のIDが変わる
チケット #329
チェンジセット 17513
kuro
投稿日時: 2009/3/30 13:13
対応状況: −−−
半人前
登録日: 2008/7/23
居住地:
投稿: 20
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
seasoft様

ご返信誠にありがとうございます。
「time_idが別業者と被った状態でもそのまま登録されてしまい、
時間帯指定時に別業者の配送時間帯を引っ張ってきてしまう」という問題自体は、
私の環境(?)だけの不具合ということでしょうか。
正しい設計方法など、まだまだ勉強不足です。


ramrun様

情報をご紹介くださいましてありがとうございます。
EC-CUBE2.3.0から変更された部分なんですね。
修正前のeccube-2.2.0-betaでは少なくとも表面上問題なく動いているので、
とりあえずは変更された部分だけ古いバージョンのものに差し替えようかと思います。
seasoft
投稿日時: 2009/3/30 13:31
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
> 「time_idが別業者と被った状態でもそのまま登録されてしまい、
> 時間帯指定時に別業者の配送時間帯を引っ張ってきてしまう」という問題自体は、
> 私の環境(?)だけの不具合ということでしょうか。

当方 EC-CUBEコミュニティ(eccube-comu) で確認しておりますので、この違いによるものだと思います。

どちらにしても、不完全な処理ですが、不正なデータが登録されないだけ、EC-CUBEコミュニティの方がマシかなとは思いますが。


> 正しい設計方法など、まだまだ勉強不足です。

設計という作業は、システムや業務を広く把握していないと出来ないので難しいですよね。EC-CUBE のソースやこのフォーラムでの書き込みなどからも学ぶことは多いですね。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2009/5/21 20:38
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
チケットを発行しました。
http://svn.ec-cube.net/open_trac/ticket/472


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

mkhkck
投稿日時: 2010/4/30 15:49
対応状況: −−−
一人前
登録日: 2009/7/18
居住地:
投稿: 98
Re: 基本情報管理>配送設定>配送時間 の追加時にエラー
済みません、この件、過去ログから、
置き換えるべきデータソースを書き換えて、
対応してみませんでしたが、
真っ白な画面になってしまいました。

ログの日付を見ると、かなり古いものだったので、
現在、どうしたらよいか対応策がわかる方はいらっしゃいませんでしょうか?

EC-CUBEのバージョンは、2.4.3です。

よろしくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,708名です
総投稿数は109,948件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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