バージョン選択

フォーラム

メニュー

オンライン状況

30 人のユーザが現在オンラインです。 (21 人のユーザが フォーラム を参照しています。)
登録ユーザ: 2
ゲスト: 28
vamps.ns mcontact もっと...

サイト内検索

質問 > 管理機能 > 受注管理画面で商品ステータス検索をしたい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
long20th
投稿日時: 2014/8/28 14:04
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
受注管理画面で商品ステータス検索をしたい
いつもありがとうございます。

管理画面の受注管理画面で、商品ステータス検索をしたいと思います。
テンプレートで検索窓を作るところまでは、他の検索を見て出来たのですが、LC_Page_Admin_Order_Disp.phpまたはLC_Page_Admin_Order.phpにどう追加して商品情報を持ってきたら良いか、どう記述したら良いか分かりません。
教えてください。

バージョン2.12.2
サーバー KAGOYA
yuh
投稿日時: 2014/8/28 14:51
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面で商品ステータス検索をしたい
LC_Page_Admin_Order.php
のbuildQueryに

AND EXISTS(
	SELECT *
	FROM
	dtb_order_detail od
	WHERE
		od.order_id = dtb_order.order_id AND 
		od.product_id EXISTS(
		SELECT
			*
		FROM
			dtb_product_status dps
		WHERE
			dps.product_id = od.product_id AND 
			product_satatus_id = ?
		)
	
)

こんな感じのクエリを追加して受け取った商品ステータスで検索できるように追加すればできると思います。

ぱっと書いただけなので、動かなければ調整してください
long20th
投稿日時: 2014/8/28 15:19
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 受注管理画面で商品ステータス検索をしたい
yuh様

ありがとうございます。

            case 'search_product_status':
                $tmp_where = 'AND EXISTS(SELECT *FROM dtb_order_detail od WHERE od.order_id = dtb_order.order_id AND od.product_id EXISTS(SELECT * FROMdtb_product_status dps WHEREdps.product_id = od.product_id AND product_satatus_id = ?))';
                foreach ($objFormParam->getValue($key) as $element) {
                    if ($element != '') {
                        if (SC_Utils_Ex::isBlank($tmp_where)) {
                            $tmp_where .= ' AND (product_status = ?';
                        } else {
                            $tmp_where .= ' OR product_status = ?';
                        }
                        $arrValues[] = $element;
                    }
                }

                if (!SC_Utils_Ex::isBlank($tmp_where)) {
                    $tmp_where .= ')';
                    $where .= " $tmp_where ";
                }
                break;


このようにしてみました所、エラーが出てしまいました。
修正箇所を教えて下さい。
yuh
投稿日時: 2014/8/28 16:01
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面で商品ステータス検索をしたい
その書き方を見る限りステータスはチェックボックスでいいんでしょうか?


                foreach ($objFormParam->getValue($key) as $element) {
                    if ($element != '') {
                        if (SC_Utils_Ex::isBlank($tmp_where)) {
                            $tmp_where .= ' AND (product_status = ?';
                        } else {
                            $tmp_where .= ' OR product_status = ?';
                        }
                        $arrValues[] = $element;
                    }
                }

の部分が丸ごと必要なく
product_satatus_id = ?をimplodeなりで$objFormParam->getValue($key)をカンマ区切りで入れればいいと思います。
long20th
投稿日時: 2014/8/28 16:18
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 受注管理画面で商品ステータス検索をしたい
yuh様
ありがとうございます。
チェックボックスで検索にかけたいと思います。
            case 'search_product_status':
                $tmp_where = 'AND EXISTS (SELECT * FROM dtb_order_detail od WHERE od.order_id = dtb_order .order_id AND od.product_id exists (SELECT * FROM dtb_product_status dps WHERE dps.product_id = od.product_id AND product_satatus_id = ?))';
				$arrValues[] = implode("product_status_id", $objFormParam->getValue($key));
                if (!SC_Utils_Ex::isBlank($tmp_where)) {
                    $tmp_where .= ')';
                    $where .= " $tmp_where ";
                }
                break;


に書き換えましたが、エラーになりました。

どの様にしたらよろしいでしょうか?
何度もすみません。
yuh
投稿日時: 2014/8/28 16:37
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面で商品ステータス検索をしたい

			if(is_array($objFormParam->getValue($key))){
                $tmp_where = 'AND EXISTS (SELECT * FROM dtb_order_detail od WHERE od.order_id = dtb_order .order_id AND od.product_id exists (SELECT * FROM dtb_product_status dps WHERE dps.product_id = od.product_id AND product_satatus_id IN ('.implode(",",array_fill(0, count($objFormParam->getValue($key)), '?')).')))';
				$arrValues = array_merge($arrValues,$objFormParam->getValue($key));
				}

こんな感じでどうでしょう
long20th
投稿日時: 2014/8/28 17:07
対応状況: −−−
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 受注管理画面で商品ステータス検索をしたい
yuh様
ありがとうございます。

この様に記述しエラーは回避されました。

            case 'search_product_status':
                $tmp_where = 'AND EXISTS (SELECT * FROM dtb_order_detail od WHERE od.order_id = dtb_order .order_id AND od.product_id EXISTS (SELECT * FROM dtb_product_status dps WHERE dps.product_id = od.product_id AND product_satatus_id = ?))';

			if(is_array($objFormParam->getValue($key))){
                $tmp_where = 'AND EXISTS (SELECT * FROM dtb_order_detail od WHERE od.order_id = dtb_order .order_id AND od.product_id exists (SELECT * FROM dtb_product_status dps WHERE dps.product_id = od.product_id AND product_satatus_id IN ('.implode(",",array_fill(0, count($objFormParam->getValue($key)), '?')).')))';
				$arrValues = array_merge($arrValues,$objFormParam->getValue($key));
				}
                break;

しかし、今度は結果を抽出してくれません。

LC_Page_Admin_Order.phpに


        $objFormParam->addParam('商品ステータス', 'search_product_status', INT_LEN, 'n', array('MAX_LENGTH_CHECK'));



            case 'search_product_status':
                $tmp_where = 'AND EXISTS (SELECT * FROM dtb_order_detail od WHERE od.order_id = dtb_order .order_id AND od.product_id EXISTS (SELECT * FROM dtb_product_status dps WHERE dps.product_id = od.product_id AND product_satatus_id = ?))';

			if(is_array($objFormParam->getValue($key))){
                $tmp_where = 'AND EXISTS (SELECT * FROM dtb_order_detail od WHERE od.order_id = dtb_order .order_id AND od.product_id exists (SELECT * FROM dtb_product_status dps WHERE dps.product_id = od.product_id AND product_satatus_id IN ('.implode(",",array_fill(0, count($objFormParam->getValue($key)), '?')).')))';
				$arrValues = array_merge($arrValues,$objFormParam->getValue($key));
				}
                break;

を記述、

index.tplに



        <tr>
            <th>商品ステータス</th>
            <td colspan="3">
            <!--{assign var=key value="search_product_status"}-->
            <span class="attention"><!--{$arrErr[$key]|h}--></span>
            <!--{html_checkboxes name="$key" options=$arrProduct_Status selected=$arrForm[$key].value}-->
            </td>
        </tr>


を記述してあります。

間違っている所が理解りません。

ご指摘、お願い致します。
yuh
投稿日時: 2014/8/28 21:03
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面で商品ステータス検索をしたい

            case 'search_product_status':
                if(is_array($objFormParam->getValue($key))){
                    $where .= '
                    AND EXISTS (
                        SELECT 
                            * 
                        FROM 
                            dtb_order_detail od 
                        WHERE 
                            od.order_id = dtb_order .order_id AND 
                            EXISTS
                            (
                                SELECT 
                                    * 
                                FROM 
                                    dtb_product_status 
                                WHERE 
                                    product_id = od.product_id AND 
                                    product_status_id IN ('.implode(",",array_fill(0, count($objFormParam->getValue($key)), '?')).')
                            )
                        ) 
                    ';
                    $arrValues = array_merge($arrValues,$objFormParam->getValue($key));
                }
                break;

ですね。
long20th
投稿日時: 2014/8/29 8:39
対応状況: 解決済
常連
登録日: 2014/6/25
居住地:
投稿: 35
Re: 受注管理画面で商品ステータス検索をしたい
yuh様
ありがとうございます。

見事、検出されました。
もう一度、しっかり確認して次に同じような所で躓かない様に努めます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1635
8
red
1569
9
mcontact
1265
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.