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

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

ただいまの
回答率

88.19%

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

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 607

spim

score 16

会員検索高速化 プラグイン
・購入商品名     
・購入商品コード
で検索結果は正しく表示されますが、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;
}
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • ただいまの回答率 88.19%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る