バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > カートセッションの情報をデータベースに保存したい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
bakusan
投稿日時: 2013/12/16 16:57
対応状況: −−−
常連
登録日: 2013/11/22
居住地:
投稿: 36
カートセッションの情報をデータベースに保存したい
いつもお世話になっております。ECCUBE初心者です。


商品のお申し込み画面で、確認画面まで保持しているセッションの情報をデータベースに保存したいのですが、その方法がわかりません・・。

LC_Page_Shopping_Payment.phpとLC_Page_Shopping_Confirm.phpを見たのですが、それらしいところが見つけられず、詰まってしまいました。

どのファイルを触ればいいのか、またどの部分を触ればいいのか、具体的に教えていただけると助かります。

お手数をおかけいたしますが、お返事よろしくお願いいたします。


EC-CUBEバージョン 2.12.5
PHPバージョン PHP 5.4.8
DBバージョン PostgreSQL 9.2.4
raku2cube
投稿日時: 2013/12/16 18:37
対応状況: −−−
半人前
登録日: 2013/10/3
居住地: 福井県福井市二の宮2丁目28-38
投稿: 24
Re: カートセッションの情報をデータベースに保存したい
カートセッションってSC_CartSession::cartSessionで認識合ってます?


----------------
株式会社 ネットショップ支援室

ネットショップ支援室
EC-CUBEカスタマイズ
楽楽CUBE

bakusan
投稿日時: 2013/12/16 20:16
対応状況: −−−
常連
登録日: 2013/11/22
居住地:
投稿: 36
Re: カートセッションの情報をデータベースに保存したい
SC_CartSession様


お返事ありがとうございます。

はい、その認識で間違いない・・と思います。
(すいません、当方あまり詳しくないもので、こういった返事しかできませんが・・・SC_CartSessionで設定している内容であることは間違いないです。)
tsuji
投稿日時: 2013/12/17 9:14
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: カートセッションの情報をデータベースに保存したい
LC_Page_Shopping_Payment.phpであれば、lfRegistData関数で登録処理を行っています。

LC_Page_Shopping_Confirm.phpであれば、action関数の下記の部分です。
引用:

case 'confirm':
/*
* 決済モジュールで必要なため, 受注番号を取得
*/
$this->arrForm['order_id'] = $objPurchase->getNextOrderID();
$_SESSION['order_id'] = $this->arrForm['order_id'];

// 集計結果を受注一時テーブルに反映
$objPurchase->saveOrderTemp($this->tpl_uniqid, $this->arrForm,
$objCustomer);

// 正常に登録されたことを記録しておく
$objSiteSess->setRegistFlag();

// 決済モジュールを使用する場合
if ($this->use_module) {
$objPurchase->completeOrder(ORDER_PENDING);


SC_Response_Ex::sendRedirect(SHOPPING_MODULE_URLPATH);
}
// 購入完了ページ
else {
$objPurchase->completeOrder(ORDER_NEW);
$template_id = SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE ? 2 : 1;
$objHelperMail->sfSendOrderMail(
$this->arrForm['order_id'],
$template_id);

SC_Response_Ex::sendRedirect(SHOPPING_COMPLETE_URLPATH);
}
SC_Response_Ex::actionExit();
break;
default:



LC_Page_Shopping_Payment.phpとLC_Page_Shopping_Confirm.phpのどちらも、SC_Helper_Purchase.phpの処理を呼び出して登録処理を行っています。

bakusan
投稿日時: 2013/12/17 14:17
対応状況: −−−
常連
登録日: 2013/11/22
居住地:
投稿: 36
Re: カートセッションの情報をデータベースに保存したい
tsuji様


お返事ありがとうございます。
大変勉強になりました。

最後に1点、確認させていただきたいのですが、

引用:

LC_Page_Shopping_Payment.phpであれば、lfRegistData関数で登録処理を行っています。

LC_Page_Shopping_Confirm.phpであれば、action関数の下記の部分です。

LC_Page_Shopping_Payment.phpとLC_Page_Shopping_Confirm.phpのどちらも、SC_Helper_Purchase.phpの処理を呼び出して登録処理を行っています。


と、ここで3つのファイル名がでてくるのですが、実際にデータベースに追加で情報を登録をしようと考えた場合、3つのファイルとも触る必要あるでしょうか?

LC_Page_Shopping_Confirm.phpのソースを確認して、order_idを参考に見てみると

・$_SESSION['order_id'] = $this->arrForm['order_id'];
・$this->arrForm['order_id'],

の部分をそれぞれ追加してorder_id部分を変更していけばいけないかな・・と思っていますがどうでしょうか。

お手数ですがご指導をお願いできれば助かります。
よろしくお願いいたします。
tsuji
投稿日時: 2013/12/17 14:43
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: カートセッションの情報をデータベースに保存したい
>ここで3つのファイル名がでてくるのですが、実際にデータベースに追加で情報を登録をしようと考えた場合、3つのファイルとも触る必要あるでしょうか?

修正内容によっては3つのファイルとも修正する必要があります。修正する必要があるかどうかはご判断いただければと思います。

引用:

・$_SESSION['order_id'] = $this->arrForm['order_id'];
・$this->arrForm['order_id'],

の部分をそれぞれ追加してorder_id部分を変更していけばいけないかな・・と思っていますがどうでしょうか。

具体的な修正については、私の方では判断のしようがありませんので、bakusan様の方でご判断いただければと思います。
bakusan
投稿日時: 2013/12/17 14:49
対応状況: −−−
常連
登録日: 2013/11/22
居住地:
投稿: 36
Re: カートセッションの情報をデータベースに保存したい
すいません、自レスです。

受注一時テーブルというものがあって、そこからdtb_order_detailに登録しているんですね・・・。

しっかりみていませんでした。すいません。
自分なりに見てみた結果なんですが、

・LC_page_Shopping_Payment.php
→お支払い方法やポイント等のフォームの入力内容を受注一時テーブルへ登録

・LC_page_Shopping_Confirm.php
→顧客情報等?フォームの入力内容を一時テーブルへ登録

・SC_Helper_Purchase.php
→一時テーブルの内容を読み出してdtb_orderやdtb_order_detailに登録

という流れでいいでしょうか?

tsuji
投稿日時: 2013/12/17 14:58
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: カートセッションの情報をデータベースに保存したい
流れはだいたい合っているのではないかと思います。見落としがあった場合はご容赦ください。

また、追加ですが、SC_Helper_Purchase.phpでは一時テーブルの内容のみならず、カートセッションの情報を登録しています。
bakusan
投稿日時: 2013/12/17 15:01
対応状況: −−−
常連
登録日: 2013/11/22
居住地:
投稿: 36
Re: カートセッションの情報をデータベースに保存したい
tsuji様

何度もお返事いただきありがとうございました。
後はこちらでいろいろ試してみます。

大変助かりました!
bakusan
投稿日時: 2013/12/17 22:21
対応状況: −−−
常連
登録日: 2013/11/22
居住地:
投稿: 36
Re: カートセッションの情報をデータベースに保存したい
上の登校の続きです。

あれからいろいろ試したのですが、表示されず・・・。
どこが足りないかわかる方がいれば教えていただけないでしょうか。

▼dtb_order_detailに追加したいセッション情報
'ini_field''kinds_field''wrapping_field'

▼作業したこと
・dtb_order_tempテーブルのsessionカラムに上記の情報が登録されていることを確認

・以下のファイルの//★新規追加を追加(文章が長くなるので、コメントで重要なところのみ残してあとは削ってます)

■SC_Helper_Purchase.php

* 受注登録を完了する.

$this->registerOrder($orderParams['order_id'], $orderParams);

// 詳細情報を取得
$cartItems = $objCartSession->getCartList($cartKey);

// 詳細情報を生成
$objProduct = new SC_Product_Ex();
$i = 0;
$arrDetail = array();
foreach ($cartItems as $item) {
//★新規追加
$arrDetail[$i]['ini_field'] = $item['ini_field'];
$arrDetail[$i]['kinds_field'] = $item['kinds_field'];
$arrDetail[$i]['wrapping_field'] = $item['wrapping_field'];

■LC_Page_Shopping_payment.php

* 受注一時テーブルへ登録を行う.
*/
function lfRegistData($uniqid, $arrForm, &$objPurchase, $arrPayment) {

//★新規追加
$arrForm['ini_field'] = $ini_field;
$arrForm['kinds_field'] = $kinds_field;
$arrForm['wrapping_field'] = $wrapping_field;

■LC_Page_Shopping_Confirm
修正なし


知識不足で何度も質問して申し訳ないです。
お力添えよろしくお願いいたします。
(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,987名です
総投稿数は110,019件です

投稿数ランキング

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