質問 > その他 > 特定の文字列が含まれる商品だけを表示するブロックについて。 |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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: 特定の文字列が含まれる商品だけを表示するブロックについて。
こんな感じですかね? テストは一切してません。 |
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: 特定の文字列が含まれる商品だけを表示するブロックについて。 商品数が多くなると重くなる可能性があるんですか^^;
色々と本当にありがとうございます! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |