バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 管理画面の商品検索 説明文も

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
iwakiri
投稿日時: 2014/12/16 14:29
対応状況: −−−
半人前
登録日: 2014/11/4
居住地:
投稿: 13
Re: 管理画面の商品検索 説明文も
dondon様

syntax errorということで、単純な構文エラーのようです。
326行目付近をよく見て、記述に間違いが無いか確認してみてください。
もし分からない場合は、記述されたcase文及び、326行目前後のコードを貼っていただければこちらで確認できるかと思います。
dondon
投稿日時: 2014/12/17 10:54
対応状況: −−−
一人前
登録日: 2012/2/23
居住地:
投稿: 136
Re: 管理画面の商品検索 説明文も
iwakiri様

ありがとうございます。

私が変に触ったモノだと混乱しそうなので現在のものを添付します。
ここのどこをどう書き変えれば
検索時に 題名、説明文、キーワードからヒットさせられるのでしょうか。


以下、LC_Page_Admin_Products.php


/**
* クエリを構築する.
*
* 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する.
* クエリパラメーターは, SC_FormParam の入力値から取得する.
*
* 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される.
*
* @param string $key 検索条件のキー
* @param string $where 構築する WHERE 句
* @param array $arrValues 構築するクエリパラメーター
* @param SC_FormParam $objFormParam SC_FormParam インスタンス
* @param SC_FormParam $objDb SC_Helper_DB_Ex インスタンス
* @return void
*/
function buildQuery($key, &$where, &$arrValues, &$objFormParam, &$objDb) {
$dbFactory = SC_DB_DBFactory_Ex::getInstance();
switch ($key) {
// 商品ID
case 'search_product_id':
$where .= " AND product_id = ?";
$arrValues[] = sprintf('%d', $objFormParam->getValue($key));
break;
// 商品コード
case 'search_product_code':
$where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? GROUP BY product_id)";
$arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
break;
// 商品名
case 'search_name':
// 商品名をwhere文に
$name = $objFormParam->getValue($key);
$name = str_replace(",", "", $name);
// 全角スペースを半角スペースに変換
$name = str_replace(' ', ' ', $name);
// スペースでキーワードを分割
$names = preg_split("/ +/", $name);
// 分割したキーワードを一つずつwhere文に追加
foreach ($names as $val) {
if ( strlen($val) > 0 ) {
$where .= " AND name ILIKE ? ";
$arrValues[] = sprintf('%%%s%%', $val);

}
}


// $where .= " AND name LIKE ?";
// $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));

// カテゴリ
case 'search_category_id':
list($tmp_where, $tmp_Values) = $objDb->sfGetCatWhere($objFormParam->getValue($key));
if($tmp_where != "") {
$where.= " AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")";
$arrValues = array_merge((array)$arrValues, (array)$tmp_Values);
}
break;
// 種別
case 'search_status':
$tmp_where = "";
foreach($objFormParam->getValue($key) as $element) {
if($element != "") {
if(SC_Utils_Ex::isBlank($tmp_where)) {
$tmp_where .= " AND (status = ?";
} else {
$tmp_where .= " OR status = ?";
}
$arrValues[] = $element;
}
}

if(!SC_Utils_Ex::isBlank($tmp_where)) {
$tmp_where .= ")";
$where .= " $tmp_where ";
}
break;
// 登録・更新日(開始)
case 'search_startyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_startyear'),
$objFormParam->getValue('search_startmonth'),
$objFormParam->getValue('search_startday'));
$where.= " AND update_date >= ?";
$arrValues[] = $date;
break;
// 登録・更新日(終了)
case 'search_endyear':
$date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_endyear'),
$objFormParam->getValue('search_endmonth'),
$objFormParam->getValue('search_endday'), true);
$where.= " AND update_date <= ?";
$arrValues[] = $date;
break;
// 商品ステータス
case 'search_product_statuses':
if(count($objFormParam->getValue($key)) > 0) {
$where .= " AND product_id IN (SELECT product_id FROM dtb_product_status WHERE product_status_id IN (";
foreach($objFormParam->getValue($key) as $param) {
$where .= "?,";
$arrValues[] = $param;
}
$where = preg_replace("/,$/", "))", $where);
}
break;
}
}


IPLOGIC
投稿日時: 2014/12/17 20:39
対応状況: −−−
一人前
登録日: 2014/12/8
居住地: 東京都
投稿: 96
Re: 管理画面の商品検索 説明文も
dondon様

syntax errorの場所は326行目がどこなのか不明なためわかりませんが、ソースを確認して以下の2点が気になりました。

1.case 'search_name': の処理の最後にbreak;が無い。
2.恐らくカンマ区切りのキーワードを半角スペース区切りに変更したいのだと思いますが、空文字になっている。
$name = str_replace(",", "", $name);

特に1の内容は処理結果が全く変わってしまいますので、ご注意ください。


----------------
アイピーロジック株式会社
EC-CUBE専用メール配信サービス「PostCarrier for EC-CUBE」
[url=http://www.rakusite.net/]EC-CUBE専用サイト保守監視サービス「らくらくサイト保守

dondon
投稿日時: 2014/12/18 9:27
対応状況: −−−
一人前
登録日: 2012/2/23
居住地:
投稿: 136
Re: 管理画面の商品検索 説明文も
IPLOGIC様

ご指導ありがとうございます。
「break;が無い。」が原因でした・・・。すみません。

しかし、説明文かた検索は無事ヒットしましたが、今度は変える前にできていたAND検索ができなくなってしまいました。
AND検索+説明文もヒット は共存が難しいのでしょうか。
そこまでやるとなると検索画面にチェックボックスなどを用いて、○AND検索 ○OR検索 ○説明文検索
みたいにしないといけませんか?


■元々のコード(タイトルをスペース区切りでAND検索可能だった)

// 商品名
case 'search_name':
// 商品名をwhere文に
$name = $objFormParam->getValue($key);
$name = str_replace(",", "", $name);
// 全角スペースを半角スペースに変換
$name = str_replace(",", "", $name);
// スペースでキーワードを分割
$names = preg_split("/ +/", $name);
// 分割したキーワードを一つずつwhere文に追加
foreach ($names as $val) {
if ( strlen($val) > 0 ) {
$where .= " AND name ILIKE ? ";
$arrValues[] = sprintf('%%%s%%', $val);

}
}
break;


■変更したコード(説明文もヒットするが、AND検索が無効に・・・)

// 商品名
case 'search_name':
// 商品名をwhere文に
$name = $objFormParam->getValue($key);
$name = str_replace(",", "", $name);
// 全角スペースを半角スペースに変換
$name = str_replace(",", "", $name);
// スペースでキーワードを分割
$names = preg_split("/ +/", $name);
// 分割したキーワードを一つずつwhere文に追加
foreach ($names as $val) {
if ( strlen($val) > 0 ) {
$where .= " AND ( name LIKE ? OR comment3 LIKE ? OR main_comment LIKE ?) ";
$arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
$arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
$arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));

}
}
break;


ご多忙の中、恐縮です。
IPLOGIC
投稿日時: 2014/12/18 19:54
対応状況: −−−
一人前
登録日: 2014/12/8
居住地: 東京都
投稿: 96
Re: 管理画面の商品検索 説明文も
dondon 様

1点気になるところと言えば「全角スペースを半角スペースに変換する処理」が変更後のソースには見当たりませんでした。
ただ、その点を踏まえても、変更後のプログラムを見る限りではAND検索ができなくなった原因は特に見当たりません。
再度テストされたデータの内容などをご確認いただいたほうが良いかもしれません。


----------------
アイピーロジック株式会社
EC-CUBE専用メール配信サービス「PostCarrier for EC-CUBE」
[url=http://www.rakusite.net/]EC-CUBE専用サイト保守監視サービス「らくらくサイト保守

« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.