バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > メーカー検索機能について

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
DDR
投稿日時: 2009/2/16 5:57
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
メーカー検索機能について
どうしてもメーカー検索機能が欲しく、

http://svn.ec-cube.net/open_trac/changeset/17263

を参考に書き換えをしていましたが
SELECT maker_id, name FROM dtb_maker WHERE del_flg = 0  ORDER BY rank DESC 
DB Error: insufficient permissions

SELECT maker_id, name FROM dtb_maker WHERE del_flg = 0  ORDER BY rank DESC  
[nativecode=ERROR:  permission denied for relation dtb_maker]


といったエラーで出てしまいます
テーブル権限ですが 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();
}


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

seasoft
投稿日時: 2009/3/10 2:13
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: メーカー検索機能について
vw_products_allclass に maker_id を追加していないとか?


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

DDR
投稿日時: 2009/3/10 3:00
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: メーカー検索機能について
いつもご丁寧に有難う御座います

ズバリそれですね!!
本当に助かります!実装が間近に迫ってますが
VIEWの変更をいじった事がなかったのですが

間違いなくvw_products_allclass に maker_id を追加していない
が原因だと思います

大変申し訳ないのですが・・
phppgadminにて追加方法はテーブルやカラムを追加する方法ではなく定義から変更となっているのですが

追加してみたら長文は変更できないような英文でエラーが出たのですがDBに直接変更を加えるのでしょうか?

phppgadminはphpPgAdmin 4.0.1でした


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

seasoft
投稿日時: 2009/3/10 3:37
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: メーカー検索機能について
MS-SQL などは GUI で列追加可能ですが、フリーのDBのフリーツールではそこまでは無理だと思います。

SQL 文を直接実行する画面があると思うので、そこから SQL 文を流すのが早いと思います。


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

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,
続く

のみに追加しただけでは駄目なんでしょうか?

宜しく御願いいたします


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

seasoft
投稿日時: 2009/3/10 9:39
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: メーカー検索機能について
その SELECT 句直下の FROM 句はどうなってます?


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

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;

宜しく御願いいたします


----------------
------------------------------------------------------------------------------------------
EC-CUBE 3.0.17
DBサーバー mariaDB
WEBサーバー apache (CentOS)
PHP 7.1
-----------------------...

seasoft
投稿日時: 2009/3/10 13:42
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: メーカー検索機能について
現状のテーブル状態にも依存しますが、最初の FROM (....) のSELECT句にも改訂が必要だと思いますよ。


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

seasoft
投稿日時: 2009/3/10 14:00
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: メーカー検索機能について
・・・って、超簡単に動作したので貼っておきます。
深く考えずに省略構文ですが。


DROP VIEW vw_products_allclass;
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,
maker_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
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,251名です
総投稿数は110,348件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1688
8
red
1571
9
mcontact
1357
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.