• ベストアンサー

submit後、デスクトップに保存

お世話になっております。 現在、サーバー上でPHPからcsvを生成し、ダウンロードを行うプログラムを開発中です。 画面遷移は、 画面はユーザー画面と管理画面があります。 1、ユーザーがユーザー画面のformに必要な項目を入力して、データベースに随時登録していく。この時、CSV出力フラグを未出力とする。 2、ユーザーの入力結果を管理者は月1回程度、管理画面から未出力のデータを一覧としてCSV出力を行う。 3、CSVのダウンロードが完了したら、未出力フラグを出力済みフラグに変更する。 ここで質問なのですが、例えば保存画面(「開く」、「保存」、「キャンセル」がある画面)の保存を押した次の画面が、どこに保存するかの画面だと思いますが、正しく保存が行われない限り(キャンセルを押した等)フラグの変更を行なわないようにするのは可能なのでしょうか? 例えば保存画面であれば、「キャンセルが押されたら」とif文で制御できそうな気がするのですが、どこに保存するか画面では何を押したかを判定するのはできるのですか? よろしくお願い致します。

  • PHP
  • 回答数5
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.5

『データベースから CSV データをダウンロード できるリンクを生成して CSV リストに追加。』 う~ん、 CSV 生成するとき、POST リクエストでサーバサイドプログラムに送信して、処理すると思うけど、それを簡単にしただけ。 生成した、CSV を DB に保存するときに、ID をつけて保存すると思うんだけど、その ID でクエリをかけて text/csv で、CSV を返す、サーバサイドプログラムを書けばいいだけ。 https://example.com/download_csv?id=(CSVのID) みたいな感じ。 ちなみに、CSV の生成が 4秒以内におわるなら、CSV の保存も要らなくて、その都度、生成すればよくて、 30秒以上なら、夜中とかに自動バッチで CSV を生成しておいて、管理者にダウンロードの URL をメールで知らせておしまい。 。。。でいいような気がする。

teckiko
質問者

お礼

dscripty 様 この度はお世話になりました。 無事に開発することができました! また、もし何かありましたらご相談に乗ってください。 どうもありがとうございました!

その他の回答 (4)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.4

ANo.1です。 >上からの指示でできる限り管理者を救う方法を検討しろ 私なら・・。 ダウンロードして保存したら(ダウンロード画面の)所定のボタンを押してもらうようにして、それで成否を通知してもらう(そのボタンがsubmitされるまでは送ったことにしない)くらいしか思いつきませんね。 そのためだけにWin32アプリを作るかどうかは微妙です。そこまでやるなら完全に『自動化』してしまいたくなりますし・・・。作るとなれば、httpを扱えるライブラリがあれば比較的簡単だとは思います(ウチの社内用アプリのバージョンアップはhttpで自動ダウンロードの仕様です)。

teckiko
質問者

お礼

shimix 様 いつもお世話になります。 >ダウンロードして保存したら(ダウンロード画面の)所定のボタンを押してもらうようにして、それで成否を通知してもらう(そのボタンがsubmitされるまでは送ったことにしない)くらいしか思いつきませんね。 質問にはCSVダウンロードと記載しましたが、当初は仰っている方法と同じ意味で、例えば「出力済みにする」みたいなボタンを押すルールにするはずだったのが、押し忘れを防止できないか とのことで、ウィンドを閉じる際に「出力済みにする」が押されていません! などと促す方法もありました。 現在、shimix 様のパターンも含めて、もう一度話し合っているところです。

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.3

おっしゃっているような保存処理はブラウザの機能になります。 PHPはあくまでサーバーサイドでプログラムが実行されて、その結果をなんらかの形で出力するものです。 受け取った側(ブラウザ)自体を操作する事はできません。 サーバーサイドプログラムがブラウザを自由に制御できるようになっちゃったら、エライ事になっちゃいます。 ではクライアントサイドのjavascriptで出来るかと言うとこれも困難です。 というかほぼ不可能です。 これもセキュリティ的に考えれば当たり前のことです。 ブラウザ上のjavascriptがブラウザそのものの制御機能は奪えないです。 ブラウザ自身に付加する機能(例えばIEであればActiveXなど)によって、かなり想定しているものに近い形は実現できると思います。 ただ、そこまでするくらいならVBなりで、管理機能を単体で作った方がたぶん早いです。 ブラウザでは無く、一つのWindowsアプリを作る感じですね。

teckiko
質問者

お礼

1minn 様 なるほど、windowsアプリですか。それは思いつきませんでした。 No.2のdscripty 様が仰っている方法をまずはじめに検討したのですが、上からの指示でもっと救う方法はないのかと、それこそ質問のように保存した/キャンセルをした の判定ができるのであれば、それに越したことはない とのことでしたので、まあ無理だろうとも思いつつも質問を致しました。 >サーバーサイドプログラムがブラウザを自由に制御できるようになっちゃったら、エライ事になっちゃいます。 >ではクライアントサイドのjavascriptで出来るかと言うとこれも困難です。 というかほぼ不可能です。 これもセキュリティ的に考えれば当たり前のことです。 ブラウザ上のjavascriptがブラウザそのものの制御機能は奪えないです。 そうですね。どう考えてもセキュリティ的にまずい気がしていました。 アプリの件も検討していきます。 丁寧な説明と、アドバイスありがとうございました!

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

Submit すると、 サーバで CSV を生成して、データベースに保存。 データベースから CSV データをダウンロードできるリンクを生成して CSV リストに追加。 出力済みフラグに変更する。 管理者は、 いつでも CSV リストを確認できて、 いつでも、ダウンロードできる。 CSV リストの各項目は、不用になったときに、削除できて、 削除すると、データベース上の CSV も消える、、、ことにしてもいいし、削除できないようにして、データベースの運用に任せてもいい。 。。。かな?

teckiko
質問者

お礼

dscripty 様 ありがとうございます! 実ははじめの段階では、仰っている方法を検討していました。しかし、もっと救う方法があるのではないかと思い質問を致しました。 一つだけ、お聞かせください。 >データベースから CSV データをダウンロードできるリンクを生成して CSV リストに追加。 ここのやり方がイマイチわかりません。 どのようにダウンロードインクをその都度自動生成すればいいのでしょうか? 何度も質問をして申し訳ありません。 どうぞよろしくお願い致します。

teckiko
質問者

補足

dscripty 様 ありがとうございます! 実ははじめの段階では、仰っている方法を検討していました。しかし、もっと救う方法があるのではないかと思い質問を致しました。 一つだけ、お聞かせください。 >データベースから CSV データをダウンロードできるリンクを生成して CSV リストに追加。 ここのやり方がイマイチわかりません。 どのようにダウンロードインクをその都度自動生成すればいいのでしょうか? 何度も質問をして申し訳ありません。 どうぞよろしくお願い致します。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

サーバ側では「データを送り返す」ことしか出来ません。それから先にローカルPCでやった操作を知る手段は用意されていません。 データを送ったら「受け取って保存しただろう」と思うしかないです。

teckiko
質問者

お礼

shimix 様 いつもお世話になっております。 >データを送ったら「受け取って保存しただろう」と思うしかないです。 そうなのです。まさにそこが問題で、上からの指示でできる限り管理者を救う方法を検討しろとのことで、その管理者たる人はexcelの表作成や簡単な関数を扱うことができる程度の人を想定しているようです。 なので、PC側から保存した/キャンセルしたのアクションが受信できるのであれば、もしかしたら・・・ と思ったのですが、やはり他の方が仰っているような方法が適切ですね。 アドバイスありがとうございました。

関連するQ&A

  • submitの分岐

    同じform内に、ラジオボタンとサブミットボタンを配置してあります。 ラジオボタンを押された時は自分をsubmit、ボタンが押された時にはsubmitして次の画面へ遷移したいのですが、分岐の方法がわかりません。 <form action="next.htm" method="post"> とやってしまうと、ラジオボタンが押された時にもnext.htmへ遷移してしまいます。 苦慮の結果JavaScriptで、ボタンを押された時にhiddenにフラグをたてておいて、 そのフラグに値が入っていれば <form method="post">、 入っていなければ<form action="next.htm" method="post">、 という分岐処理を書いたのですが、やはり両方next.htm画面へ遷移してしまいます。 お知恵を貸していただけないでしょうか。 ちなみに下記のようなスクリプトを書きました。 ----------------------------------------------- <script language="JavaScript1.2"> <!-- function chk_sub{ document.form.hdnChkFlg.value="1"; window.document.form.submit(); } //--> </script> <if form.hdnChkFlg="1"> <form method="post"> <else> <form action="next.htm" method="post"> <end if> <input type="radio" name="chkSitei" checked onclick="return chk_sub value="1">aaa</input> <input type="hidden" name="hdnChkFlg" value=""> <input type="submit" value="次へ"> </form> 宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • submitとターゲット

    こんにちは HTMLの初心者です 今画面を二つにフレームで割り(メイン画面) 上を入力画面 下を出力画面 そしてもうひとつ処理をするためのサーブレットファイルがあります 上の画面でsubmitするとサーブレットに画面遷移します サーブレットで処理 フォワードで上の画面から送信された情報を下の画面に出力するといった形です。 今の状態だと上の画面がサーブレットに遷移されてしまってる状態なんですが ターゲットを使えば大丈夫だよ と知人にいわれたのですが submitすると画面がサーブレットにうつってしまうのに、ターゲットってどういうことだ・・・ と疑問に思っています 今の頭の中では ターゲット 画面を指定されたファイルにする submit データ送信して 画面遷移する   ものぐらいしか認識がありません 上の画面で submit+ターゲット指定(下の画面)をしても submitが優先されるのか 変化はありませんでした こういう場合はどういう風にターゲットを使っていけばいいのでしょうか? 伝わりづらいと思いますがよろしくおねがいします

    • ベストアンサー
    • HTML
  • 【VB2005】ゲーム開発について

    ちょっとゲーム開発なんて大げさに書いてみました。 もし、VBでゲームを作成するにあたって、 たとえば、画面遷移をスムーズに切り替えできないか?と 考えてます。 簡単に、画面遷移を、下記のような流れにしたいと 考えます。 1:ゲームタイトル画面 2:ゲーム画面 3:ゲーム保存画面 この3つの画面があるとして、 1)のタイトル画面で、ボタンを押下して 2)のゲーム画面に遷移する際にVBだと どのようにすればゲームタイトルから ゲーム画面にスムーズに画面遷移するのか 悩んでます。 Form1から、Form2を開く方法など 画面のシーンごとに管理できて楽だと考えたのですが、 いったんForm1を閉じてForm2を表示するとかじゃなくて Form1からForm2をスムーズに表示する方法など あれば、そういうのを使いたいと考えてます。 長くなりましたが、コツコツと 画面遷移ごとに使うコントロールを モジュールで管理して、表示に必要な コントロールを都度、表示、非表示、 座標などのプロパティを設定する方法が一般的なのでしょうか? どなた教えてください。

  • 画面状態の保存方法

    VBまたはVB.NETで、画面状態の保存(FormまたはForm上のコントロールそのものをテキストに保存)、および、復元(テキスト値からFormまたはコントロールを生成する)は可能でしょうか?

  • PHPでのcsv出力について

    PHPでのcsv出力について、教えてください。 csvファイルをあるフォルダに保存させたい(例えばZ:\csvoutput等)の ですが、どのように作ればよいのか分からず、ちょっと困っています。 ネットなどで出ている一般の(?)やり方だと、csv保存時に別画面 (ポップアップ)が出てきて、「開く」「保存」「キャンセル」のボタンが表示され、 保存時に自分でフォルダを指定して保存しますが、これを随時固定の場所に 保存させたいのです。csvのファイル名は固定で決まっています。 ちなみに、該当となる保存先フォルダは必ず存在するという前提で良い事になっています。 緊急の依頼で、ちょっと急いでいます。 下手な文章でごめんなさい。。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ECLEARでcsv保存ができません

    HCS-WFS01のデータをECLEARで管理しています。 ECLEARでcsv出力しようとしたところ、ファイルに保存を押しても一瞬半透明の画面になるだけで保存されません。 記者はiPhone12 mini iOS14.5.1です。 ※OKWAVEより補足:「エレコム株式会社の製品」についての質問です。

  • formから入力された2バイト文字列を、別画面に渡したい

    formから入力された2バイト文字列を、別画面に渡したい 下記のように遷移元画面でformを作成しています。 <form style="margin:0px;padding:3px;" action="searchlist.php" method="GET"> <input type="text" name="SStr" size="20" value=""><br> <input type="submit" name="bottun1" value="検索"><br> </form> 遷移元ページのフォームに「あいう」と入力し、 その「あいう」を遷移先ページで検索条件として使用して検索結果を出力したいと思っています。 遷移先ページで、 $_GET[SStr] をデバッガーで参照してみると、「縺ゅ>縺」 と入ってしまっています。 実際にecho文で画面出力しても同様です。 「あいう」をurlencodeすると「%E3%81%82%E3%81%84%E3%81%86」となると思うのですが、 この「%E3%81%82%E3%81%84%E3%81%86」を遷移先のページに渡すにはどのようにしたら良いでしょうか。 要するに、formから入力された文字列を、入力画面内で加工してから別画面に渡すにはどうするか、 ということです。 $_GET では、勝手にURLエンコードされるのだと記述されているサイトを見たことがあるのですが、 適切にエンコードされていないように思えて、途方に暮れています。。。 ご回答よろしくお願いします!

    • ベストアンサー
    • PHP
  • IEに開いたEXECLのデータを保存したい

    WEBアプリケーションで、画面操作でCSVファイルをダウンロード(ダウンロードボタンをクリック)すると、 「開く」「キャンセル」のダイアログボックスが出てきて、 次に「開く」をクリックするとIE上にEXECLが開いてしまいます。 この状態でEXECLデータが保存できずに困っています。 何か方法はないでしょうか? 同じWEBアプリケーションで別な端末ではダウンロードボタンをクリックすると、 「開く」「キャンセル」の間に「保存」が表示されます。 この端末は「保存」ボタンで保存できるので問題なしです。 この2つの端末の違いはOSやIEの設定も含めて手元に無いため不明です。

  • C#で画面遷移のデータ保持について

    画面遷移でのデータ保持について質問です。 VisualStudio2010のC#で作っています。 Form1→Form2→Form3という風に画面遷移していきます。 Form1のテキストボックスに入力されたデータをForm2Form3のラベルに表示させたいです。 このやり方がまったくわからないので教えてください。 お願いします。

  • Excelのcsv保存について

    別ブックのデータを参照して、csvで保存するためのブックを作ったのですが、参照のための関数が入力されているセルもcsvにnullで出力されてしまいます。 参照元.xls  A B C D E 1 あ い う え お 2 か き く け こ 3 さ し す せ そ 4 5 csv出力用.xls A1~E5には作業の都合上、 =IF([参照元.xls]Sheet1!A1="","",[参照元.xls]Sheet1!A1) のような関数を入れて参照しています。  A B C D E 1 あ い う え お 2 か き く け こ 3 さ し す せ そ 4 5 これをcsvで保存すると、 あ,い,う,え,お か,き,く,け,こ さ,し,す,せ,そ ,,,, ,,,, と、データは未入力だけど関数が入っている部分まで保存されてしまいます。 これを、 あ,い,う,え,お か,き,く,け,こ さ,し,す,せ,そ ここまでで保存できるような方法、 もしくは関数などはありませんでしょうか。 csv出力用のブックでは一括半角置換や全角置換、 誤入力されたハイフンやスペースの削除などをおこなっているので、 できればこの参照形式は崩したくありません。 わかるかたいらっしゃいましたらアドバイスをお願いします。

専門家に質問してみよう