• ベストアンサー

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

質問させてください。 例えば、現在を「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