質問 > 管理機能 > 商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出る。 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ZETA1 |
投稿日時: 2013/9/24 17:22
対応状況: −−−
|
半人前 登録日: 2013/2/1 居住地: 投稿: 15 |
商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出る。 ------------------------------------------------------
[EC-CUBE] 2.12.6 [OS] CentOS Linux 5.9 [PHP] PHP 5.3.3 [データベース] PostgreSQL 9.2.4 [WEBサーバ] Apache バージョン 2.2.3 [ブラウザ] Internet Explorer 8 [現象] 商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出る。 ------------------------------------------------------ 商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出ます。 LC_Page_Admin_Products_Product.php(803)は同名画像ファイル登録の有無を確認する辺りなのですが・・・ 判られる方、お手数ですが、ご教示頂けませんでしょうか? エラーログ /admin/products/product.php Warning(E_WARNING): Invalid argument supplied for foreach() on [/var/www/******/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php(803)] from ***.*.**.*** login_id = *********(0)[*******************] /var/www/******/public_html/admin/products/product.php(34): LC_Page_Admin_Products_Product_Ex->process /var/www/******/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Product_Ex.php(56): LC_Page_Admin_Products_Product->process /var/www/******/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php(68): LC_Page_Admin_Products_Product->action /var/www/******/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php(162): LC_Page_Admin_Products_Product->lfRegistProduct /var/www/******/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php(1073): LC_Page_Admin_Products_Product->lfHasSameProductImage /var/www/******/data/class/pages/admin/products/LC_Page_Admin_Products_Product.php(803): SC_Helper_HandleError::handle_warning |
namahage |
投稿日時: 2013/9/25 11:49
対応状況: −−−
|
長老 登録日: 2013/2/28 居住地: 大阪 投稿: 198 |
Re: 商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出る。 ども
エラーが発生している箇所のソースをみてみないと何もわかりませんが、 Invalid argument supplied for foreach() というエラーメッセージから、 803行目に、foreach構文があると思います。
見たいになってるんだと思いますが、この時 $arrayが配列のデータではない場合に発生するエラーです。 $arrayに何もはいってない場合(null)でも発生すると思います。 foreachの前に、配列データであるか?という判定をいれて、 配列の場合のみにforeach構文を実行させれば解決します。
すべて憶測ですw 的外れだよって場合は、差し支えなければそこのソース貼ってください〜! |
ZETA1 |
投稿日時: 2013/9/27 8:00
対応状況: −−−
|
半人前 登録日: 2013/2/1 居住地: 投稿: 15 |
Re: 商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出る。 namahage 様
いつもお世話になります。ご返答有難う御座います。 該当部分のソースは /** * 同名画像ファイル登録の有無を確認する. * * 画像ファイルの削除可否判定用。 * 同名ファイルの登録がある場合には画像ファイルの削除を行わない。 * 戻り値: 同名ファイル有り(true) 同名ファイル無し(false) * * @param string $product_id 商品ID * @param string $arrImageKey 対象としない画像カラム名 * @param string $image_file_name 画像ファイル名 * @return boolean */ function lfHasSameProductImage($product_id, $arrImageKey, $image_file_name) { if (!SC_Utils_Ex::sfIsInt($product_id)) return false; if (!$arrImageKey) return false; if (!$image_file_name) return false; $arrWhere = array(); $sqlval = array('0', $product_id); foreach ($arrImageKey as $image_key) { $arrWhere[] = "{$image_key} = ?"; $sqlval[] = $image_file_name; } $where = implode(' OR ', $arrWhere); $where = "del_flg = ? AND ((product_id <> ? AND ({$where}))"; $arrKeyName = $this->objUpFile->keyname; foreach ($arrKeyName as $key => $keyname) { if (in_array($keyname, $arrImageKey)) continue; $where .= " OR {$keyname} = ?"; $sqlval[] = $image_file_name; } $where .= ')'; $objQuery =& SC_Query_Ex::getSingletonInstance(); $exists = $objQuery->exists('dtb_products', $where, $sqlval); return $exists; } です。 $arrKeyNameが配列で無い場合が有る為、エラーが起こって いるのだとご指導のおかげで判ったのですが、ここの場合 if (is_array($arrKeyName)) {//$arrKeyName が配列だった場合 foreach ($arrKeyName as $key => $keyname) { if (in_array($keyname, $arrImageKey)) continue; $where .= " OR {$keyname} = ?"; $sqlval[] = $image_file_name; } } で良いのでしょうか?配列で無かった場合の処理も 必要なのでしょうか? if(is_array($arrKeyName)){ 処理 }else{ 処理 } |
namahage |
投稿日時: 2013/9/27 10:35
対応状況: −−−
|
長老 登録日: 2013/2/28 居住地: 大阪 投稿: 198 |
Re: 商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出る。 時と場合によりますが、この場合elseでの処理は必要ないと思いますよ〜!
といいますより、この場合、is_arrayとかするより foreach ((array)$arrKeyName as $key => $keyname) { と明示的に$arrKeyNameをarrayにキャストしてやる事でエラーがでなくなると思います。 |
ZETA1 |
投稿日時: 2013/9/27 19:14
対応状況: 解決済
|
半人前 登録日: 2013/2/1 居住地: 投稿: 15 |
Re: 商品データーの編集(サブ画像の変更)を行うとエラーログにエラーが出る。 namahage様
お蔭様でエラーが出なくなりました。 本当に有難う御座いました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |