バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > CSV出力後、ステータスを自動更新したいのですが。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
lvsa
投稿日時: 2009/10/8 17:37
対応状況: −−−
一人前
登録日: 2009/10/6
居住地:
投稿: 104
Re: CSV出力後、ステータスを自動更新したいのですが。
いつもお世話になっております。

インストールしなおしたことにより、
echoやvar_dumpなどはできるようになったのですが、
LC_Page_Admin_Contents_CsvSql.php内の
processメソッドにてPOSTされて来たモードにより、
処理を分岐している箇所があるのですが、
そこでのechoが効かず、変数に格納されているデータを
知ることができない状態です。

該当箇所は以下になります。

$mode = $_POST['mode'];

switch($_POST['mode']) {
// データの登録
case "confirm":
// エラーチェック
$this->arrErr = $this->lfCheckError($_POST);

if (count($this->arrErr) <= 0){
// データの更新
$sql_id = $this->lfUpdData($sql_id, $_POST);
// 完了メッセージ表示
$this->tpl_onload = "alert('登録が完了しました。');";
}
break;

// 確認画面
case "preview":
// SQL文表示
$sql = "SELECT \n" . $_POST['csv_sql']; // FIXME
$this->sql = $sql;

// エラー表示
$objErrMsg = $this->lfCheckSQL($_POST);
if ($objErrMsg != "") {
$errMsg = $objErrMsg->message . "\n" . $objErrMsg->userinfo;
}

$this->sqlerr = isset($errMsg) ? $errMsg : "" ;

$this->objView = $objView;

// 画面の表示
$objView->assignobj($this);
$objView->display('contents/csv_sql_view.tpl');
exit;
break;

// 新規作成
case "new_page":
$this->sendRedirect($this->getLocation("./csv_sql.php"));
exit;
break;

// データ削除
case "delete":
$this->lfDelData($sql_id);
$this->sendRedirect($this->getLocation("./csv_sql.php"));
exit;
break;

case "csv_output":
// CSV出力データ取得
$arrCsvData = $this->lfGetSqlList(" WHERE sql_id = ?", array($_POST['csv_output_id']));

$objQuery = new SC_Query();

$arrCsvOutputData = $objQuery->getall("SELECT " . $arrCsvData[0]['csv_sql']);

if (count($arrCsvOutputData) > 0) {

$arrKey = array_keys(SC_Utils_Ex::sfSwapArray($arrCsvOutputData));
$i = 0;
$header = "";
foreach($arrKey as $data) {
if ($i != 0) $header .= ", ";
$header .= $data;
$i ++;
}
$header .= "\r\n";

$data = SC_Utils_Ex::getCSVData($arrCsvOutputData, $arrKey);
// CSV出力
SC_Utils_Ex::sfCSVDownload($header.$data);
exit;
break;
}else{
$this->tpl_onload = "alert('出力データがありません。');";
$sql_id = "";
$_POST="";
}
break;
}

上記箇所の
case "csv_output":
// CSV出力データ取得
$arrCsvData = $this->lfGetSqlList(" WHERE sql_id = ?", array($_POST['csv_output_id']));
の部分の$arrCsvDataにどのような値が格納されているかを
echoにて表示しようとしましたが、表示されません。

そもそもcase "csv_output":の場合、
javaScriptにて別ウィンドウを立ち上げてcsvの出力を行って
いると思いますが、そのような場合、echoは効かないのですかね?

初歩的な質問で申し訳ありません。
また、このスレッドにて質問するのは間違っているかもしれませんが・・

お力添えよろしくお願いいたします。
seasoft
投稿日時: 2009/10/8 18:18
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: CSV出力後、ステータスを自動更新したいのですが。
そういったケースですと、echo でなく、var_dump() で出力し、直後で exit するのが良いような気がします。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

lvsa
投稿日時: 2009/10/8 18:29
対応状況: −−−
一人前
登録日: 2009/10/6
居住地:
投稿: 104
Re: CSV出力後、ステータスを自動更新したいのですが。
seasoftさま

いつもありがとうございます。
おかげさまで、変数内の値を確認できました。

また、何かあったときは、アドバイスよろしくお願いいたします。
lvsa
投稿日時: 2009/10/9 11:28
対応状況: −−−
一人前
登録日: 2009/10/6
居住地:
投稿: 104
Re: CSV出力後、ステータスを自動更新したいのですが。
何度もすみません。
CSV出力後の更新処理ができません。

現在以下のような実装にしています。
LC_Page_Admin_Contents_CsvSqlクラスにて、

case "csv_output":の箇所で、

// CSV出力データ取得
$data = SC_Utils_Ex::getCSVData($arrCsvOutputData, $arrKey);
// CSV出力
SC_Utils_Ex::sfCSVDownload($header.$data);


// 更新対象データの受注ID取得
$arrOrderId = $this->getOrderId();
// ステータス更新
lfUpdateStatus($arrOrderId);
exit;
break;

最後のlfUpdateStatus()メソッドは以下のような実装です。

function lfUpdateStatus($arrData = array()){
// クエリーインスタンス生成
$objQuery = new SC_Query();

$orderId[] = "";

// 更新対象テーブル
$table = "dtb_order";
// 更新カラム
$sqlval = array("status" => 7);

// データの数だけUPDATE実行
for($i=0 ; $i < count($arrData) ; $i++){
// 配列中の受注IDを取得
$orderId = $arrData[$i]["order_id"];
// 更新対象条件
$where = "order_id = ".$orderId;

// UPDATE実行
$objQuery->update($table, $sqlval, $where, $arradd = "", $addcol = "");
}
}

CSV出力した際は、別ウィンドウにて確認、保存先の決定をしていますが、
そのような場合、処理がサーバ側に戻っていない・・
なんてことはないですよね!?
exit;してbreak;していますもんね・・。

行き詰ってしまいました。

アドバイス、ご指摘のほどよろしくお願いいたします。

seasoft
投稿日時: 2009/10/9 12:37
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: CSV出力後、ステータスを自動更新したいのですが。
> CSV出力した際は、別ウィンドウにて確認、保存先の決定をしていますが、
> そのような場合、処理がサーバ側に戻っていない・・
> なんてことはないですよね!?

保存のダイアログのことでしょうか?
だとしたら、既にサーバ側の処理は終わっているケースが多いですよ。(アプリケーションに依存する部分なので、必ずではないです)

画面出力でデバッグがうまく進められない場合、ログ出力というのも常套手段ですよ。参考まで。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

lvsa
投稿日時: 2009/10/9 12:52
対応状況: −−−
一人前
登録日: 2009/10/6
居住地:
投稿: 104
Re: CSV出力後、ステータスを自動更新したいのですが。
seasoftさま

いつも誠にありがとうございます。

おかげさまで、思い通りの動作をするようにできました。
更新処理が実行されなかった原因ですが、

$this->lfUpdateStatus();
上記の記述をしなければならないところを
lfUpdateStatus();としてました。

これでは、functionを呼べないですね・・。
初歩的ミスでした。

何度もアドバイスをいただいたおかげでできました。

今後も何かありましたら、お力添えのほどよろしくお願いいたします。

本当にありがとうございました。
« 1 2 (3)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,073名です
総投稿数は110,023件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
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.