質問 > 管理機能 > メーカー検索機能について |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
DDR |
投稿日時: 2009/2/16 5:57
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
メーカー検索機能について どうしてもメーカー検索機能が欲しく、
http://svn.ec-cube.net/open_trac/changeset/17263 を参考に書き換えをしていましたが
といったエラーで出てしまいます テーブル権限ですが Mysqlだと出るような記事がありましたが 当方は EC-CUBEバージョン 2.3.0 PHPバージョン PHP 5.2.6 DBバージョン PostgreSQL 7.4.18 といった環境です /data/Sc-Query.phpの /** * auto_incrementを取得する. * * @param string $table_name テーブル名 * @return integer */ function get_auto_increment($table_name){ // ロックする $this->query("LOCK TABLES $table_name WRITE"); // 次のIncrementを取得 $arrRet = $this->getAll("SHOW TABLE STATUS LIKE ?", array($table_name)); $auto_inc_no = $arrRet[0]["Auto_increment"]; // 値をカウントアップしておく $this->conn->query("ALTER TABLE $table_name AUTO_INCREMENT=?" , $auto_inc_no + 1); // 解除する $this->query('UNLOCK TABLES'); return $auto_inc_no; } } ここらへんでしょうか? ロックをコメントアウトなどしても問題ないのか不安です・・ 実装された方でエラーが出ないようにされた方 アドバイスを御願い致します |
DDR |
投稿日時: 2009/3/10 0:48
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
Re: メーカー検索機能について サーバーの設定などで、権限問題は回避できたのですが
実装中にシステムエラーが発生してしまいましたと出てしまいます 管理画面から、メーカー登録は可能 商品にもメーカーを登録可能 DB dtb_maker にも正常に登録されてます dtb_productsのカラムにもmaker_idを追加して商品に 1 と正常にメーカー登録は出来てます サイトの商品一覧画面にて 検索ブロックから、メーカーを選ぶと URLが products/list.php?mode=search&category_id=23&maker_id=1&name=aa&search.x=17&search.y=2 と正常になっていると思ってます それで実行するとシステムエラーが出てしまいます ログの内容は SELECT DISTINCT product_id FROM vw_products_allclass AS allcls WHERE del_flg = 0 AND status = 1 AND category_id IN ( ?,? ,? ,? ,? ,? ,? ,? ,? ,? ,? ,? ,? ) AND ( name ILIKE ? OR comment3 ILIKE ?) AND maker_id = ? DB Error: no such field SELECT DISTINCT product_id FROM vw_products_allclass AS allcls WHERE del_flg = 0 AND status = 1 AND category_id IN ( 23,'47' ,'46' ,'49' ,'48' ,'151' ,'52' ,'54' ,'152' ,'53' ,'51' ,'150' ,'50' ) AND ( name ILIKE '%aa%' OR comment3 ILIKE '%aa%') AND maker_id = '1' [nativecode=ERROR: column "maker_id" does not exist] となってます カラム maker_idが無いように見えますが 分かりません;; 解決策がありそうでしたら御願いいたします 2.3.0で問題がありそうなのは LC_Page_Products_List.php でしょうかね? // メーカーらのWHERE文字列取得 if ( $maker_id ) { $where .= " AND maker_id = ? "; $arrval[] = $maker_id; } if (empty($arrval)) { $arrval = array(); }
|
seasoft |
投稿日時: 2009/3/10 2:13
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: メーカー検索機能について vw_products_allclass に maker_id を追加していないとか?
|
DDR |
投稿日時: 2009/3/10 3:00
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
Re: メーカー検索機能について いつもご丁寧に有難う御座います
ズバリそれですね!! 本当に助かります!実装が間近に迫ってますが VIEWの変更をいじった事がなかったのですが 間違いなくvw_products_allclass に maker_id を追加していない が原因だと思います 大変申し訳ないのですが・・ phppgadminにて追加方法はテーブルやカラムを追加する方法ではなく定義から変更となっているのですが 追加してみたら長文は変更できないような英文でエラーが出たのですがDBに直接変更を加えるのでしょうか? phppgadminはphpPgAdmin 4.0.1でした
|
seasoft |
投稿日時: 2009/3/10 3:37
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: メーカー検索機能について MS-SQL などは GUI で列追加可能ですが、フリーのDBのフリーツールではそこまでは無理だと思います。
SQL 文を直接実行する画面があると思うので、そこから SQL 文を流すのが早いと思います。
|
DDR |
投稿日時: 2009/3/10 4:08
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
Re: メーカー検索機能について なるほど!
PhppgadminだったからSQLからのみしか出来ないんですね 本当にいつも勉強になります VIEWの作成をSQLから定義を試みましたが column "maker_id" does not exist となってしまいます CREATE VIEW vw_products_allclass AS SELECT T5.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, category_rank, maker_id, 続く のみに追加しただけでは駄目なんでしょうか? 宜しく御願いいたします
|
seasoft |
投稿日時: 2009/3/10 9:39
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: メーカー検索機能について その SELECT 句直下の FROM 句はどうなってます?
|
DDR |
投稿日時: 2009/3/10 11:36
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2008/6/21 居住地: 大阪 投稿: 307 |
Re: メーカー検索機能について 返信が遅くなって申し訳ありません
長文になってしまいますが実行しようとしている VIEWのSQLを書き込みます CREATE VIEW vw_products_allclass AS SELECT T5.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, category_rank, maker_id, T5.category_id, T5.del_flg, T5.status, T5.name, T5.comment1, T5.comment2, T5.comment3, T5.rank, T5.main_list_comment, T5.main_image, T5.main_list_image, T5.product_flag, T5.deliv_date_id, T5.sale_limit, T5.point_rate, T5.sale_unlimited, T5.create_date, T5.deliv_fee FROM ((SELECT T1.product_id, T1.del_flg, T1.status, T1.name, T1.comment1, T1.comment2, T1.comment3, T1.main_list_comment, T1.main_image, T1.main_list_image, T1.product_flag, T1.deliv_date_id, T1.sale_limit, T1.point_rate, T1.sale_unlimited, T1.create_date, T1.deliv_fee, T2.category_id, T1.rank FROM dtb_products AS T1 LEFT JOIN dtb_product_categories AS T2 ON T1.product_id = T2.product_id) AS T3 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 T4 ON T3.product_id = T4.product_id_sub) AS T5 LEFT JOIN (SELECT rank AS category_rank, category_id AS sub_category_id FROM dtb_category) AS T6 ON T5.category_id = T6.sub_category_id; 宜しく御願いいたします
|
seasoft |
投稿日時: 2009/3/10 13:42
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: メーカー検索機能について 現状のテーブル状態にも依存しますが、最初の FROM (....) のSELECT句にも改訂が必要だと思いますよ。
|
seasoft |
投稿日時: 2009/3/10 14:00
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: メーカー検索機能について ・・・って、超簡単に動作したので貼っておきます。
深く考えずに省略構文ですが。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |