バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ken-o
投稿日時: 2012/3/28 12:01
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
いつもお世話になっております。
すみません、SQLで詰まりましたので、お知恵を貸してください。

表題の通りステータス管理の一覧に、顧客が複数商品を購入した場合、注文番号と商品番号を購入個数分表示させたいと思っております。

たとえば、AとBという商品を購入した場合

注文番号 商品番号
0001   A
0001   B

のようにしたいと考えております。


LC_Page_Admin_Order_Status を以下のように改造しました。
引用:

//ステータス一覧の表示
function lfStatusDisp($status,$pageno){
$objQuery =& SC_Query_Ex::getSingletonInstance();

/*$select ="*";
$from = "dtb_order";
$where = "del_flg = 0 AND status = ?";
$arrval[] = $status;*/


$select ="*";
$from = "dtb_order_detail , dtb_order";
$where = "dtb_order_detail.order_id = dtb_order.order_id AND del_flg = 0 AND status = ? AND dtb_order_detail.order_detail_id";
$arrval[] = $status;

//$order = "dtb_order_detail.order_detail_id";
//$order = "order_id DESC";


$linemax = $objQuery->count($from, $where, $arrval);
$this->tpl_linemax = $linemax;

// ページ送りの処理
$page_max = ORDER_STATUS_MAX;

// ページ送りの取得
$objNavi = new SC_PageNavi_Ex($pageno, $linemax, $page_max, 'fnNaviSearchOnlyPage', NAVI_PMAX);
$this->tpl_strnavi = $objNavi->strnavi; // 表示文字列
$startno = $objNavi->start_row;

$this->tpl_pageno = $pageno;

// 取得範囲の指定(開始行番号、行数のセット)
$objQuery->setLimitOffset($page_max, $startno);

//表示順序
$objQuery->setOrder($order);

//検索結果の取得
$this->arrStatus = $objQuery->select($select, $from, $where, $arrval);
}


太字の改造により、dtb_order と dtb_order_detailの全カラムが取得できていて、whereで取れていると思うのですが…

なぜか、今までと同じように注文番号でまとまって表示されてしまいます。


status.tpl には、
引用:

<td><!--{$arrStatus[cnt].order_name01|h}--><!--{$arrStatus[cnt].order_name02|h}--></td>
<td><a href="#" onclick="fnOpenWindow('./disp.php?order_id=<!--{$arrStatus[cnt].order_id}-->','order_disp','800','900'); return false;" ><!--{$arrStatus[cnt].order_id}--></a></td>
<td><!--{$arrStatus[cnt].order_detail_id}--></td>

のように太字の部分を新しく登録しました。
この段階では、複数商品のうち、1つ目の商品のみのorder_detail_idが取得されています。


すみません、よろしくお願い致します。


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

ゲスト
投稿日時: 2012/3/28 16:00
対応状況: −−−
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
商品番号が、何なのかが?ですが、

$select ="*";
$from = "dtb_order_detail , dtb_order";
$where = "dtb_order_detail.order_id = dtb_order.order_id AND del_flg = 0 AND status = ? AND dtb_order_detail.order_detail_id";
$arrval[] = $status;



<th>商品コード</th>

<td><!--{$arrStatus[cnt].product_code order_detail_id}--></td>

と、したら、それなりに、表示しましたが。。。
ken-o
投稿日時: 2012/3/28 16:14
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
Ringo 様

いつもお世話になっております。
わかりにくい質問内容で申し訳ありません。その方法はすでに実験しており、私がほしい結果ではありませんでした。
上記の方法ですと、仮に複数購入した場合、一つ目の商品番号が表示されるかと思います。

今回私が行おうとしているのは、dtb_order_detailに登録されている同じorder_idを持つ、すべてのorder_detail_idの値を表示させたいのです。

すでにSQLでdtb_order_detailとdtb_orderは結びついているはずなので、質問で記載致しましたようにwhereに足せばいくと思ったのですが…


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

ゲスト
投稿日時: 2012/3/28 17:18
対応状況: −−−
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
バージョンはいくつですか?
小生は、2.11.5で試してみました。
ken-o
投稿日時: 2012/3/28 17:26
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
Ringo 様

すみません、質問は久しぶりだったもので記載し忘れました。

------------------------------------------------------------------------------------------
[EC-CUBE] 2.11.2
[レンタルサーバ] CPI
[OS] Windows 7
[PHP] PHP 5.2.8
[データベース] MySQL 5.0.45
[WEBサーバ] apache
[ブラウザ] Opera/Firefox6.3/IE9/Chrome/Safari
------------------------------------------------------------------------------------------

Ringo 様のほうでは複数個の場合は、正しく個数分表示されているのですか?


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

PWS
投稿日時: 2012/3/28 17:42
対応状況: −−−
一人前
登録日: 2012/1/23
居住地: Itami Hyogo
投稿: 141
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
こんにちは。
稼働環境がないので検証できないのですが(汗

引用:

$select ="*";
$from = "dtb_order_detail , dtb_order";
$where = "dtb_order_detail.order_id = dtb_order.order_id AND del_flg = 0 AND status = ? AND dtb_order_detail.order_detail_id";
$arrval[] = $status;
(中略)
$linemax = $objQuery->count($from, $where, $arrval);
(中略)
$this->arrStatus = $objQuery->select($select, $from, $where, $arrval);


sql文の訂正はRingoさんの書かれたとおりかと思います。
#上記SQL文をそのままpgAdminで走らせると怒られました(^^;

それと、dtb_order_detailとdtb_orderで重複するフィールド名があって、それをテンプレート側で使っているのが気になります。
#本題とは関係ないかもしれませんが、気持ち悪いです……

$this->arrStatusのデータは取得できていますでしょうか。


----------------
PWS

新しいバージョンは未経験ゆえアイデア出し程度にとどめます。
困ったらエディタでgrep推奨。

解決したら解決済みにすると喜ばれます。

★基礎的なことはEC-CUBEの学校をおすす

ゲスト
投稿日時: 2012/3/28 17:42
対応状況: −−−
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
2.11.5では、先のコードで、
1 nabe...
1 ice...
2 nabe...
2 ice...
3 nebe...
4 ice...
の様に、詳細と同様に表示されました。

そう言えば、2.11.1〜2.11.3で、この辺のデータの格納とか表示とか、変更が有ったような、、、かすかな記憶が。。。
ちょっと、遡ってみます。
ken-o
投稿日時: 2012/3/28 17:57
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
Ringo 様

先ほどの
引用:

$where = "dtb_order_detail.order_id = dtb_order.order_id AND del_flg = 0 AND status = ?";


に戻したところ、注文番号と商品番号が表示されました。なぜ、先ほどまでうまくいかなかったのかは不明ですが、やっと表示されました〜
ありがとうございました(_ _)


PWS 様

いろいろありがとうございました。
問題なく表示されました。
Ringo 様の訂正版は事前に実験したのですが、結果が出てこなかったので、いろいろ試した結果お手上げになり質問をしました。
しかし、本日午後にやった、Ringo 様のコードに戻したところ、今回は動きました!
なぜだかはわかりませんが…


お二方には今回も大変お世話になりました。
結局のところ原因は不明ですか・・(汗
近々サーバーを入れ替えるので、その際に2.11.5に新規インストールする予定です。
本番でトラブルになりましたら、またよろしくお願い致します。


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

ken-o
投稿日時: 2012/3/28 18:12
対応状況: −−−
長老
登録日: 2011/9/22
居住地:
投稿: 222
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
すみません、関連したものでもう一つ質問をさせてください。

先ほどの複数の商品を購入した場合、注文番号にA や B または、0001-1、0001-2 のように枝番を付けたいと考えております。

ステータス変更の際も枝番であれば、それぞれ個別でステータスを変更しなければならないようにしたいのですが、この場合はどのようにすればよいでしょう?

すみません、どうかよろしくお願い致します。


----------------
何分知識が浅いですが・・・
出来得る限り協力したいと思っています

ゲスト
投稿日時: 2012/3/28 19:30
対応状況: −−−
Re: 管理画面のステータス管理の表一覧で、複数商品購入の場合、注文番号と商品番号を取得するためのSQL
取りあえず、「強引だなぁ、、、」と、思いつつ、考え方の一つとして。。。

    // 対応状況一覧の表示
    function lfStatusDisp($status,$pageno){
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        
        // & hideki-s
//        $select ="*";
//        $from = "dtb_order";
//        $where = "del_flg = 0 AND status = ?";
//        $arrval[] = $status;
//        $order = "order_id DESC";
        
        $order = "dtb_order.order_id DESC, order_detail_id";

        $select ="*";
        $from = "dtb_order_detail , dtb_order";
        $where = "dtb_order_detail.order_id = dtb_order.order_id AND del_flg = 0 AND status = ?";
        $arrval[] = $status;
        // hideki-s &
        
        $linemax = $objQuery->count($from, $where, $arrval);
        $this->tpl_linemax = $linemax;

        // ページ送りの処理
        $page_max = ORDER_STATUS_MAX;

        // ページ送りの取得
        $objNavi = new SC_PageNavi_Ex($pageno, $linemax, $page_max, 'fnNaviSearchOnlyPage', NAVI_PMAX);
        $this->tpl_strnavi = $objNavi->strnavi;      // 表示文字列
        $startno = $objNavi->start_row;

        $this->tpl_pageno = $pageno;

        // 取得範囲の指定(開始行番号、行数のセット)
        $objQuery->setLimitOffset($page_max, $startno);

        //表示順序
        $objQuery->setOrder($order);

        //検索結果の取得
        $this->arrStatus = $objQuery->select($select, $from, $where, $arrval);

        // & hideki-s
        $order_id_old = -1;
        for ($i = 0; $i < $linemax; $i++){
            if ($order_id_old != $this->arrStatus[$i][order_id]) {
                $detail_cnt = 1;
                $order_id_old = $this->arrStatus[$i][order_id];
            }
            $this->arrStatus[$i][detail_cnt] = $detail_cnt++;
        }
        // hideki-s &
        
//        var_dump($this->arrStatus);
//        exit;
    }


<td><a href="#" onclick="fnOpenWindow('./disp.php?order_id=<!--{$arrStatus[cnt].order_id}-->','order_disp','800','900'); return false;" ><!--{$arrStatus[cnt].order_id}-->-<!--{$arrStatus[cnt].detail_cnt}--></a></td>


追伸:
select文についは、査読してないです、、、はい。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1644
8
red
1570
9
mcontact
1289
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.