バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kanaryo
投稿日時: 2014/3/6 18:43
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 66
会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
会員登録画面へチェックボックスで入力する項目を追加し、
管理画面の会員マスターで表示、マイページからの変更削除も出来るように完了しました。

追加した項目の値はdtb_customerに格納されています。

会員がログイン状態で買い物する時は、追加した項目をdeliv.php画面でも表示させる様にtplには下記の記述を追加しています。

その後payment.php画面を経てconfirm.phpへ遷移するのですが、
confirm.php画面で追加した項目が表示されません。

そのまま買い物を完了させることは出来ますが、
dtb_orderへ値が格納されないため、管理画面の受注管理で表示させることが出来ません。

deliv.tpl側
<!--{if $arrAddr[cnt].tuika == 1}-->赤<!--{/if}-->

confirm.tpl側
<!--{if $arrForm.tuika == 1}-->赤<!--{/if}-->

非会員の状態で買い物する時にも追加した項目ですので、
dtb_orderにはカラムが存在し、非会員の状態で購入すれば値は格納されます。

LC_Page_Shopping_Deliv.phpは何も触っておらず、
どうすればログイン時の買い物でdtb_orderへ値を飛ばすことが出来るのでしょうか?

希望の挙動は下記です。
dtb_customerに格納されているカラム「tuika」の値を、
ログイン時の買い物でconfirm.tpl画面で表示させ、dtb_orderへ格納させたい。

どなたか御教示お願いいたします。

*********************************
EC-CUBEバージョン 2.11.4
PHPバージョン PHP 5.2.17p3
DBバージョン PostgreSQL 9.0.1
yuh
投稿日時: 2014/3/6 22:37
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
一旦dtb_order_tempに値を格納するといいんじゃないかと思います。
dtb_order_tempにそのフィールドを追加して、dtb_customerに値が入っているのであれば、SC_Helper_Purchase.phpのcopyFromCustomerでその値を読み出すように追加してやれば大丈夫と思います。
kanaryo
投稿日時: 2014/3/7 9:27
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 66
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
yuh様

前回のステータスアイコンの際は大変お世話になりました!
この度もアドバイスいただき感謝いたします。m(__)m

dtb_order_tempにtuikaのフィールド追加し、
SC_Helper_Purchase.phpのcopyFromCustomerへ'tuika'を追加記述したところ、
システムエラーが出たのでlogを見たら「order_tuika」が無い、みたいなことが書いていたので、
dtb_order_tempのフィールドをorder_tuikaに変更。

しかし、dtb_order_tempのorder_tuikaに値は入りますが、dtb_orderには値が格納されませんので、
confirm.php画面でも管理画面でも表示されません。

これから以降の作業はどのようにすればよいのでしょうか?
根本を理解していなくて申し訳ございません。

何卒宜しくお願い申し上げます。

*****************************************************
※追記

confirm.php画面で表示されるようになりました。

deliv.tpl記述
<!--{if $arrAddr[cnt].tuika == 1}-->赤<!--{/if}-->

confirm.tpl記述
<!--{if $arrForm.order_tuika == 1}-->赤<!--{/if}-->

上記記述でdeliv.php、confirm.php画面で表示されます。
しかし、管理画面側で表示されません。


yuh
投稿日時: 2014/3/7 10:49
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
dtb_orderにorder_tuikaというフィールドはありますか?

あとできればorder_tuikaのフィールド名をtuikaとかに変更した方がいいかもしれないです。
kanaryo
投稿日時: 2014/3/7 11:14
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 66
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
yuh様

現在はdtb_orderのフィールドにorder_tuikaは無く、tuikaのみです。
非ログイン時はtuikaに格納され、管理画面でもtuikaの値を参照して表示していると思います。

yuh様の最初のアドバイス通り、SC_Helper_Purchase.phpのcopyFromCustomerへ'tuika'記述、
dtb_order_tempへtuikaフィールドを追加すると、買い物時にシステムエラーが出るのです。

それで、dtb_order_tempのtuikaフィールドの名前をorder_tuikaにしたら、
エラーが出ずに買い物は出来るようになりました。

しかしdtb_order_tempに値は入りますがdtb_orderには値が入りません。

現在の状況は下記の通りです。
@非ログイン時
買い物時に申込みフォームへ追加したtuikaの値をdtb_orderへ格納し、管理画面(受注管理)でも表示OK

@ログイン時
買い物をするとdtb_order_tempのorder_tuikaに値が格納され、dtb_orderのtuikaには値が入らず。
管理画面(受注管理)で表示されず。

ゴチャゴチャして申し訳ありませんが、宜しくお願いいたします。
yuh
投稿日時: 2014/3/7 11:27
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
dtb_orderにもorder_tuikaを追加してみてください。
あと、
dtb_order_tempへtuikaフィールドを追加すると、買い物時にシステムエラーが出るのです。

の時のエラーログをお願いします。
kanaryo
投稿日時: 2014/3/7 11:59
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 66
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
yuh様


dtb_order_tempにおいて、
tuikaのフィールド有
order_tuikaのフィールド無し、
の状態で買い物をしますと・・・

2014/01/23 10:30:06 [/virtual/www/eccube/html/test/data/class/SC_Query.php] FATAL Error(256) /virtual/www/eccube/html/test/data/class/SC_Query.php:876 https://www.@@@/test/html/resize_image.php?image=noimage_main_list.jpg&width=80&height=80

USER_AGENT: Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0

SQL: INSERT INTO dtb_order_temp(customer_id,update_date,device_type_id,session,order_name01,order_name02,order_kana01,order_kana02,order_sex,order_zip01,order_zip02,order_pref,order_addr01,order_addr02,order_tuika,order_tel01,order_tel02,order_tel03,order_job,order_birth,order_email,order_temp_id,create_date) VALUES (?,CURRENT_TIMESTAMP,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)

MDB2 Error: no such field

prepare: [Error message: Unable to create prepared statement handle]
[Last executed query: SELECT email FROM dtb_customer WHERE customer_id = $1 ]
[Native message: ERROR: column "order_tuika" of relation "dtb_order_temp" does not exist
LINE 1: ...,order_zip02,order_pref,order_addr01,order_addr02,order_tuik...
^]


/virtual/www/eccube/html/test/html/shopping/deliv.php 34:LC_Page_Shopping_Deliv_Ex->process
/virtual/www/eccube/html/test/data/class_extends/page_extends/shopping/LC_Page_Shopping_Deliv_Ex.php 56:LC_Page_Shopping_Deliv->process
/virtual/www/eccube/html/test/data/class/pages/shopping/LC_Page_Shopping_Deliv.php 59:LC_Page_Shopping_Deliv->action
/virtual/www/eccube/html/test/data/class/pages/shopping/LC_Page_Shopping_Deliv.php 122:LC_Page_Shopping_Deliv->registerDeliv
/virtual/www/eccube/html/test/data/class/pages/shopping/LC_Page_Shopping_Deliv.php 203:SC_Helper_Purchase->saveOrderTemp
/virtual/www/eccube/html/test/data/class/helper/SC_Helper_Purchase.php 284:SC_Query->insert
/virtual/www/eccube/html/test/data/class/SC_Query.php 484:SC_Query->query
/virtual/www/eccube/html/test/data/class/SC_Query.php 736:SC_Query->prepare
/virtual/www/eccube/html/test/data/class/SC_Query.php 873:MDB2_Driver_pgsql->prepare
/virtual/www/eccube/html/test/data/module/MDB2/Driver/pgsql.php 967:MDB2_Driver_Common->raiseError
/virtual/www/eccube/html/test/data/module/MDB2.php 1497:PEAR->raiseError
/virtual/www/eccube/html/test/data/module/PEAR.php 557:MDB2_Error->MDB2_Error
/virtual/www/eccube/html/test/data/module/MDB2.php 1009:PEAR_Error->PEAR_Error

というようなエラーが出たため、dtb_order_tempへtuikaフィールドに加えて
order_tuikaを追加したところシステムエラーは無くなりました。

そのうえで、先ほどdtb_orderにもorder_tuikaフィールドを追加すると、
ログイン時の買い物はorder_tuikaへ値が入るようになりました。

この状態ですと、非ログイン時はtuikaフィールドへ値が入り、
ログイン時はorder_tuikaへ値が入るようになるのですが・・・。

別件のエラーもあるようですが無視して下さい(~_~;)
よろしくお願いします。
yuh
投稿日時: 2014/3/7 13:53
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
多分
dtb_order,dtb_order_temp両方にtuikaフィールドを追加するか、
dtb_order,dtb_order_temp両方にorder_tuikaフィールドを追加するかのどちらかに合わせた方がいいと思います。

dtb_order,dtb_order_temp両方にtuikaフィールドを追加する場合、
ログイン時の配送先もしくは支払方法の部分に入力フィールドを追加して、会員情報からそのフィールドにデータを入れる感じで、

dtb_order,dtb_order_temp両方にorder_tuikaフィールドを追加する場合、tuikaという名前をorder_tuikaに変更して、パラメータをorder_tempに保存できるようにする感じです。

現状仕様がログイン時と非ログイン時で別れている為、どちらかに合わせた方がいいと思います。

手っ取り早いのは両方admin/order/edit.phpに表示させてしまうのが簡単と思いますが。


kanaryo
投稿日時: 2014/3/7 14:32
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 66
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
yuh様

dtb_order、dtb_order_temp両方をtuikaフィールド名で統一し、
ログイン時に買い物を試みましたが、deliv.php画面から次の画面へ遷移する時点でシステムエラーになりました。

ログは先ほどと同じだと思いますが一応下記の通りです。
SQL: INSERT INTO dtb_order_temp(customer_id,update_date,device_type_id,session,order_name01,order_name02,order_kana01,order_kana02,order_sex,order_zip01,order_zip02,order_pref,order_addr01,order_addr02,order_tuika,order_tel01,order_tel02,order_tel03,order_job,order_birth,order_email,order_temp_id,create_date) VALUES (?,CURRENT_TIMESTAMP,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)

MDB2 Error: no such field

prepare: [Error message: Unable to create prepared statement handle]
[Last executed query: SELECT email FROM dtb_customer WHERE customer_id = $1 ]
[Native message: ERROR: column "order_tuika" of relation "dtb_order_temp" does not exist
LINE 1: ...,order_zip02,order_pref,order_addr01,order_addr02,order_tuik...

※SC_Helper_Purchase.phpのcopyFromCustomerには 'tuika' を追記しています。

※deliv.tplには<!--{if $arrAddr[cnt].tuika == 1}-->赤<!--{/if}-->
で記述しているので、/@@@/deliv.php画面ではdtb_customerに値があれば表示されます。

お手数ですが、よろしくお願いいたします。
yuh
投稿日時: 2014/3/7 15:12
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 会員登録画面で追加した項目を、買い物時にdtb_orderへ格納させたい
copyFromCustomerに追加した部分を削除して、
SC_Helper_Purchase.phpのsaveOrderTempの
$objQuery->update('dtb_order_temp', $sqlval, 'order_temp_id = ?', array($uniqId));

の部分を

			if(!is_null($objCustomer) AND is_object($objCustomer)){
				$sqlval['tuika'] =  $objCustomer->getValue('tuika');
			}
            $objQuery->update('dtb_order_temp', $sqlval, 'order_temp_id = ?', array($uniqId));

に変更でどうでしょうか?

家に帰ったら仮で構築して作れるんですが、今の所は多分こんな感じでとしか答えられずすみません。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.