会員検索高速化 プラグイン csvダウンロードデータの出力内容
受付中
回答 0
投稿
- 評価
- クリップ 0
- VIEW 607
会員検索高速化 プラグイン
・購入商品名
・購入商品コード
で検索結果は正しく表示されますが、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%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる