バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

先着1,000社 プラグインダウンロード&お申込で1,000円分Amazonギフト券プレゼント amazon pay
広告掲載について

サイト内検索

質問 > フロント機能 > 商品管理/商品マスター/編集にて、商品名が更新されている場合のみ時刻を記録する記述にすることは可能でしょうか。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
zenta
投稿日時: 2018/1/4 15:07
対応状況: 解決済
常連
登録日: 2016/10/18
居住地:
投稿: 45
商品管理/商品マスター/編集にて、商品名が更新されている場合のみ時刻を記録する記述にすることは可能でしょうか。
いつも大変お世話になっております。どうかよろしくお願いいたします。

管理者画面の商品管理/商品マスター/編集で、商品名が新たに更新されるなら(登録しようとしている商品名が既にデータベースの商品名のカラムにある内容と異なるなら)以下の様な、CURRENT_TIMESTAMPの情報を以下の様に新たに作成したカラムに保存し、サイトの所定のセクションに表記するという記述を施したいのですが、下記の記述では機能致しません。

具体的にどのような記述にすればよろしいかアイデア等ご指南頂けませんでしょうか。

LC_Page_Admin_Products_Product.php

function lfRegistProduct() {

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if ($sqlval['name'] != $arrList['name']) {

$sqlval['update_date_name'] = 'CURRENT_TIMESTAMP';

} else {
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
EC-CUBE 2.X系
(データベース) MySQL5.0.77
(WEBサーバ) apache2
(OS) Windows XP
(PHP) 5.0.22
yuh
投稿日時: 2018/1/4 17:03
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1500
Re: 商品管理/商品マスター/編集にて、商品名が更新されている場合のみ時刻を記録する記述にすることは可能でしょうか。
MYSQLであればトリガー貼っとけばいいんじゃないでしょうか?

delimiter //
CREATE TRIGGER dtb_products_update_date_name_update BEFORE UPDATE ON dtb_products
FOR EACH ROW
BEGIN
    IF NEW.name <> OLD.name THEN
        SET NEW.update_date_name = NOW();
    END IF;
END;//
delimiter ;

こんな感じで。


----------------
ec-cube2系の速度UPしてみました。(商品数:100万件)
http://speedtest2.ec-lab.net/products/list.php?category_id=15
ec-cube2系最速!(自称)

zenta
投稿日時: 2018/1/5 12:22
対応状況: −−−
常連
登録日: 2016/10/18
居住地:
投稿: 45
Re: 商品管理/商品マスター/編集にて、商品名が更新されている場合のみ時刻を記録する記述にすることは可能でしょうか。
yuh様、

ご多忙の中、ご指導いただきまして大変感謝いたします。
頂いた記述にて即機能しております。

私は当初から以下の様にもう一行追加する予定でおり、

if ($sqlval['name'] != $arrList['name']) {

$sqlval['editor_name'] = $_SESSION['login_name'];
$sqlval['update_date_name'] = 'CURRENT_TIMESTAMP';

} else {
}

以下の様にと、いろいろと試しておりますが、なかなか旨く機能致しません。

恐縮でございますが、下記のXXXXXXXX、$_SESSION['login_name']に該当する記述に関しましてアドバイス等頂けませんでしょうか。

IF NEW.name <> OLD.name THEN

SET NEW.editor_name = XXXXXXXX;
SET NEW.update_date_name = NOW();

END IF;
yuh
投稿日時: 2018/1/5 14:03
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1500
Re: 商品管理/商品マスター/編集にて、商品名が更新されている場合のみ時刻を記録する記述にすることは可能でしょうか。
ためしてないですが、こんな感じですかね?

delimiter //
CREATE TRIGGER dtb_products_update_date_name_update BEFORE UPDATE ON dtb_products
FOR EACH ROW
BEGIN
    IF NEW.name <> OLD.name THEN
        SET NEW.editor_name = (SELECT name FROM dtb_member WHERE member_id = NEW.creator_id);
        SET NEW.update_date_name = NOW();
    END IF;
END;//
delimiter ;


----------------
ec-cube2系の速度UPしてみました。(商品数:100万件)
http://speedtest2.ec-lab.net/products/list.php?category_id=15
ec-cube2系最速!(自称)

zenta
投稿日時: 2018/1/6 1:34
対応状況: 解決済
常連
登録日: 2016/10/18
居住地:
投稿: 45
Re: 商品管理/商品マスター/編集にて、商品名が更新されている場合のみ時刻を記録する記述にすることは可能でしょうか。
yuh様、

ご教授頂きまして感謝致します。そしてご多忙の中恐縮でございます。

何故かわかりませんが、WHERE member_id = NEW.creator_id
であれば、商品登録者の名前が抽出、挿入、表示される様です。

(当サイトはポータルサイト、登録者の商品(コンテンツ)に対して複数のユーザーが同時にネット上でログインし編集などができる設定になっております。)

商品登録画面上部に表示されているものと同じ、現在ログイン中のユーザーを抽出し、挿入、表示させたいので、

WHERE login_date = CURRENT

などと試していますが、何も抽出しない様でございます。

<!--{$smarty.session.login_name|h}-->、あるいは$_SESSION['login_name']はどうゆう記述で抽出されているのでしょうか。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

その後、様々な情報等から、dtb_productsに新たなカラムlogin_nameを作成し、更新する際にphp側でこの$_SESSIONの情報をそのカラムに挿入し、そしてMysql側のトリガーの判別によって、最終的なカラムにlogin_nameを挿入するという形式に、より効率的な方法はもちろんありますが、致しました。


ご多忙の中ご指導いただきまして大変感謝致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は28,660名です
総投稿数は86,774件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1752
4
yuh
1500
5
red
1165
6
468
1085
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
651
13 karin 650
14 sumida 641
15
homan
633
16 DELIGHT 571
17
h_tanaka
508
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.