バグ報告 > 管理機能 > 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
taji |
投稿日時: 2011/7/1 23:12
対応状況: −−−
|
半人前 登録日: 2011/5/30 居住地: 投稿: 20 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない 引用:
もしかして, PHP5.2.x では 2046行目の foreach に, 上記の配列が入らないんでしょうか? foreachの直後に下記コードを埋め込み確認しました。 foreach ($val as $in) { var_dump($val); var_dump($in); 実行すると array(1) { [0]=> string(0) "" } string(0) "" となり、foreachに配列は入っているみたいです。 ただ、その次の処理 if (!SC_Utils::isBlank($in, $greedy)) { の条件がtrueにならないので、$valに配列が入ったまま次の処理が実行されます。 どうもバージョンによって処理の結果が異なっているのは、 trimの振る舞いが異なっているのが原因のようです。 サンプルコード test.php <?php $array[0] = ""; $val = trim($array); var_dump($val); ?> ・結果 PHP 5.2.6で実行 #php test.php string(5) "Array" PHP 5.3.3で実行 #php test.php PHP Warning: trim() expects parameter 1 to be string, array given in /var/www/default8085/data/class/test.php on line 3 NULL |
MPV |
投稿日時: 2011/7/1 23:38
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない nanasess様
以下の確認を行いました。 PHP 5.2.17 function isBlank($val, $greedy = true) { if (is_array($val)) { if ($greedy) { if (empty($val)) { return true; } var_dump($val); ← ここに入れました foreach ($val as $in) { /* * SC_Utils_Ex への再帰は無限ループやメモリリークの懸念 * 自クラスへ再帰する. */ 実行内容は以下の通りです。 1)アイス バニラ Lを受注した状態の受注データに対して 2)変更ボタンを押してお鍋を追加 3)アイス バニラ Lを削除 4)変更ボタンを押してアイス 抹茶 Mを追加 結果の表示 2)実行時 array(1) { [0]=> string(2) "29" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(2) "29" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(2) "10" } array(1) { [0]=> string(6) "ice-09" } array(1) { [0]=> string(21) "アイスクリーム" } array(1) { [0]=> string(9) "バニラ" } array(1) { [0]=> string(1) "L" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(3) "933" } array(1) { [0]=> array(13) { ["class_combination_id"]=> string(2) "53" ["classcategory_id"]=> string(1) "1" ["parent_class_combination_id"]=> NULL ["level"]=> string(1) "1" ["classcategory_name"]=> string(9) "バニラ" ["rank"]=> string(1) "1" ["class_name"]=> string(3) "味" ["class_id"]=> string(1) "1" ["product_id"]=> string(1) "1" ["class_id1"]=> string(1) "1" ["class_name1"]=> string(3) "味" ["classcategory_name1"]=> string(9) "バニラ" ["classcategory_id1"]=> string(1) "1" } } array(13) { ["class_combination_id"]=> string(2) "53" ["classcategory_id"]=> string(1) "1" ["parent_class_combination_id"]=> NULL ["level"]=> string(1) "1" ["classcategory_name"]=> string(9) "バニラ" ["rank"]=> string(1) "1" ["class_name"]=> string(3) "味" ["class_id"]=> string(1) "1" ["product_id"]=> string(1) "1" ["class_id1"]=> string(1) "1" ["class_name1"]=> string(3) "味" ["classcategory_name1"]=> string(9) "バニラ" ["classcategory_id1"]=> string(1) "1" } 3)実行時 array(2) { [0]=> string(1) "1" [1]=> string(1) "2" } array(2) { [0]=> string(2) "29" [1]=> string(2) "10" } array(2) { [0]=> string(1) "1" [1]=> string(1) "1" } array(2) { [0]=> string(2) "10" [1]=> string(2) "10" } array(2) { [0]=> string(6) "ice-09" [1]=> string(7) "nabe-01" } array(2) { [0]=> string(21) "アイスクリーム" [1]=> string(9) "おなべ" } array(2) { [0]=> string(9) "バニラ" [1]=> string(0) "" } array(2) { [0]=> string(1) "L" [1]=> string(0) "" } array(2) { [0]=> string(1) "1" [1]=> string(1) "1" } array(2) { [0]=> string(3) "933" [1]=> string(4) "1650" } 4)実行時 array(1) { [0]=> string(2) "10" } array(1) { [0]=> array(13) { ["class_combination_id"]=> string(2) "39" ["classcategory_id"]=> string(1) "3" ["parent_class_combination_id"]=> NULL ["level"]=> string(1) "1" ["classcategory_name"]=> string(6) "抹茶" ["rank"]=> string(1) "3" ["class_name"]=> string(3) "味" ["class_id"]=> string(1) "1" ["product_id"]=> string(1) "1" ["class_id1"]=> string(1) "1" ["class_name1"]=> string(3) "味" ["classcategory_name1"]=> string(6) "抹茶" ["classcategory_id1"]=> string(1) "3" } } array(13) { ["class_combination_id"]=> string(2) "39" ["classcategory_id"]=> string(1) "3" ["parent_class_combination_id"]=> NULL ["level"]=> string(1) "1" ["classcategory_name"]=> string(6) "抹茶" ["rank"]=> string(1) "3" ["class_name"]=> string(3) "味" ["class_id"]=> string(1) "1" ["product_id"]=> string(1) "1" ["class_id1"]=> string(1) "1" ["class_name1"]=> string(3) "味" ["classcategory_name1"]=> string(6) "抹茶" ["classcategory_id1"]=> string(1) "3" } array(1) { [0]=> string(1) "2" } array(1) { [0]=> string(2) "10" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(2) "10" } array(1) { [0]=> string(7) "nabe-01" } array(1) { [0]=> string(9) "おなべ" } array(1) { [0]=> string(0) "" } array(1) { [0]=> string(0) "" } array(1) { [0]=> string(1) "1" } array(1) { [0]=> string(4) "1650" } array(1) { [0]=> array(13) { ["class_combination_id"]=> string(2) "39" ["classcategory_id"]=> string(1) "3" ["parent_class_combination_id"]=> NULL ["level"]=> string(1) "1" ["classcategory_name"]=> string(6) "抹茶" ["rank"]=> string(1) "3" ["class_name"]=> string(3) "味" ["class_id"]=> string(1) "1" ["product_id"]=> string(1) "1" ["class_id1"]=> string(1) "1" ["class_name1"]=> string(3) "味" ["classcategory_name1"]=> string(6) "抹茶" ["classcategory_id1"]=> string(1) "3" } } array(13) { ["class_combination_id"]=> string(2) "39" ["classcategory_id"]=> string(1) "3" ["parent_class_combination_id"]=> NULL ["level"]=> string(1) "1" ["classcategory_name"]=> string(6) "抹茶" ["rank"]=> string(1) "3" ["class_name"]=> string(3) "味" ["class_id"]=> string(1) "1" ["product_id"]=> string(1) "1" ["class_id1"]=> string(1) "1" ["class_name1"]=> string(3) "味" ["classcategory_name1"]=> string(6) "抹茶" ["classcategory_id1"]=> string(1) "3" } というわけで、PHP 5.2.17では(当方の環境では)入っております。 事象が発生しました環境(PHP 5.3.5)は就業先なので明日確認しようと思います。 失礼いたしました。<(_ _)> |
MPV |
投稿日時: 2011/7/1 23:43
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない すみません、今見たら、もうtaji様が回答済みでした。
しかも確認場所が違っているみたいで、お恥ずかしい限りです・・・。 |
nanasess |
投稿日時: 2011/7/2 2:01
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない taji 様, MPV 様
ありがとうございます.
配列が is_array() をすりぬけてしまっているのが問題なので... 追記: ごめんなさい, これだとダメですね(汗) |
nanasess |
投稿日時: 2011/7/2 2:06
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない 配列にも対応した trim の wrapper を書いてやるのが一番良いかも
|
MPV |
投稿日時: 2011/7/4 16:00
対応状況: −−−
|
仙人 登録日: 2011/3/27 居住地: 投稿: 309 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない nanasess様
お世話になります。 引用: 配列にも対応した trim の wrapper を書いてやるのが一番良いかも というご回答でしたので、的外れかもしれませんが 確認してみました。 trimを行うfunction(trim_val)を追加して、 SC_Utils.phpのisBlank関数内にあります $val = trim($val); のところで、 array_walk($val, "trim_val"); で配列にも対応できるのではないかと思ったのですが ダメでした・・・。 あと、$valがArrayの場合、 if (strlen($val) > 0) は、よろしくないというのを別のHPで見かけたので、 if (!empty($val)) にしてみたりしたのですが、うまくいきませんでした・・・。 お忙しいところ大変恐縮ですが、再度ご教授頂ければ幸いです。 どうぞよろしくお願いいたします。 |
nanasess |
投稿日時: 2011/7/4 19:12
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない MPV 様
混乱させてしまって申し訳ないです^^; 再帰させないとダメなのと, やっぱり is_array から配列を出さないようにしなければならないので再考してみました.
これと置きかえてみていただけますでしょうか? |
nanasess |
投稿日時: 2011/7/4 19:18
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない
|
taji |
投稿日時: 2011/7/4 19:43
対応状況: −−−
|
半人前 登録日: 2011/5/30 居住地: 投稿: 20 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない nanasess様
MPV 様 早速置き換えてみました。 引用:
# 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 bool(true) bool(true) bool(true) # 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(true) bool(true) bool(true) 結果、全てblankだと判定されました。 また、PHP5.3.x で発生していた Warningは発生しませんでした。 「SC_Utils::isBlank() で, 空白文字列をのみの配列を処理できない」事は恐らく修正されたと思われるのですが、 「受注管理画面で商品の変更を行っても、規格情報がうまく反映されない」現象に関しては 相変わらずです。 |
nanasess |
投稿日時: 2011/7/4 19:53
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 受注管理画面で商品の変更を行っても、規格情報がうまく反映されない 引用:
ありがとうございます. とり急ぎ, コミットしておきました http://svn.ec-cube.net/open_trac/changeset/21014 引用:
別の原因なのですね... こちらでも隙をみて引き続き調べてみます. |
« 1 (2) 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |