質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

0回答

1136閲覧

会員検索高速化 プラグイン csvダウンロードデータの出力内容

spim

総合スコア16

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2017/07/12 09:34

会員検索高速化 プラグイン
・購入商品名
・購入商品コード
で検索結果は正しく表示されますが、csvダウンロードでデータを出力すると、会員全員のデータが出力されてしまいます。
こちらの解決方法はございますでしょうか?宜しくお願いいたします。

class SC_CustomerList extends SC_SelectSql_Ex { public $arrColumnCSV; public function __construct($array, $mode = '') { if (is_array($array)) { $this->arrSql = $array; } $objDb = new SC_Helper_DB_Ex(); $dbFactory = SC_DB_DBFactory_Ex::getInstance(); if (!isset($this->arrSql['search_buy_product_name'])) $this->arrSql['search_buy_product_name'] = ''; if (!isset($this->arrSql['search_buy_product_code'])) $this->arrSql['search_buy_product_code'] = ''; if (!isset($this->arrSql['search_category_id'])) $this->arrSql['search_category_id'] = ''; if ( strlen($this->arrSql['search_buy_product_name']) > 0 or strlen($this->arrSql['search_buy_product_code']) > 0 or strlen($this->arrSql['search_category_id']) > 0 ) { $tmp = array(); if (strlen($this->arrSql['search_buy_product_name']) > 0) { $this->arrVal[] = $this->addSearchStr($this->arrSql['search_buy_product_name']); $tmp[] = 'od.product_name LIKE ? '; } if (strlen($this->arrSql['search_buy_product_code']) > 0) { $this->arrVal[] = $this->addSearchStr($this->arrSql['search_buy_product_code']); $tmp[] = 'od.product_code LIKE ? '; } if (strlen($this->arrSql['search_category_id']) > 0) { list($tmp_where, $tmp_arrval) = $objDb->sfGetCatWhere($this->arrSql['search_category_id']); if ($tmp_where != '') { $tmp[] = 'EXISTS (SELECT product_id FROM dtb_product_categories WHERE '.$tmp_where.' AND product_id = od.product_id)'; $this->arrVal = array_merge((array) $this->arrVal, (array) $tmp_arrval); } } $this->setInnerJoin = ' ( SELECT DISTINCT o.customer_id FROM dtb_order_detail od INNER JOIN dtb_order o ON ( od.order_id = o.order_id) WHERE '.implode(" AND ",$tmp).' ) as baseorder INNER JOIN '; $this->setInnerJoin2 = ' ON(baseorder.customer_id = dtb_customer.customer_id)'; }else{ $this->setInnerJoin = ''; } if ($mode == '') { $this->setWhere('status = 2 AND del_flg = 0 '); $regdate_col = 'dtb_customer.update_date'; } if ($mode == 'customer') { $this->setWhere(' del_flg = 0 '); $regdate_col = 'dtb_customer.update_date'; } if (!isset($this->arrSql['search_customer_id'])) $this->arrSql['search_customer_id'] = ''; if (strlen($this->arrSql['search_customer_id']) > 0) { $this->setWhere('dtb_customer.customer_id = ?'); $this->arrVal[] = $this->arrSql['search_customer_id']; } if (!isset($this->arrSql['search_name'])) $this->arrSql['search_name'] = ''; if (strlen($this->arrSql['search_name']) > 0) { $this->setWhere('(' . $dbFactory->concatColumn(array('dtb_customer.name01', 'dtb_customer.name02')) . ' LIKE ?)'); $searchName = $this->addSearchStr($this->arrSql['search_name']); $this->arrVal[] = preg_replace('/[ ]+/u','',$searchName); } if (!isset($this->arrSql['search_kana'])) $this->arrSql['search_kana'] = ''; if (strlen($this->arrSql['search_kana']) > 0) { $this->setWhere('(' . $dbFactory->concatColumn(array('dtb_customer.kana01', 'dtb_customer.kana02')) . ' LIKE ?)'); $searchKana = $this->addSearchStr($this->arrSql['search_kana']); $this->arrVal[] = preg_replace('/[ ]+/u','',$searchKana); } if (!isset($this->arrSql['search_pref'])) $this->arrSql['search_pref'] = ''; if (strlen($this->arrSql['search_pref']) > 0) { $this->setWhere('dtb_customer.pref = ?'); $this->arrVal[] = $this->arrSql['search_pref']; } if (!isset($this->arrSql['search_tel'])) $this->arrSql['search_tel'] = ''; if (is_numeric($this->arrSql['search_tel'])) { $this->setWhere('(' . $dbFactory->concatColumn(array('dtb_customer.tel01', 'dtb_customer.tel02', 'dtb_customer.tel03')) . ' LIKE ?)'); $searchTel = $this->addSearchStr($this->arrSql['search_tel']); $this->arrVal[] = str_replace('-', '', $searchTel); } if (!isset($this->arrSql['search_sex'])) $this->arrSql['search_sex'] = ''; if (is_array($this->arrSql['search_sex'])) { $arrSexVal = $this->setItemTerm($this->arrSql['search_sex'] ,'dtb_customer.sex'); foreach ($arrSexVal as $data) { $this->arrVal[] = $data; } } if (!isset($this->arrSql['search_job'])) $this->arrSql['search_job'] = ''; if (is_array($this->arrSql['search_job'])) { if (in_array('不明', $this->arrSql['search_job'])) { $arrJobVal = $this->setItemTermWithNull($this->arrSql['search_job'] ,'dtb_customer.job'); } else { $arrJobVal = $this->setItemTerm($this->arrSql['search_job'] ,'dtb_customer.job'); } if (is_array($arrJobVal)) { foreach ($arrJobVal as $data) { $this->arrVal[] = $data; } } } if (!isset($this->arrSql['search_email'])) $this->arrSql['search_email'] = ''; if (strlen($this->arrSql['search_email']) > 0) { $this->arrSql['search_email'] = explode(',', $this->arrSql['search_email']); $sql_where = ''; foreach ($this->arrSql['search_email'] as $val) { $val = trim($val); if ($this->arrSql['not_emailinc'] == '1') { if ($sql_where == '') { $sql_where .= 'dtb_customer.email NOT ILIKE ? '; } else { $sql_where .= 'AND dtb_customer.email NOT ILIKE ? '; } } else { if ($sql_where == '') { $sql_where .= 'dtb_customer.email ILIKE ? '; } else { $sql_where .= 'OR dtb_customer.email ILIKE ? '; } } $searchEmail = $this->addSearchStr($val); $this->arrVal[] = $searchEmail; } $this->setWhere($sql_where); } // E-MAIL(mobile) if (!isset($this->arrSql['search_email_mobile'])) $this->arrSql['search_email_mobile'] = ''; if (strlen($this->arrSql['search_email_mobile']) > 0) { $this->arrSql['search_email_mobile'] = explode(',', $this->arrSql['search_email_mobile']); $sql_where = ''; foreach ($this->arrSql['search_email_mobile'] as $val) { $val = trim($val); if ($this->arrSql['not_email_mobileinc'] == '1') { if ($sql_where == '') { $sql_where .= 'dtb_customer.email_mobile NOT ILIKE ? '; } else { $sql_where .= 'AND dtb_customer.email_mobile NOT ILIKE ? '; } } else { if ($sql_where == '') { $sql_where .= 'dtb_customer.email_mobile ILIKE ? '; } else { $sql_where .= 'OR dtb_customer.email_mobile ILIKE ? '; } } $searchemail_mobile = $this->addSearchStr($val); $this->arrVal[] = $searchemail_mobile; } $this->setWhere($sql_where); } if ($mode == 'customer') { if (isset($this->arrSql['search_htmlmail'])) { $this->setWhere('dtb_customer.status = 2'); if (SC_Utils_Ex::sfIsInt($this->arrSql['search_htmlmail'])) { $this->setWhere('dtb_customer.mailmaga_flg = ?'); $this->arrVal[] = $this->arrSql['search_htmlmail']; } else { $this->setWhere('dtb_customer.mailmaga_flg <> 3'); } } } if ($mode == 'customer') { if (isset($this->arrSql['search_mail_type'])) { $sqlEmailMobileIsEmpty = "(dtb_customer.email_mobile IS NULL OR dtb_customer.email_mobile = '')"; switch ($this->arrSql['search_mail_type']) { case 1: $this->setWhere("(dtb_customer.email <> dtb_customer.email_mobile OR $sqlEmailMobileIsEmpty)"); break; case 2: $this->setWhere("NOT $sqlEmailMobileIsEmpty"); break; case 3: $this->setWhere($sqlEmailMobileIsEmpty); break; case 4: $this->setWhere('dtb_customer.email = dtb_customer.email_mobile'); break; } } } if (!isset($this->arrSql['search_buy_total_from'])) $this->arrSql['search_buy_total_from'] = ''; if (!isset($this->arrSql['search_buy_total_to'])) $this->arrSql['search_buy_total_to'] = ''; if (is_numeric($this->arrSql['search_buy_total_from']) || is_numeric($this->arrSql['search_buy_total_to'])) { $arrBuyTotal = $this->selectRange($this->arrSql['search_buy_total_from'], $this->arrSql['search_buy_total_to'], 'buy_total'); foreach ($arrBuyTotal as $data) { $this->arrVal[] = $data; } } if (!isset($this->arrSql['search_buy_times_from'])) $this->arrSql['search_buy_times_from'] = ''; if (!isset($this->arrSql['search_buy_times_to'])) $this->arrSql['search_buy_times_to'] = ''; if (is_numeric($this->arrSql['search_buy_times_from']) || is_numeric($this->arrSql['search_buy_times_to'])) { $arrBuyTimes = $this->selectRange($this->arrSql['search_buy_times_from'], $this->arrSql['search_buy_times_to'], 'buy_times'); foreach ($arrBuyTimes as $data) { $this->arrVal[] = $data; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問