バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 特定の文字列が含まれる商品だけを表示するブロックについて。

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ryuta
投稿日時: 2015/1/22 16:03
対応状況: −−−
半人前
登録日: 2015/1/22
居住地:
投稿: 14
特定の文字列が含まれる商品だけを表示するブロックについて。
お世話になります。

商品一覧ブロックにdtb_products内のcomment3に特定の文字列が含まれている商品だけを指定した数だけランダムに表示したブロックを作成したいと思っております。

現在下記コードにて、全商品の指定した数をランダムに表示させる事はできましたが、comment3内の特定の文字列が含まれる商品だけを表示させることが出来ず、躓いております。


function process() {
if (defined("MOBILE_SITE") && MOBILE_SITE) {
$objView = new SC_MobileView();
} else {
$objView = new SC_SiteView();
}
$order = "random()";
$limit = "8";

$objQuery = new SC_Query_Ex();
$objProduct = new SC_Product_Ex();

$objQuery->setorder($order);
$objQuery->setlimit($limit);
$this->arrProducts = $objProduct->lists($objQuery);

$objView->assignobj($this);
$objView->display($this->tpl_mainpage);
}

どのようなコードを入れれば良いのでしょうか?
よろしくお願いいたします。
yuh
投稿日時: 2015/1/22 17:34
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 特定の文字列が含まれる商品だけを表示するブロックについて。

$keyword = '特定の文字列';
$objQuery->setorder($order);
$objQuery->setlimit($limit);
$productids = $objQuery->getCol('product_id','dtb_products','del_flg = 0 AND status = 1 AND  alldtl.comment3 ILIKE ?',array($keyword));
        $$this->arrProducts = $objProduct->getListByProductIds($objQuery, $productids);


こんな感じですかね?
テストは一切してません。
ryuta
投稿日時: 2015/1/23 2:11
対応状況: −−−
半人前
登録日: 2015/1/22
居住地:
投稿: 14
Re: 特定の文字列が含まれる商品だけを表示するブロックについて。
yuh様ありがとうございます。

頂いたコードを元に、

function process() {
if (defined("MOBILE_SITE") && MOBILE_SITE) {
$objView = new SC_MobileView();
} else {
$objView = new SC_SiteView();
}
$order = "random()";
$limit = "8";
$keyword = '特定の文字列';

$objQuery = new SC_Query_Ex();
$objProduct = new SC_Product_Ex();

$objQuery->setorder($order);
$objQuery->setlimit($limit);
$productids = $objQuery->getCol('product_id','dtb_products','del_flg = 0 AND status = 1 AND alldtl.comment3 ILIKE ?',array($keyword));
$$this->arrProducts = $objProduct->getListByProductIds($objQuery, $productids);


$objView->assignobj($this);
$objView->display($this->tpl_mainpage);


}


と書いてみましたが、


Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [SELECT product_id FROM dtb_products WHERE del_flg = 0 AND status = 1 AND alldtl.comment3 LIKE ? ORDER BY RAND() ]
MDB2 Error: no such field
_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE mdb2_statement_mysql_21f065152d8168a5a747acf320e84f98ed16771851 FROM 'SELECT product_id FROM dtb_products WHERE del_flg = 0 AND status = 1 AND alldtl.comment3 LIKE ? ORDER BY RAND() LIMIT 0, 16']
[Native code: 1054]
[Native message: Unknown column 'alldtl.comment3' in 'where clause']

というエラーが出ます。

書き方が間違っているのでしょうか?
yuh
投稿日時: 2015/1/23 10:08
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 特定の文字列が含まれる商品だけを表示するブロックについて。
$productids = $objQuery->getCol('product_id','dtb_products','del_flg = 0 AND status = 1 AND alldtl.comment3 ILIKE ?',array($keyword));

の alldtl.comment3をcomment3にしてください。
思いっきりコピペミスでしたw
ryuta
投稿日時: 2015/1/23 22:35
対応状況: −−−
半人前
登録日: 2015/1/22
居住地:
投稿: 14
Re: 特定の文字列が含まれる商品だけを表示するブロックについて。
yuh様 ご返信ありがとうございます。

alldtl.comment3をcomment3にしたところ、当ブロックとページのソース的に当ブロック以降に表示されるブロックが全て表示されなくなりましたので、

$$this->arrProducts = $objProduct->getListByProductIds($objQuery, $productids);
上記のコードの先頭の$を一つ減らしたところ、うまく表示されるようになりました。

ありがとうございました。
yuh
投稿日時: 2015/1/23 22:58
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 特定の文字列が含まれる商品だけを表示するブロックについて。
一応書いたコードがある程度うまく動いてよかったです。
ただ、商品数が多くなると重たくなる可能性があるので注意してください
ryuta
投稿日時: 2015/1/23 23:25
対応状況: 解決済
半人前
登録日: 2015/1/22
居住地:
投稿: 14
Re: 特定の文字列が含まれる商品だけを表示するブロックについて。
商品数が多くなると重くなる可能性があるんですか^^;

色々と本当にありがとうございます!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.