• ベストアンサー

設定した日時になったら更新

質問させてください。 例えば、現在を「2005/04/28」だとして、 以下のような「image」テーブルがあるとします。 name     date ----------------------- image01  2005/04/26 image02  2005/04/30 image03  2005/05/04 image04  2005/05/08 ----------------------- そして、あるPHPファイルに 「image01」ファイルが設定されているとして、 実際に「2005/04/30 12:00:00」という時刻を迎えたら、 「image01」が出力されているソースの部分を 自動的に「image02」に変更したいのですが、 これはタイムスタンプ等を利用して実現する事は可能でしょうか? (dateフィールドに時間を加える事は可能です) この場合は、30日分の更新は可能かもしれませんが、 それを次の「image03」、「image04」も同様に、 順次自動的に更新したいのです。 一応、色々と試してはみましたが上手くいかず、 また、有用な関数が他にあるのでは?と思い質問させて頂きました。 何かお分かりになる方がいらっしゃいましたら 教えて頂けますでしょうか?

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

注:全角スペースを使っているの注意。 注2:テストしてないので動かないかも。 # データを配列に読み込まれていると仮定 $img = array(  array('image01','2005/04/26')  array('image02','2005/04/30')  array('image03','2005/05/04')  array('image04','2005/05/08') ); foreach ($img as $da) {   # 日付の余計なスラッシュを取る   $date = preg_replace ( "/\//", "", $da[1]);   if(date("Ymd") <= $date) {    $image = $da[0];   } else {    break;   } } echo "<img src=\"$image\">"; #2 さんの言う通り、サーバアクセス時間で判断するので時間以降のアクセスで画像変更します。 時間をつけたい場合は時間データを増やして、 YYYYMMDDHHMMSS という 14桁(もしくは秒を外した12桁)にすればできます。

gantz77
質問者

お礼

貴重な情報を有難う御座います。 試行錯誤しながら一度やってみます。 一応、時間も設定付加させたいので DBへ格納する値と、出力させるdate関数を変化させて やってみようと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

自動的にということがちょっとひっかかりますね。 PHPとしては、起動された時間(そのページを参照された時間)が、テーブルにある時間を過ぎている(imageテーブルの範囲にある)ということで、表示する画像を変えるということはできますが、 2005/04/30 12:00:00になった瞬間に、今クライアントの画面で表示されている画像を変えるということはできません。(再読込させる必要があります) PHPは、タイミングとしてサーバーで動作するので、動作するきっかけとしてサーバーへのアクセスがなければいけません。 勘違いコメントだったらすみません。

gantz77
質問者

お礼

説明不足でした。申し訳ございません。 BLUEPIXYさんのおっしゃる通り、 2005/04/30 12:00:00以降訪れたユーザーがアクセス(リロード)した段階で 画像を変化させたいと思っております。

全文を見る
すると、全ての回答が全文表示されます。
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

テーブルってこれは何かのデータベースなのかな? SQLが使えるなら、例えば今日なら select name from image where date<'2005/04/28' order by date desc で取ってきたレコードセットの最初のレコードが、今日表示する画像のファイル名だ。 $sql = "select ほにゃほにゃ '" . date("Y") . "/" . date("m") . "/" . date("d") . "' ほげほげ"; $rs = ??_exec($dbcon, $sql); $ar = ??_fetch_array($rs); $filename = "./" . $ar['name'] . ".jpg" 以上、机上で作ったサンプルコード。エラーチェックも何も無いので手を加えてくれい。

gantz77
質問者

お礼

遅くなりましたが、ご助言感謝致します。 SQLは使用可能です。 また、使用しているDBはpostgresだと言う事を 言い忘れておりました。お手数をお掛けしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESS2003で、テーブルの更新日時を入れたいです。

    ACCESS で作成したDBのテーブル更新日時を、自動で入力されるようにしたいと思いますがどのようにしたらよいのでしょうか? テーブルの該当フィールドにある規定値に何かの式を入れれば良い気がするのですが、わかりません。 規定値を date()では、テーブルを新規作成したときだけの入力のようなので困っています。 よろしくお願いします。

  • ホームページの更新日時を操作したい

    ホームページの更新日時を操作したい javascript:alert(document.lastModified) などでホームページの更新日時を確認することが出来ますが、これって通常、サーバーにファイルをアップロードした時点の日付時刻になりますよね。これを、ローカルでファイルを更新、上書きした日付時刻(ファイルのプロパティで表示されるタイムスタンプ)にしたいのですが、FTPソフトでそのような設定は可能でしょうか?たとえば2010年10月25日に上書き保存したhtmlファイルを、サーバーにアップするのが2010年10月31日になってしまっても、ブラウザなどで閲覧者が確認できる更新日時はあくまで2010年10月25日としたい、ということです。 今使っているFTPソフトはWinSCPというものですが、他のソフトのご説明でも構いません。 よろしくおねがいします。

  • SQL Serverの機能で

    お世話になります。 SQL Serverのテーブルに導入時刻を記入した"Time_Stamp"項目を設けてあります。 この"Time_Stamp"項目が システム時刻より10日以前の ものの場合、自動的にそのレコードが削除される機能を 実現したいのですが、どんな方法があるのでしょうか? バッチファイルを作成し、タスクとして実行させる方法 以外、SQLServerの機能でなにか方法がありますか? どなたか知恵を貸してください。

  • タイムスタンプを秒数で取得したい

    DB初心者で、PostgreSQL V.7.3.2 + PHP を使っています。 T_TIME というテーブルに、 日付を格納したTARGET_DATEと、 時刻を  〃 TARGET_TIMEというフィールドがあります。 このテーブルからタイムスタンプをセレクトしたいと思い、つぎのようなSQL文を 作成しました。 SELECT TO_TIMESTAMP(TARGET_DATE ||' '|| TARGET_TIME, 'YYYY-MM-DD HH24:MI') AS JIKOKU FROM T_TIME ところが、この結果は書式化された文字列のため時刻の比較を簡単に行うことができません。 なんとか書式化した形でなく、1970年からの秒数でタイムスタンプを取得したいのですが。 どうすれば良いのでしょうか。

  • ファイルの作成時刻と更新時刻

    open(OUT,">>$file"); print OUT "$value\n"; close(OUT); で作成したファイルの $time_stamp_9 = localtime((stat("$file"))[9]); $time_stamp_10 = localtime((stat("$file"))[10]); で取得したとき常に同じ値になるのですが、追加書き込みでもその様になるのでしょうか?よろしくお願い致します。 #(stat($file))[9];#最終更新時刻 #(stat($file))[10];#作成時刻

    • ベストアンサー
    • Perl
  • ファイルの作成・更新日時が2002年になってしまう。2008年に戻したい

    最近(2008年1月)にPC上で新規作成したファイルや、保存して更新したファイルの日時が なぜか2002年になってしまい困っています。 また、その日時は日付は合っていますが、時間はめちゃくちゃです。 ↓こんな感じです 例:2008/1/13 13:20に作ったファイルが2002/1/13 19:35 ファイルはコピーをしても作成日時が2002年になるため、 2006年に更新したファイルが2002年作成なんていうタイムリープ現象も おきています。 PC上の時計は日付・時間ともにあっており、メールなどは問題なく 日時が表示されています。 日付・時刻のプロパティのタイムゾーンは東京に、インターネット時刻は (最初から変えていませんが)time.windows.com サーバーに自動的に同期するとなっています。 2007年12月までは特にそういった問題は起きていませんでした。 なにかを変更した覚えは全くないのですが・・・。 また、アンチウィルスソフトはウィルスバスターを使用しており そのウィルススキャンでも特にウィルスは見つかりませんでした。 元の正しい日付で新規作成・更新日時を表示させたいのですがどうしたら良いのでしょう。 フリーソフトで任意の更新日時にする方法などは見つかったのですが そういった方法で日時を変えるしかないのでしょうか。 宜しくお願いします。

  • 数種類のテーブルの呼び出し

    こんにちは。 全く違うフィールドを含む数種類のテーブルを全て呼び出して一覧表示するためにはどういった命令を実行すればよいのでしょうか? selectはsql文の中で一度しか使えないということはわかったのですが・・・ 例えばテーブル1(フィールドはnumber,name)テーブル2(フィールドはdate,time) とした時、出力される結果としては テーブル1 number,name テーブル2 date,time ということです。 select文を2回使えるのであれば、 $sql = "select * from テーブル1 and select * from テーブル2"; という命令でいけると考えたのですが・・・

  • .exeファイルの更新日時のタイムスタンプについて

    質問させていただきます。 .exeファイルをPCからSDカードなどのメディアに移動した場合、更新日時のタイムスタンプが1秒ずれます。 これはどういう理由からなのでしょうか? どのタイミングで移動を行っても、1秒遅れるので不思議です。 どなたかご存知の方が居られましたら、ご教示お願いいたします。

  • テーブルの更新日時取得方法について

    MySQLv5.1+InnoDBエンジンのDBで質問です。 テーブルの最終更新日時とかを取得して、一定時間更新の無いテーブルを 見つける仕組みを作ろうと考えています。 (OracleだとUSER_TABLESなどのLAST_DDL_TIMEを見たい) 既に、「SHOW TABLE STATUS で出てくる、Update_time の項目を見る」 は試してみたんですがNULLになっていて見られないです・・ (InnoDBはUpdate_timeに非対応?) 代替の方法など、もしあれば教えてください。 よろしくお願いします。

  • PHPでタイムスタンプ以外の更新日を取得する方法は

    filemtimeで更新日を取得できますが、これはタイムスタンプですよね。 2038年問題を考えると、タイムスタンプを使うものは極力避けたいと思っております。 DateTimeみたいに、タイムスタンプ以外のもので、ファイルの更新日を取得できるものはありませんか?

    • ベストアンサー
    • PHP