質問 > フロント機能 > 注文履歴一覧に商品名を表示すると商品数=注文件数になる |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
himajin |
投稿日時: 2017/5/16 17:17
対応状況: 解決済
|
新米 登録日: 2017/5/16 居住地: 投稿: 4 |
注文履歴一覧に商品名を表示すると商品数=注文件数になる ▼テンプレート
[EC-CUBE]2.13 [レンタルサーバ]GMO iclusta [OS] win10 [PHP] 5.6 [データベース] Mysql [ブラウザ]firefox [導入プラグインの有無]なし [カスタマイズの有無] あり いつもお世話になっております。 ECCUBE初心者です。 MYページの注文履歴一覧のお届け先を商品名に変更しましたが、 1つの受注で2つ以上の商品の購入がある時に商品ひとつひとつが表示され、 注文履歴も商品数分になってしまいました。 例えば、購入件数自体は1なのに、商品数が2つあると、 「2件の購入履歴があります。」と表示されてしまいます。 金額も注文の合計金額が商品の件数分表示されます。 注文(order_id)別でまとめて表示させたいですが、何か良い方法はないでしょうか。 ご教授いただければ幸いです。 |
468 |
投稿日時: 2017/5/17 8:32
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる function lfGetOrderHistory()の中で処理されているSQLに
dtb_order_detailテーブルをJOINで追加されたのでしょうか? JOINした場合、SQLの結果行数がdtb_order_detailの件数になってしまい、 合計金額や件数など修正が必要な箇所が多いと思いますので、 JOINするよりは、 dtb_orderのSELECTした結果をループさせて、 ループ内でdtb_order_detailの内容を取得するSQLを発行したほうが既存部分は変更する必要が無く、 受注明細部分を追記するだけとなりますので、実装が楽ではないかと思います。 (DB接続が複数発生するので、あまり効率の良い方法ではありませんが) LC_Page_Mypage.php function action()内
index.tpl 購入履歴のループ内
コードはあくまでイメージですので、実際はもっと記述が増えると思いますが・・・。
|
yuh |
投稿日時: 2017/5/17 12:18
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1818 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる その場合はdtb_order_detailをGROUP CONCAT で商品名:数量(改行)でまとめて1つの項目として取得すると楽に表示させることができますよ。
|
himajin |
投稿日時: 2017/5/17 15:29
対応状況: −−−
|
新米 登録日: 2017/5/16 居住地: 投稿: 4 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる ありがとうございます!
GROUP CONCATをネットで調べ、以下のテストをしてみた結果、間違いなくこれで大丈夫だと思います。 ただし、これをページで実行させる方法がわかりません… どうか助けてください。
|
468 |
投稿日時: 2017/5/17 22:31
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる /data/class/pages/mypage/LC_Page_Mypage.php 118行目付近の
function lfGetOrderHistory()にSQLを実行する記述がありますので、 これを変更すれば良いのではないでしょうか? ただ、ここの記述にgroup byをセットする記述が無いので、 $objQuery->setOrder($order); の次の行あたりに $objQuery->setGroupBy('od.order_id'); を追記する必要があると思います。 >yuhさん GROUP_CONCAT()は初めて知りました。 便利な関数があるのですね。 いつも2つSQLを書いていたので勉強になりました。
|
yuh |
投稿日時: 2017/5/23 0:52
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1818 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる lfGetOrderHistoryの
の変わりに
こんな感じで書けばいけるんじゃないですか? テストしてないんで動作はわかりませんが。 その処理の先にCOUNTしてる部分とかあるんで、その下に別にクエリを書いて処理を追加する感じです。 COUNT部分もSQL_CALC_FOUND_ROWS使って置き換えたい所ですが。
|
himajin |
投稿日時: 2017/6/1 17:29
対応状況: −−−
|
新米 登録日: 2017/5/16 居住地: 投稿: 4 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる ありがとうございます!
心より感謝いたします。 色んな方法でやってみましたが、「システムエラーが発生しました。」です… デフォルトに戻してテストしても動きません…
申し訳ありませんが、どうかご指導お願いします。 |
yuh |
投稿日時: 2017/6/2 12:45
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1818 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる
LIMIT とOFFSETが抜けてました^^;
|
himajin |
投稿日時: 2017/6/5 11:45
対応状況: 解決済
|
新米 登録日: 2017/5/16 居住地: 投稿: 4 |
Re: 注文履歴一覧に商品名を表示すると商品数=注文件数になる お見事です!!!
GROUP_CONCAT(product_name separator "\n" ) をそのまま入れるとエラーが発生し、separator "\n"を外すと”、”で分離され、グループ化されました。 ありがとうございます!!!! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |