バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > フロント機能 > 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ytanaka
投稿日時: 2014/8/29 20:13
対応状況: −−−
半人前
登録日: 2014/8/29
居住地: 東京
投稿: 23
会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
初めまして。
ytanakaと申します。


商品購入時に生年月日の記入を必須にしたいと思い、
data/class/helper/SC_Helper_Customer.php
の生年月日記入欄に
EXIST_CHECK
を入れたのですが、それから会員登録をしてみたところ、以下のようなエラーメッセージが出てしまいました。

MDB2 Error: no such field
_doQuery: [Error message: Could not execute statement]
[Last executed query: EXECUTE mdb2_statement_mysql_16dedb05095c41ceec464752c08dd0d8071380146c USING @0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22, @23, @24, @25, @26, @27, @28, @29, @30, @31, @32]
[Native code: 1054]
[Native message: Unknown column 'year' in 'field list']

恐らくDB上にyearというカラムがないという意味だと思うのですが、
どのように対処すればよいかわかりません。

どうかご教授いただけませんでしょうか。
よろしくお願いします。

※サーバー環境
EC-CUBE 2.13.0
PHP:PHP 5.4.29
DB:MySQL 5.5.38-log
yuh
投稿日時: 2014/8/29 22:22
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
おそらく、addParamでyearを設定する部分にEXIST_CHECKを入れた際に
array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK')
このように設定せずに
'EXIST_CHECK',array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK')
このような形で設定してしまったのが原因と思われます。

正しくEXIST_CHECKが行われているか確認してください
kuro_r
投稿日時: 2014/8/29 22:26
対応状況: −−−
常連
登録日: 2014/8/7
居住地:
投稿: 32
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
ytanaka様

商品購入時に生年月日の記入を必須にするのであれば
data/class/helper/SC_Helper_Customer.php
の生年月日記入欄に
EXIST_CHECKを入れるだけでは実現できないと思います。

商品購入ということは、受注情報作るということですので、
dtb_order等の受注情報テーブルに対しても考慮が必要です。

data/class/page/shopping内のソース等も見てみてはいかがでしょうか?

上記を考慮済みで、Helper以外のソースも変更されているのであれば、
その内容を詳しく書かれるとよいかと思います。
yuh
投稿日時: 2014/8/29 22:35
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
おそらくaddParamの変数の追加で一つ値がずれて7番目のfalseがずれて''が入った上でデフォルト値であるtrueが通ってinput_dbにデータが登録された上で出力されたデータがdtb_customerに渡っていると思われるので、この場合dtb_orderは関係ないです。
kuro_r
投稿日時: 2014/8/30 9:39
対応状況: −−−
常連
登録日: 2014/8/7
居住地:
投稿: 32
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
ytanaka様

的外れな回答をしてしまったようです。
申し訳ありません。


yuh様

ご解説いただきありがとうございます。
勉強になります。

ytanaka
投稿日時: 2014/8/30 9:47
対応状況: −−−
半人前
登録日: 2014/8/29
居住地: 東京
投稿: 23
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
yuh様、kuro_r様

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

SC_Helper_Customer.php
の変更点としては、

// XXX: year,month,dayはprefix付けないのが今のところ共通
$objFormParam->addParam('年', 'year', 4, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('月', 'month', 2, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('日', 'day', 2, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'));

のように「EXIST_CHECK」を入れました。

また、非会員のお客様にも生年月日を必須にしたいと思い、いくつか書き加えました。
気になった点としては、

/**
* 会員登録編集共通の相関チェック
*
* @param SC_CheckError $objErr SC_CheckError インスタンス
* @param boolean $isAdmin 管理画面チェック時:true
* @return SC_CheckError $objErr エラー情報
*/
public function sfCustomerRegisterErrorCheck(&$objErr, $isAdmin = false)
{
$objErr->doFunc(array('生年月日', 'year', 'month', 'day'), array('CHECK_BIRTHDAY'));
$objErr->doFunc(array('パスワード', 'password', PASSWORD_MIN_LEN, PASSWORD_MAX_LEN) ,array('NUM_RANGE_CHECK'));

if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE) {
if (!$isAdmin) {
$objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', 'email', 'email02') ,array('EQUAL_CHECK'));
}
$objErr->doFunc(array('パスワード', 'パスワード(確認)', 'password', 'password02') ,array('EQUAL_CHECK'));
}

の、

$objErr->doFunc(array('生年月日', 'year', 'month', 'day'), array('CHECK_BIRTHDAY'));

の部分にも一度「EXIST_CHECK」を入れたので(現在は消しました。)、これが関係しているのかなとも思っています。
また、

data/class/pages/shopping/LC_Page_Shopping.php

の中の、

// 複数項目チェック
$objErr->doFunc(array('生年月日', 'year', 'month', 'day'), array('CHECK_BIRTHDAY'));
$objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', 'order_email', 'order_email02'), array('EQUAL_CHECK'));

return $objErr->arrErr;
}

部分の

$objErr->doFunc(array('生年月日', 'year', 'month', 'day'), array('CHECK_BIRTHDAY'));

にも

array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'SPTAB_CHECK','CHECK_BIRTHDAY'))

と入れてみた(現在は削除しました。)のも関係しているのかなとも思っております。


「EXIST_CHECK」の確認以外に、どのようなことを行えばよいでしょうか。

お手数をおかけしますが、何卒よろしくお願いします。
ytanaka
投稿日時: 2014/8/30 11:25
対応状況: −−−
半人前
登録日: 2014/8/29
居住地: 東京
投稿: 23
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
他にも問題が出てきてしまいました・・・

非会員のお客様がお客様情報入力ページで必要事項を打ち込んだ後に、お届け先の指定ページへ移動するボタンを押すと、同じページに戻ってきてしまうようになりました。(お客様情報入力ページ)

どこを修正すればよいでしょうか・・・?
yuh
投稿日時: 2014/8/30 12:05
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
最初のエラーの原因は

$objFormParam->addParam('年', 'year', 4, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('月', 'month', 2, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('日', 'day', 2, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'));

この部分でパラメータの受け渡しで
, '', false
この部分が無いのでDBに必要パラメータとして渡されるのが原因です。

まず一旦デフォルトの状態にもどした方がいいです
その上でSC_Helper_Customer.phpのsfCustomerRegisterParamの中を

        $objFormParam->addParam('年', 'year', 4, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);
        $objFormParam->addParam('月', 'month', 2, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);
        $objFormParam->addParam('日', 'day', 2, 'n', array('EXIST_CHECK','NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false);

下記のように変更します。
LC_Page_Shopping.phpのlfCheckErrorに対して

        $objErr->doFunc(array('年', 'order_year', 4, 'n'), array('EXIST_CHECK'));
        $objErr->doFunc(array('月', 'order_month', 2, 'n'), array('EXIST_CHECK'));
        $objErr->doFunc(array('日', 'order_day', 2, 'n'), array('EXIST_CHECK'));

上記の項目を追加すれば生年月日必須になると思います。
ytanaka
投稿日時: 2014/9/3 10:40
対応状況: −−−
半人前
登録日: 2014/8/29
居住地: 東京
投稿: 23
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
yuh様

返信が遅くなり申しわけありません。
具体的な改善方法をお教え頂き、本当にありがとうございます。

上記の修正を行ってみます。
また随時ご報告致します。
ytanaka
投稿日時: 2014/9/6 10:49
対応状況: −−−
半人前
登録日: 2014/8/29
居住地: 東京
投稿: 23
Re: 会員登録完了画面でエラーが出てしまい、修正方法がわかりません。
yuh様

本当にありがとうございます!
上記、SC_Helper_Customer.phpの修正を行ったところ、会員登録ができるようになりました!
本当に助かりました!
ありがとうございました!

大変申し訳ないのですが、
もう一点お聞きしたいことがあります。
非会員の方がお客様情報の入力を行い、下部の「上記お届け先のみに送る」か「複数のお届け先に送る」ボタンを押しても次のページに進まず、同じページに戻ってしまうのですが、なぜでしょうか?
どこをどのように修正すればよいでしょうか。
ご教授頂ければと思います。

cube/data/Smarty/templates/default/shopping/nonmember_input.tpl



<!--{if $smarty.const.USE_MULTIPLE_SHIPPING !== false}-->
<p class="alignC">この商品を複数のお届け先に送りますか?</p>
<!--{/if}-->
<div class="btn_area">
<ul>
<!--{if $smarty.const.USE_MULTIPLE_SHIPPING !== false}-->
<li>
<input type="image" src="<!--{$TPL_URLPATH}-->img/button/btn_singular.gif" alt="上記のお届け先のみに送る" name="singular" id="singular" />
</li>
<li>
<a href="java script:;" onclick="eccube.setModeAndSubmit('multiple', '', ''); return false">
<img src="<!--{$TPL_URLPATH}-->img/button/btn_multiple.gif" alt="複数のお届け先に送る" />
</a>
</li>
<!--{else}-->
<li>
<input type="image" src="<!--{$TPL_URLPATH}-->img/button/btn_next.gif" alt="次へ" name="singular" id="singular" />
</li>
<!--{/if}-->
</ul>
</div>
</form>
</div>
</div>

このあたりと関係しているのではないかと考えています。

お手数をおかけしますが、何卒よろしくお願いします。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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