バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > v2.13 画像のアップロードにつきまして

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ma-ma
投稿日時: 2017/6/2 16:29
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 55
Re: v2.13 画像のアップロードにつきまして
468 様

以前教えてもらった画像の表示部分ですが、
SC_Helper_Category.phpを修正して
表示できるようになりました。

一点問題が発生しましたので、
こちらもアドバイスを頂けると幸いです。

------
【内容】
カテゴリ編集を行い、
現在表示されている画像を削除すると、
表示上からは消えるのですが、データベースには消した画像が残ってしまいます。
たぶん、私か打った下記コードが原因なのはわかるのですが、
どのように修正をして良いのか困っています。

//追記
$objCategory = new SC_Helper_Category_Ex();
$arrRes = $objCategory->get($category_id);

$objQuery =& SC_Query_Ex::getSingletonInstance();

$arrCategory['update_date'] = 'CURRENT_TIMESTAMP';

$objQuery->begin();
$where = 'category_id = ?';

//SQL作り直し(追記)
$sqlval = array();
//$sqlval['category_id'] = $arrCategory['category_id'];
$sqlval['category_name'] = $arrCategory['category_name'];
$sqlval['parent_category_id'] = $arrCategory['parent_category_id'];
$sqlval['level'] = $arrCategory['level'];
$sqlval['rank'] = $arrCategory['rank'];
$sqlval['creator_id'] = $arrCategory['creator_id'];
$sqlval['create_date'] = $arrCategory['create_date'];
$sqlval['update_date'] = $arrCategory['update_date'];
$sqlval['del_flg'] = $arrCategory['del_flg'];
if($arrCategory['temp_main_image'] != ''){
$sqlval['main_image'] = $arrCategory['temp_main_image'];
}else{
$sqlval['main_image'] = $arrRes['main_image'];//ここが原因
}
if($arrCategory['temp_sub_image'] != ''){
$sqlval['sub_image'] = $arrCategory['temp_sub_image'];
}else{
$sqlval['sub_image'] = $arrRes['sub_image'];//ここが原因
}
//$sqlval['seller'] = $arrCategory['seller'];
$sqlval['age'] = $arrCategory['age'];
$sqlval['profession'] = $arrCategory['profession'];
$sqlval['birthday'] = $arrCategory['birthday'];
$sqlval['three_size'] = $arrCategory['three_size'];
$sqlval['list_comment'] = $arrCategory['list_comment'];
$sqlval['main_comment'] = $arrCategory['main_comment'];

$objQuery->update('dtb_category', $sqlval, $where, array($category_id));
$objQuery->commit();
------

よろしくお願いいたします。
468
投稿日時: 2017/6/2 17:00
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: v2.13 画像のアップロードにつきまして
画像削除時の処理は実装されていますか?

LC_Page_Admin_Products_Product.phpでいうと、
204行目付近のlfDeleteTempFile()を呼び出しているあたりになります。

画像削除時は、SQL実行前に
$sqlval['main_image']と$sqlval['sub_image']が空にならないといけないと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ma-ma
投稿日時: 2017/6/4 21:53
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 55
Re: v2.13 画像のアップロードにつきまして
468 様

ご連絡誠にありがとうございます。
私の追記したコードでは、
$arrCategory['temp_main_image']が空の場合、
データベースの「main_image」の情報を$sqlval['main_image']に代入する形をとっております。

例えば、
case 'delete_image':
に入った場合、何かフラグを立て、
そのフラグが存在する場合、$sqlval['main_image']の値を空にする方法を考えているのですが、いかがでしょうか?
ただ、どのようなコードを書いていいのかわかりませんので、
アドバイスやご教示頂けると大変助かります。。

よろしくお願いいたします。
468
投稿日時: 2017/6/5 15:12
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: v2.13 画像のアップロードにつきまして
>$arrCategory['temp_main_image']が空の場合、
>データベースの「main_image」の情報を$sqlval['main_image']に代入する形をとっております。

この処理をしてしまうと、削除時の判定が難しいのではないでしょうか?
ご提案されているように削除時のフラグを立てて、処理する形でも対応は可能ですが、
その場合、画面とのパラメータを追加する必要がありますが、この辺りの仕組みを把握するのは大変では無いでしょうか?

public function initParam()で処理している
$objFormParam->addParam()が画面へ渡す値、画面から受け取る値を制御していますので、
この辺りの処理を追っていく必要があると思います。

現時点で画面とのパラメータは必要な項目は揃っていると思いますので、
$arrCategory['temp_main_image']が削除時、または画像未登録時は空。
画像登録時は値が入っていると判断するほうが変更が少ないのではないかと思いますが如何でしょうか?

あと、少しと思いますので、
一度、ご確認いただけたらと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ma-ma
投稿日時: 2017/6/6 14:40
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 55
Re: v2.13 画像のアップロードにつきまして
468様

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

>ご提案されているように削除時のフラグを立てて、処理する形でも対応は可能ですが、
>その場合、画面とのパラメータを追加する必要がありますが、この辺りの仕組みを把握するのは大変では無いでしょうか?
かしこまりました。
こちらはやめておきます。


>$arrCategory['temp_main_image']が削除時、または画像未登録時は空。
>画像登録時は値が入っていると判断するほうが変更が少ないのではないかと思いますが如何でしょうか?
こちらですが、新規カテゴリ作成時には正常に動作をするのですが、カテゴリ編集時には画像をアップロードしないと正常にうごきませんでした。
おそらく、「save_main_image」に値が入っていないのが原因だと思います。
カテゴリ編集の際、「save_main_image」に値を入れておくにはどのようにすれば良いのでしょうか?
カテゴリ編集の際にデータを引っ張ってくるSC_Helper_Category.phpを下記のように触っております。
----------
public function get($category_id)
{
$objQuery =& SC_Query_Ex::getSingletonInstance();
$col = 'dtb_category.*, dtb_category_total_count.product_count';
$from = 'dtb_category left join dtb_category_total_count ON dtb_category.category_id = dtb_category_total_count.category_id';
$where = 'dtb_category.category_id = ? AND del_flg = 0';
// 登録商品数のチェック
if ($this->count_check) {
$where .= ' AND product_count > 0';
}
$arrRet = $objQuery->getRow($col, $from, $where, array($category_id));
$arrRet[arrFile] = $this->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH,$arrRet["main_image"],$arrRet["sub_image"]);
return $arrRet;
}

public function getFormFileList($temp_url, $save_url, $mainfile, $subfile01){
$arrRet = array();
if ($mainfile != ""){
$arrRet['main_image']['filepath'] = rtrim($save_url, '/') . '/' . $mainfile;
}
if ($subfile01 != ""){
$arrRet['sub_image']['filepath'] = rtrim($save_url, '/') . '/' . $subfile01;
}
return $arrRet;
}
----------

また、温かいお言葉ありがとうございます!
あと少しですので頑張っていきたいと考えております。

よろしくお願いいたします。
468
投稿日時: 2017/6/8 8:27
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: v2.13 画像のアップロードにつきまして
>こちらですが、新規カテゴリ作成時には正常に動作をするのですが、カテゴリ編集時には画像をアップロードしないと正常にうごきませんでした。
現在の状態が分からないので、適切なアドバイスが難しいのですが、
6/2時点では、以下の投稿をされておりましたが、
編集など正常に動いていて、画像取り消し時のみ上手くいっていなかったのでしょうか?

>カテゴリ編集を行い、
>現在表示されている画像を削除すると、
>表示上からは消えるのですが、データベースには消した画像が残ってしまいます。

この時点では、新規登録、変更共に思うように動作していて、
その後の変更で、色々と上手く動かなくなったのであれば、
6/2の状態に戻していただいて、
画像取り消し時に、DBの更新を実行して、画像情報を削除してしまう処理が変更による影響が少ないかもしれません。

case 'delete_image':
$objQuery->begin();
$where = 'category_id = ?';
$sqlval['main_image'] = '';
$sqlval['sub_image'] = '';
$objQuery->update('dtb_category', $sqlval, $where, array($category_id));


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

ma-ma
投稿日時: 2017/6/8 23:14
対応状況: −−−
常連
登録日: 2014/9/22
居住地:
投稿: 55
Re: v2.13 画像のアップロードにつきまして
468様

ご教示いただきまして、誠にありがとうございます!
教えて頂いた方法にて修正したところ、
正常に動作いたしました!
ありがとうございます。

また、教えて頂いたDBを更新する方法以外に、
public function doPreEdit(&$objFormParam,$objUpFile)
の中に以下のコードを追加したところ動作したのですが、
こちらでも問題はないのでしょうか?
-----
// アップロードファイル情報取得(Hidden用)
$arrHidden = $objUpFile->getHiddenFileList();
$this->arrForm['arrHidden'] = array_merge((array) $arrHidden);

// 画像ファイル表示用データ取得
$this->arrForm['arrFile'] = $objUpFile->getFormFileList(IMAGE_TEMP_URLPATH, IMAGE_SAVE_URLPATH);
-----
この度はいろいろと助けて頂き本当にありがとうございました!!

よろしくお願いいたします。
468
投稿日時: 2017/6/9 13:15
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: v2.13 画像のアップロードにつきまして
その方法で問題無いと思います。
うまく動いたのであれば、良かったです。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

« 1 2 3 (4)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
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.