質問 > 管理機能 > 商品ID及び規格IDの重複について |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ishibo |
投稿日時: 2009/5/27 22:50
対応状況: −−−
|
常連 登録日: 2008/5/24 居住地: 北海道 投稿: 33 |
商品ID及び規格IDの重複について Var2.3.4を使用しており、商品登録後に規格登録を行うと規格IDが商品IDと重複してしまい管理画面から修正が行えなくなる事についてお伺いします。
通常でしたら商品を登録し、自動的にproductIDとclassIDが割り振られ、CSVで表現すると以下のようになると思いますが、 例) "商品ID","規格ID","規格名1","規格名2","商品名"・・・ "1","1","","","アイスクリーム"・・・ "2","2","","","プリン"・・・ これらに規格を設定すると通常?でしたら以下の様になると思います。 "商品ID","規格ID","規格名1","規格名2","商品名"・・・ "1","3","バニラ","","アイスクリーム"・・・ "1","4","抹茶","","アイスクリーム"・・・ "2","5","カスタード","","プリン"・・・ "2","6","マンゴー","","プリン"・・・ ところが、追加で商品を登録した際にCSVで登録を行い管理画面にて規格を登録すると 流れ的にはうまく登録が出来るのですが、一覧CSVをDLして見ると中身が以下の様になります。 実際に行った場合に以下のようになってしまいます。 "1","2","バニラ","","アイスクリーム"・・・ "1","3","抹茶","","アイスクリーム"・・・ "2","4","カスタード","","プリン"・・・ "2","5","マンゴー","","プリン"・・・ "3","6","","","ケーキ"・・・ "4","7","","","ヨーグルト"・・・ "8","8","","","アップルパイ"・・・ "9","9","","","ティラミス"・・・ そして管理画面より商品ID「1」のアイスクリームの規格内容を変更しようとするとエラーが発生し、 「システムエラーが発生しました〜」と表示されログインページへと進みます。 ちなみにエラーログでは、 2009/05/27 22:14:19 [/admin/products/product_class.php] http://www.*****.com/admin/products/product_class.php SELECT class_id1, class_id2, name1, name2, rank1, rank2, product_class_id, product_id, T1_classcategory_id AS classcategory_id1, T2_classcategory_id AS classcategory_id2, product_code, stock, stock_unlimited, sale_limit, price01, price02, status FROM ( SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS T1_classcategory_id, T2.classcategory_id AS T2_classcategory_id, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 WHERE T1.class_id IN (SELECT class_id1 FROM (SELECT T1.class_id1, T1.class_id2, T1.classcategory_id1, T1.classcategory_id2, T2.product_id, T1.name1, T1.name2, T2.product_code, T2.stock, T2.price01, T2.price02, T1.rank1, T1.rank2, T1.maker, T1.space_info, T1.eco_2005 FROM (SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 ) AS T1 LEFT JOIN dtb_products_class AS T2 ON T1.classcategory_id1 = T2.classcategory_id1 AND T1.classcategory_id2 = T2.classcategory_id2) AS crs_prd WHERE product_id = ? GROUP BY class_id1, class_id2) AND T2.class_id IN (SELECT class_id2 FROM (SELECT T1.class_id1, T1.class_id2, T1.classcategory_id1, T1.classcategory_id2, T2.product_id, T1.name1, T1.name2, T2.product_code, T2.stock, T2.price01, T2.price02, T1.rank1, T1.rank2, T1.maker, T1.space_info, T1.eco_2005 FROM (SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 ) AS T1 LEFT JOIN dtb_products_class AS T2 ON T1.classcategory_id1 = T2.classcategory_id1 AND T1.classcategory_id2 = T2.classcategory_id2) AS crs_prd WHERE product_id = ? GROUP BY class_id1, class_id2)) AS T1 LEFT JOIN (SELECT * FROM dtb_products_class WHERE product_id = ?) AS T3 ON T1_classcategory_id = T3.classcategory_id1 AND T2_classcategory_id = T3.classcategory_id2 ORDER BY rank1 DESC, rank2 DESC DB Error: no such field SELECT class_id1, class_id2, name1, name2, rank1, rank2, product_class_id, product_id, T1_classcategory_id AS classcategory_id1, T2_classcategory_id AS classcategory_id2, product_code, stock, stock_unlimited, sale_limit, price01, price02, status FROM ( SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS T1_classcategory_id, T2.classcategory_id AS T2_classcategory_id, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 WHERE T1.class_id IN (SELECT class_id1 FROM (SELECT T1.class_id1, T1.class_id2, T1.classcategory_id1, T1.classcategory_id2, T2.product_id, T1.name1, T1.name2, T2.product_code, T2.stock, T2.price01, T2.price02, T1.rank1, T1.rank2, T1.maker, T1.space_info, T1.eco_2005 FROM (SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 ) AS T1 LEFT JOIN dtb_products_class AS T2 ON T1.classcategory_id1 = T2.classcategory_id1 AND T1.classcategory_id2 = T2.classcategory_id2) AS crs_prd WHERE product_id = '433' GROUP BY class_id1, class_id2) AND T2.class_id IN (SELECT class_id2 FROM (SELECT T1.class_id1, T1.class_id2, T1.classcategory_id1, T1.classcategory_id2, T2.product_id, T1.name1, T1.name2, T2.product_code, T2.stock, T2.price01, T2.price02, T1.rank1, T1.rank2, T1.maker, T1.space_info, T1.eco_2005 FROM (SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 ) AS T1 LEFT JOIN dtb_products_class AS T2 ON T1.classcategory_id1 = T2.classcategory_id1 AND T1.classcategory_id2 = T2.classcategory_id2) AS crs_prd WHERE product_id = '433' GROUP BY class_id1, class_id2)) AS T1 LEFT JOIN (SELECT * FROM dtb_products_class WHERE product_id = '433') AS T3 ON T1_classcategory_id = T3.classcategory_id1 AND T2_classcategory_id = T3.classcategory_id2 ORDER BY rank1 DESC, rank2 DESC [nativecode=1054 ** Unknown column 'T1.maker' in 'field list'] /home/hoge.com/public_html/admin/products/product_class.php 34:LC_Page_Admin_Products_ProductClass_Ex->process /home/hoge.com/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_ProductClass_Ex.php 56:LC_Page_Admin_Products_ProductClass->process /home/hoge.com/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php 127:LC_Page_Admin_Products_ProductClass->lfGetClassCatListEdit /home/hoge.com/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php 299:SC_Query->getall /home/hoge.com/data/class/SC_Query.php 156:SC_DbConn->getAll /home/hoge.com/data/class/SC_DbConn.php 160:DB_common->getAll /home/hoge.com/data/module/DB/common.php 1610:DB_common->execute /home/hoge.com/data/module/DB/common.php 959:DB_mysql->simpleQuery /home/hoge.com/data/module/DB/mysql.php 324:DB_mysql->mysqlRaiseError /home/hoge.com/data/module/DB/mysql.php 894:DB_common->raiseError /home/hoge.com/data/module/DB/common.php 1853:PEAR->raiseError /home/hoge.com/data/module/PEAR.php 557:DB_Error->DB_Error /home/hoge.com/data/module/DB.php 893:PEAR_Error->PEAR_Error 上記のようなエラーが出ております。(長文で読みづらく申し訳ありません。) インストール後にLC_Page_Admin_Products_ProductClass.phpやLC_Page_Admin_Products_Class.phpなどのファイルに関して、特に変更は行っておりませんが、何か打開策?修正案はありますでしょうか? アドバイス頂ければ幸いですので宜しくお願いいたします。 ----------------------------------- EC-CUBE:var.2.3.4 DB:MySQL 5.0.45 PHP:5.1.6 ----------------------------------- |
seasoft |
投稿日時: 2009/5/28 0:17
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品ID及び規格IDの重複について > ところが、追加で商品を登録した際にCSVで登録を行い管理画面にて規格を登録すると
> 流れ的にはうまく登録が出来るのですが、一覧CSVをDLして見ると中身が以下の様になります。 どのような CSV を流したのか情報があると、分かりやすいような気がします。
|
ishibo |
投稿日時: 2009/5/28 0:52
対応状況: −−−
|
常連 登録日: 2008/5/24 居住地: 北海道 投稿: 33 |
Re: 商品ID及び規格IDの重複について seasoft 様 ご返答ありがとう御座います。
CSVファイルにて商品登録を行い、管理画面より規格の登録を行った場合、エラーも無く登録が出来るということです。 ※紛らわしい表現で申し訳ありません。 販売画面では各商品にて規格を含む購入動作には問題ありません。 ただ、商品に対して管理画面から規格の内容(価格など)を変更しようとした時にエラーが表示されるといった感じです。 宜しくお願いいたします。 |
seasoft |
投稿日時: 2009/5/28 1:06
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品ID及び規格IDの重複について > CSVファイルにて商品登録を行い、管理画面より規格の登録を行った場合、エラーも無く登録が出来るということです。
はい。そのように理解しております。 なお、カスタマイズ済み環境でのエラーのようで、原因の切り分けが困難です。
|
ishibo |
投稿日時: 2009/5/28 3:00
対応状況: −−−
|
常連 登録日: 2008/5/24 居住地: 北海道 投稿: 33 |
Re: 商品ID及び規格IDの重複について seasoft 様、度々のご返答ありがとうございます。
引用:
確かに切り分けとなると、カスタマイズ後の不具合ですので詳細なカスタマイズを淡々と説明するまで人に理解を求めると言う時点で難しい点はあると思います・・・(悩) 試しに、記載しましたエラーログに繋がるカスタマイズ部分に関しましては、商品一覧及び商品詳細にて新規に項目を追加した点があります。 内容的には、「maker」「space_info」「eco_2005」の3項目です。 正直申しまして今回の規格に関するエラーログでどうしてこの項目に関するエラーが出てくるのかと自分自身繋がり(関連性)が分からず、記載のエラーログを載せようかどうか迷った点はありますが…。 その他以前質問した事もありますが、規格を登録した後に規格1は表示されるものの規格2が表示されない質問を行ったことがあります。 正直、それらに関しても未だ解決はされておりません。 また、規格に関して登録した企画をDB(MySQL)にて内容を空にした事があり、その後規格の登録が出来ても商品に対する規格の選択が出来ないなどの不具合が生じ手動でdtb_classcategoryにclasscategory_id[0]の値を挿入したりしました。 結果、各商品に対する規格の登録は出来るようになり、フロント画面にて規格の表示もされるようになりましたが、いざ変更と言った時に今回の挙動に至った経緯があります。 再度、サラに戻す意味でやり直したほうが早いのでしょうか? EC-CUBEに関しては予想以上に想像以上のファイル間の繋がりがあり、追いかけても追いかけても自分自身が混乱し、最終的に惑わされ、その場の落ち着きを失いますね(涙) 数日経ったりそのほかの作業を行っている最中?落ち着いた頃合には、過去の疑問に「なんだ、そんなことか」とすんなり理解できることも多々あるのに…。 |
seasoft |
投稿日時: 2009/5/28 3:41
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品ID及び規格IDの重複について > 試しに、記載しましたエラーログに繋がるカスタマイズ部分に関しましては、商品一覧及び商品詳細にて新規に項目を追加した点があります。
> 内容的には、「maker」「space_info」「eco_2005」の3項目です。 エラーは
テーブル定義情報が提示されていないので本件に関して該当するか確認は出来ませんが、一般論としてはカスタマイズに不良があるためと考えられると思います。 > 正直申しまして今回の規格に関するエラーログでどうしてこの項目に関するエラーが出てくるのかと自分自身繋がり(関連性)が分からず、記載のエラーログを載せようかどうか迷った点はありますが…。 エラーログを掲載したのは妥当だと思います。載せていなかったら、私ならば「エラーメッセージは?」と聞いたと思います。 > 再度、サラに戻す意味でやり直したほうが早いのでしょうか? 開発環境ならば、それも選択肢のうちだと思います。 本番環境ならば、別に開発(試験)環境を用意するのが良いと思います。 私見ですが、関連テーブルや関連SQL文をカスタマイズしていることを告知せずに、「Var2.3.4を使用しており」という質問の仕方は、いかがなものかと感じました。老婆心ながら・・・
|
ishibo |
投稿日時: 2009/5/28 5:29
対応状況: −−−
|
常連 登録日: 2008/5/24 居住地: 北海道 投稿: 33 |
Re: 商品ID及び規格IDの重複について seasoft 様、ご返答頂きありがとう御座います。
引用:
大変申し訳ありませんでした。 以後、気を付けます。 また、エラーについて質問をさせて頂きたいのですが、今回項目の追加にてカスタマイズを行い、そのカスタマイズの不良での結果ですが、エラーに関して該当ファイルを探したところ、 /data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php 内の /** * View をサブクエリに変換するための配列を返す. * * @access private * @return array View をサブクエリに変換するための配列 */ function viewToSubQuery() { 以下の内容にてエラーが出ていると推測しているのですが、その中で項目で、 "vw_cross_products_class" =>' "vw_products_nonclass" => ' 内などに入力した該当項目「 T1.maker」の入力順?追加順?みたいなものはありますでしょうか? 例えば後から追加したので、順番から言うと"vw_products_nonclass" => '内では、T1.deliv_date_id,の後に追加しなければならないなど… ちなみにこの箇所はカスタマイズの際に以下のように入力しております。 function viewToSubQuery() { return array( "vw_cross_class" => ' (SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 ) ', "vw_cross_products_class" =>' (SELECT T1.class_id1, T1.class_id2, T1.classcategory_id1, T1.classcategory_id2, T2.product_id, T1.name1, T1.name2, T2.product_code, T2.stock, T2.price01, T2.price02, T1.rank1, T1.rank2, T1.maker, T1.space_info, T1.eco_2005 FROM (SELECT T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2, T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2 FROM dtb_classcategory AS T1, dtb_classcategory AS T2 ) AS T1 LEFT JOIN dtb_products_class AS T2 ON T1.classcategory_id1 = T2.classcategory_id1 AND T1.classcategory_id2 = T2.classcategory_id2) ', "vw_products_nonclass" => ' (SELECT T1.product_id, T1.name, T1.deliv_fee, T1.sale_limit, T1.sale_unlimited, T1.category_id, T1.rank, T1.maker, T1.space_info, T1.eco_2005, T1.status, T1.product_flag, T1.point_rate, T1.comment1, T1.comment2, T1.comment3, T1.comment4, T1.comment5, T1.comment6, T1.file1, T1.file2, T1.file3, T1.file4, T1.file5, T1.file6, T1.main_list_comment, T1.main_list_image, T1.main_comment, T1.main_image, T1.main_large_image, T1.sub_title1, T1.sub_comment1, T1.sub_image1, T1.sub_large_image1, T1.sub_title2, T1.sub_comment2, T1.sub_image2, T1.sub_large_image2, T1.sub_title3, T1.sub_comment3, T1.sub_image3, T1.sub_large_image3, T1.sub_title4, T1.sub_comment4, T1.sub_image4, T1.sub_large_image4, T1.sub_title5, T1.sub_comment5, T1.sub_image5, T1.sub_large_image5, T1.sub_title6, T1.sub_comment6, T1.sub_image6, T1.sub_large_image6, T1.del_flg, T1.creator_id, T1.create_date, T1.update_date, T1.deliv_date_id, T2.product_id_sub, T2.product_code, T2.price01, T2.price02, T2.stock, T2.stock_unlimited, T2.classcategory_id1, T2.classcategory_id2 FROM (SELECT * FROM dtb_products &&noncls_where&&) AS T1 LEFT JOIN (SELECT product_id AS product_id_sub, product_code, price01, price02, stock, stock_unlimited, classcategory_id1, classcategory_id2 FROM dtb_products_class WHERE classcategory_id1 = 0 AND classcategory_id2 = 0) AS T2 ON T1.product_id = T2.product_id_sub) ', "vw_products_allclass" => ' (SELECT T1.product_id, product_code_min, product_code_max, price01_min, price01_max, price02_min, price02_max, stock_min, stock_max, stock_unlimited_min, stock_unlimited_max, del_flg, status, name, comment1, comment2, comment3, main_list_comment, main_image, main_list_image, product_flag, deliv_date_id, sale_limit, point_rate, sale_unlimited, create_date, deliv_fee, maker, space_info, eco_2005, rank ,(SELECT rank AS category_rank FROM dtb_category AS T4 WHERE T1.category_id = T4.category_id) as category_rank ,(SELECT category_id AS sub_category_id FROM dtb_category T4 WHERE T1.category_id = T4.category_id) as category_id FROM (SELECT T0.product_id, T0.del_flg, T0.status, T0.name, T0.comment1, T0.comment2, T0.comment3, T0.main_list_comment, T0.main_image, T0.main_list_image, T0.product_flag, T0.deliv_date_id, T0.sale_limit, T0.point_rate, T0.sale_unlimited, T0.create_date, T0.deliv_fee, T0.maker, T0.space_info, T0.eco_2005, T00.category_id, T00.rank FROM dtb_products AS T0 LEFT JOIN dtb_product_categories AS T00 USING (product_id)) AS T1 RIGHT JOIN (SELECT product_id as product_id_sub, MIN(product_code) AS product_code_min, MAX(product_code) AS product_code_max, MIN(price01) AS price01_min, MAX(price01) AS price01_max, MIN(price02) AS price02_min, MAX(price02) AS price02_max, MIN(stock) AS stock_min, MAX(stock) AS stock_max, MIN(stock_unlimited) AS stock_unlimited_min, MAX(stock_unlimited) AS stock_unlimited_max FROM dtb_products_class GROUP BY product_id) AS T2 ON T1.product_id = T2.product_id_sub ) ', "vw_products_allclass_detail" => ' (SELECT product_id,price01_min,price01_max,price02_min,price02_max,stock_min,stock_max,stock_unlimited_min,stock_unlimited_max,maker,space_info,eco_2005, del_flg,status,name,comment1,comment2,comment3,deliv_fee,main_comment,main_image,main_large_image, sub_title1,sub_comment1,sub_image1,sub_large_image1, sub_title2,sub_comment2,sub_image2,sub_large_image2, sub_title3,sub_comment3,sub_image3,sub_large_image3, sub_title4,sub_comment4,sub_image4,sub_large_image4, sub_title5,sub_comment5,sub_image5,sub_large_image5, product_flag,deliv_date_id,sale_limit,point_rate,sale_unlimited,file1,file2,category_id FROM ( SELECT * FROM (dtb_products AS T1 RIGHT JOIN (SELECT product_id AS product_id_sub, MIN(price01) AS price01_min, MAX(price01) AS price01_max, MIN(price02) AS price02_min, MAX(price02) AS price02_max, MIN(stock) AS stock_min, MAX(stock) AS stock_max, MIN(stock_unlimited) AS stock_unlimited_min, MAX(stock_unlimited) AS stock_unlimited_max FROM dtb_products_class GROUP BY product_id) AS T2 ON T1.product_id = T2.product_id_sub ) ) AS T3 LEFT JOIN (SELECT rank AS category_rank, category_id AS sub_category_id FROM dtb_category) AS T4 ON T3.category_id = T4.sub_category_id) ', "vw_product_class" => ' (SELECT * FROM (SELECT T3.product_class_id, T3.product_id AS product_id_sub, classcategory_id1, classcategory_id2, T3.rank AS rank1, T4.rank AS rank2, T3.class_id AS class_id1, T4.class_id AS class_id2, stock, price01, price02, stock_unlimited, product_code FROM ( SELECT T1.product_class_id, T1.product_id, classcategory_id1, classcategory_id2, T2.rank, T2.class_id, stock, price01, price02, stock_unlimited, product_code FROM (dtb_products_class AS T1 LEFT JOIN dtb_classcategory AS T2 ON T1.classcategory_id1 = T2.classcategory_id)) AS T3 LEFT JOIN dtb_classcategory AS T4 ON T3.classcategory_id2 = T4.classcategory_id) AS T5 LEFT JOIN dtb_products AS T6 ON product_id_sub = T6.product_id) ', "vw_category_count" => ' (SELECT T1.category_id, T1.category_name, T1.parent_category_id, T1.level, T1.rank, T2.product_count FROM dtb_category AS T1 LEFT JOIN dtb_category_total_count AS T2 ON T1.category_id = T2.category_id) ' ); } } 図々しく細かなことをお伺いして恐縮ですが宜しくお願いします。 |
seasoft |
投稿日時: 2009/5/28 11:09
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品ID及び規格IDの重複について > 以下の内容にてエラーが出ていると推測しているのですが、その中で項目で、
> "vw_cross_products_class" =>' > "vw_products_nonclass" => ' > 内などに入力した該当項目「 T1.maker」の入力順?追加順?みたいなものはありますでしょうか? > 例えば後から追加したので、順番から言うと"vw_products_nonclass" => '内では、T1.deliv_date_id,の後に追加しなければならないなど… SELECT句でのカラムの列挙の順番ということですよね? 思いつく限りでは、関係ないとは思います。 今回のパターンだと、 ・対象テーブルを誤っている ・内側のサブクエリーで列挙していない のどちらかの予感がします。 ざっと、見た感じでは、vw_cross_products_class で後者の誤りがあるような。でも、そうだとしたら、フロントでもエラーが発生しそうな気も。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |