バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > 管理機能 > 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
MPV
投稿日時: 2011/6/27 15:19
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
稼働環境
[EC-CUBE] 2.11.1 正式版
[レンタルサーバ] WADAX
[OS] Red Hat Linux
[PHP] PHP 5.1.6
[データベース] MySQL 5.0.77
[WEBサーバ] apache
[ブラウザ] Firefox 4.0 Google Chrome IE9

開発環境
[EC-CUBE] 2.11.1 正式版
[レンタルサーバ] なし(開発用のXAMPP 1.7.4)
[OS] Windows7 Professional
[PHP] PHP 5.3.5
[データベース] MySQL 5.0.7
[WEBサーバ] apache 2.2.17
[ブラウザ] Firefox 4.0

以下の別スレッドでご相談をさせて頂いたりしていたのですが
要因が違うようですので、新たにスレッドを立てさせて頂きました。
【受注管理からの商品の追加】
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=8250&forum=9&post_id=40131#forumpost40131

【商品の規格を再登録すると購入履歴詳細に商品情報が表示されなくなる】
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=8119&forum=9

事象は以下の通りです。

1)規格を2つ持つ商品を注文する
  受注管理画面→編集から受注内容の詳細を確認する
   → 受注した商品の規格は正常に表示されている

2)正常に商品が見える状態から別途、規格のない商品の追加を行う
   → 規格のない商品、規格の2つある商品ともに正常に表示されている

3)追加後に、規格を2つ持つ商品を削除する
   → 規格のない商品だけが正常に表示されている

4)削除後に再度、規格を2つ持つ商品を追加する
   → 商品は追加されるが、本来規格がない商品の方に、
     規格の2つある商品の規格内容が表示されてしまう

     一方、規格が2つある商品の規格は表示されずに
     ”なし”になってしまいます

他の項目については、2行目に追加されているにも関わらず
なぜか規格1、規格2のみ1行目を更新してしまいます。

追記)確認を進めましたところ、規格がある商品が追加される場合に
   事象が発生するようです。(変更の場合は大丈夫のようですが、
   商品が1件しかない場合に変更を押して規格のある商品を選択すると
   なぜか商品が追加されてしまい、同事象が発生します。)

別スレッドで、もしかすると
data/Smarty/templates/admin/order/product_select.tplに
原因があるのではないかというお話も出たのですが、
まだ原因がわかっておりません。

もし、同様の事象のご対応をされました方や
ご存知の方がいらっしゃいましたら、ご教授頂ければ
幸いです。

何卒よろしくお願いいたします。<(_ _)>
MPV
投稿日時: 2011/6/30 10:25
対応状況: 解決済
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
自己レスになります。

解決いたしました。

皆様より特にレスがなかったので
もしかして環境依存ではと思い、
別の開発環境において、インストール直後の
まっさらな状態で確認したところ、
再現しませんでした。

そこで、本日稼働環境でも確認したのですが
やはり再現せず、当方の環境のせいのようでした。
大変お騒がせいたしました。

スレ汚しとなってしまいまして
申し訳ございませんでした。<(_ _)>
taji
投稿日時: 2011/7/1 11:18
対応状況: −−−
半人前
登録日: 2011/5/30
居住地:
投稿: 20
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
MPV様

MPV様が提示された内容の手順で確認した所、私の環境で再現しました。
また、環境により再現されなかったとの事なので、
別の環境で試した所、再現しなかったです。

環境の違いで影響がありそうな所だと、PHPのバージョンあたりが怪しい感じがします。

・再現した環境
EC-CUBE:2.11.1
OS:Debian GNU/Linux 6.0.1(squeeze)
PHP:5.3.3-7+squeeze1
PostgreSQL:9.0.3
ブラウザ:FireFox5.0, IE8

・再現しなかった環境
EC-CUBE:2.11.1
OS:Debian GNU/Linux 5.0.4(lenny)
PHP:5.2.6-1+lenny9
PostgreSQL:8.4.3
ブラウザ:FireFox5.0, IE8

※どちらの環境でもEC-CUBEはクリーンインストール直後の状態で確認。

レスが遅くてすみません。
taji
投稿日時: 2011/7/1 15:02
対応状況: −−−
半人前
登録日: 2011/5/30
居住地:
投稿: 20
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
自己レスです。
ご存じの方、アドバイス頂けると助かります。

・結果概要
LC_Page_Admin_Order_Edit.php:755行目
$arrValues = $objFormParam->getValue($key);
の$arrValuesの値がPHP5.3.3とPHP5.2.6で異なっていました。

それはPHPのバージョンによって、
SC_FormParamClassのgetValueメソッド内で呼ばれている
SC_Utils::isBlankの結果が異なる事で起きる事がわかりました。
PHP5.3.3の結果:true
PHP5.2.6の結果:false

・質問
(1)
どちらのバージョンでの結果が意図した動作結果なのでしょうか。
(2)
SC_FormParamClass->getValue()[SC_FormParam.php:417行目]処理内のSC_Utils_Ex::isBlankチェックを、
キー名と一致したかのチェックに変更したら何か不具合が起こり得るでしょうか。

・検証に使ったサンプルコード
<?php
include("SC_Utils.php");
$array[0] = "";
$ret = SC_Utils::isBlank($array);
var_dump($ret);
?>

・検証結果
[PHP 5.3.3]
# php -v
PHP 5.3.3-7+squeeze1 with Suhosin-Patch (cli) (built: Mar 18 2011 17:22:52)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

# php sample.php
PHP Warning: trim() expects parameter 1 to be string, array given in /var/www/default/data/class/util/SC_Utils.php on line 2064
bool(true)

[PHP 5.2.6]
# php -v
PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010 03:25:57)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

# php sample.php
bool(false)

よろしくお願い致します。
nanasess
投稿日時: 2011/7/1 15:36
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
引用:

tajiさんは書きました:

(1)
どちらのバージョンでの結果が意図した動作結果なのでしょうか。


空の配列は true を返すのが正しいです.
ちなみに, 以下の環境では Warning は発生しませんでした

$ php --version
PHP 5.3.6 (cli) (built: May 10 2011 14:02:18)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
Mac OS X 10.6.8

引用:

(2)
SC_FormParamClass->getValue()[SC_FormParam.php:417行目]処理内のSC_Utils_Ex::isBlankチェックを、
キー名と一致したかのチェックに変更したら何か不具合が起こり得るでしょうか。


「キー名に紐づく値が空の場合は $default の値を返す」というコードなのですが, 「キー名と一致したか」というチェックに変更する意図をご教示くださいますでしょうか.

PHP5.3 未満で, 空の配列を渡した際に, false を返してしまう不具合は, 以下で修正した記憶があります.

http://svn.ec-cube.net/open_trac/changeset/19895

SC_Utils::isBlank() の, どのあたりで false を返しているか, おわかりになりますでしょうか?
taji
投稿日時: 2011/7/1 16:17
対応状況: −−−
半人前
登録日: 2011/5/30
居住地:
投稿: 20
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
nanasess様

引用:
SC_Utils::isBlank() の, どのあたりで false を返しているか, おわかりになりますでしょうか?

PHP 5.2.6ですとSC_Utilsの2066行目でfalseが返ってきます。

2065: if (strlen($val) > 0) {
2066: return false;
2067: }

falseが返る直前の$valは下記値が入っていました
string(5) "Array"
「※2066行目の直前にvar_dump($val);を入れて出力された結果。」

引用:
「キー名に紐づく値が空の場合は $default の値を返す」というコードなのですが, 「キー名と一致したか」というチェックに変更する意図をご教示くださいますでしょうか.

よく考えてみたらちょっと見当違いでした。
nanasess
投稿日時: 2011/7/1 16:27
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
引用:

tajiさんは書きました:

falseが返る直前の$valは下記値が入っていました
string(5) "Array"
「※2066行目の直前にvar_dump($val);を入れて出力された結果。」


どの時点で, 空の配列が "Array" という文字列に変化してしまっているか, わかりますでしょうか?

また, 2041行目の is_array($val) は false を返しているのでしょうか?
taji
投稿日時: 2011/7/1 16:59
対応状況: −−−
半人前
登録日: 2011/5/30
居住地:
投稿: 20
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
引用:
どの時点で, 空の配列が "Array" という文字列に変化してしまっているか, わかりますでしょうか?


この処理の後に変化してしまいます。
Line2065: $val = trim($val);

trim前:
array(1) {
[0]=>
string(0) ""
}

trim:後
string(5) "Array"

引用:
また, 2041行目の is_array($val) は false を返しているのでしょうか?


2041行目の前に「var_dump(is_array($val));」を入れて出力した所下記結果となりました。
bool(true)
bool(false)
bool(false)

falseが返る直前の結果は、「bool(false)」となっていました。
MPV
投稿日時: 2011/7/1 21:44
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
taji様

お返事頂きましてありがとうございます。

nanasess様

いつもお世話になっております。
ありがとうございます。

taji様のご提起内容を拝見しまして
(別の開発環境についての記載を
忘れていたこともありまして)
再度、自分の確認した環境について
以下に記載いたします。

稼働環境
[EC-CUBE] 2.11.1 正式版
[レンタルサーバ] WADAX
[OS] Red Hat Linux
[PHP] PHP 5.1.6
[データベース] MySQL 5.0.77
[WEBサーバ] apache
[ブラウザ] Firefox 5.0 Google Chrome IE9

開発環境その1
[EC-CUBE] 2.11.1 正式版
[レンタルサーバ] なし(開発用のXAMPP 1.7.4)
[OS] Windows7 Professional
[PHP] PHP 5.3.5
[データベース] MySQL 5.0.7
[WEBサーバ] apache 2.2.17
[ブラウザ] Firefox 5.0

開発環境その2
[EC-CUBE] 2.11.1 正式版
[レンタルサーバ] なし(開発用のWebmatrix)
[OS] Windows7 Professional
[PHP] PHP 5.2.17
[データベース] MySQL 5.1.57-community
[WEBサーバ] Microsoft-IIS/7.5
[ブラウザ] Firefox 5.0

稼働環境、開発環境その2では起こらず、
開発環境その1でのみ事象が再現いたしますので
taji様のご提起内容と合致しているように
思われます。

お役に立たない情報かもしれませんが・・・、
一応ご報告させて頂きます。
nanasess
投稿日時: 2011/7/1 22:25
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
引用:

tajiさんは書きました:

trim前:
array(1) {
[0]=>
string(0) ""
}



もしかして, PHP5.2.x では 2046行目の foreach に, 上記の配列が入らないんでしょうか?
(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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