« EC-CUBEを 会員限定サイトに | トップページ | 考慮不足のバグ発生 »

EC-CUBE 「規格」の再登録でシステムエラー

EC-CUBEの「規格登録」て画面が、規格の分類が多い場合、とても使いにくいです。

新規の時には規格2種類をかけあわせた、1000通りもの組合せの中から、登録したいものを選択(チェック)するのだけど、これが目がチラチラするというか、間違いやすいというか。

で、やっと登録を終えて「あっ 一個上のヤツを選んでしまったみたい!」と気づいた時に、また規格登録画面を呼出して、 間違えたチェックを外し、正しいものを選択して、確認画面が出てイザ登録ボタン~!というところで システムエラーが出るんです。

管理画面のログインからやりなおして、何度やっても 同じ。。。orz

でも、全部の商品の規格登録でエラーが出るか、というと、そうでもなかったりして、ちょっと謎めいておりました。

謎は謎のままにして・・なんて言ってられませんので、探りました。

とりあえずエラーの出る時と出ない時のクエリーとして送っている項目と値を表示。
すると、product_class_idが重複している箇所で止まってるのが分かりました。

・・・なんでproduct_class_idが同じものがセットされてるんだ?

規格登録すると、データベースでは product_class という呼び名のレコードとして、dtb_products_class に product_class_id をキーとして登録されるわけです。

更新の際はもともと持っている product_class_id をフォーム画面にhidden項目として持ってるようです。

前回登録していない商品というのは、product_class_id は無いから、もちろん空なんですね。

で、イザ登録する部分のソースを見てみると、一気に送られたデータを 一レコードずつに分解して、クエリー文を作ってます。

( LC_Page_Admin_Products_ProductClass.php  のlfInsertProductClassという関数) 

その時、product_class_idが無かったら、product_class_idの項目はセットしないようになってます。

    if( strlen($arrList["product_class_id:".$cnt]) > 0 ){
          $sqlval['product_class_id'] = $arrList["product_class_id:".$cnt];
     }

・・・あれっ? $sqlval['product_class_id'] が while文中でどこでも初期化されていません!!

ということで While文のすぐ下に、

$sqlval['product_class_id'] = ""; //初期化

これを追加してみました。

おそるおそる、規格登録画面で、チェックを付けてみたりハズしてみたりして送信。
・・・・・どうやらエラーは起きなくなったみたいです。万歳♪\(^o^)/

|

« EC-CUBEを 会員限定サイトに | トップページ | 考慮不足のバグ発生 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/520403/44242310

この記事へのトラックバック一覧です: EC-CUBE 「規格」の再登録でシステムエラー:

» EC-CUBEの商品登録の規格登録でエラー・・・ [webサイト制作のメモ帳]
EC-CUBEの商品登録をしていると「規格登録」後にシステムエラーが。。。何度やってもダメなのでググってみると(死語??)、以下のブログを発見。EC-CUBE「規格」の再登録でシステムエラー同様の対応で直りました。感謝。※自分のメモとして、直したファイルは以下のファ...... [続きを読む]

受信: 2009年4月21日 (火) 20時43分

« EC-CUBEを 会員限定サイトに | トップページ | 考慮不足のバグ発生 »