現在の日付からリスト表示 - PHPプロ!Q&A掲示板

2857

  • 0P

現在の日付からリスト表示

質問日時 / 2010年9月7日 00:55    回答数 / 6件

Questioner:  sakakazu01  このエントリーをはてなブックマークに追加 

キーワード / リスト表示    休日   

お問い合わせフォームで、現在の日付から未来の5日分をリスト表示しました。
  1. for ($i = 1; $i < 6; $i++) {
  2. $_html .="<option value=\"$i\" $kiboubi_checked[$i] >".date("Y年m月d日", strtotime("+$i day"))."</option>" ;
  3.   }
それに加え、休業日はリスト表示からはずす処理を加えたいのですが、どのようにすれば可能でしょうか?
休業日は上期、下期で、変動しますが、毎週土曜など、周期的な感じです。
私、デザイナーで、PHPは初心者です。
どうぞよろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix>休業日は上期、下期で、変動しますが、毎週土曜など
 ┗A01-1sakakazu01休業日が圧倒的に少ないので、休業日をテキストファイ
  ┗A01-1-1shimix休日データ(テキストファイル)のメンテあたりは置い
   ┗A01-1-1-1sakakazu01大変ありがとうございます。できました!!感謝です。
    ┗A01-1-1-1-1shimix>$wdateから月を判別できるのでしょうか? date('w
     ┗A01-1-1-1-1-1sakakazu01ありがとうございます。完璧です。 基礎ができていな

回答一覧

並び替え:

A01
answerershimix [9月7日 08:16] (最終編集:9月7日 09:05)

>休業日は上期、下期で、変動しますが、毎週土曜など、周期的な感じです。

変動するのであれば、どこかに休業日のデータを(テキストファイルでもデータベースでも)保持しておかないといけないですね。そのあたりは誰も設計していないんでしょうか?チェック方法は保持の仕方で変わってくると思います。

逆にデータベースで「営業日データ」を保持するようなら、書き方は全然違ってきます。先にどっち(休業日・営業日)を保持した方が他にも使い回し易いかから検討すべきでは?今のスクリプトだけを泥縄式に対応させるのは得策ではないように思います。休業日データを作成して対応しても、あとで他のスクリプトで「営業日データの方が使いやすかった」となると困りますので。

この意見に回答する

ツリーへ TOPへ

A01-1
replyersakakazu01 [9月7日 10:48]

休業日が圧倒的に少ないので、休業日をテキストファイルに保持する方向で行きたいと思います。
その際、「for文」の中で、テキストファイルの内容と、strtotimeで取得した内容を突き合わせて、等しければ非表示にしたいのですが、どのような方法がありますか?
テキストファイルの内容を配列にして、in_arrayなどで調べるとか?
頑張ってみます。またつまずいたら、よろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A01-1-1 満足
replyershimix [9月7日 11:26]

休日データ(テキストファイル)のメンテあたりは置いといて、たとえば「Ymd」の形式で格納しているとすれば

  1. $yasumi = file('yasumi.txt');
  2. foreach ($yasumi as $key=>$value) {
  3.     $yasumi[$key] = trim($value);
  4. }
  5.  
  6. $i = 0;
  7. $day = 0;
  8. while ($i < 5) {
  9.     $day++;
  10.     $wdate = strtotime('+' . $day .'day');
  11.     if (in_array(date('Ymd', $wdate), $yasumi)) { continue; }
  12.     $i++;
  13.     $_html .= '<option value="' . $i . '">' . date("Y年m月d日", $wdate) . '</option>';
  14. }
といった感じですかねぇ。未検証ですが叩き台にどうぞ。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyersakakazu01 [9月8日 02:01]

大変ありがとうございます。できました!!感謝です。
fileを使うと配列になるのは驚きました。
in_arrayとcontinue;の組み合わせも思いも尽きませんでした。
本当にありがとうございます。

もうちょっと欲をいいますと、
期間限定4月~10月の毎週日曜日をリストからはずすことは可能でしょうか?
現在以下のコードを追加したのですが、これでは、年中日曜日になってしまいます。
  1. $youbi = date("w" , $wdate);
  2. if ($youbi == "0") { continue; }

$wdateから月を判別できるのでしょうか?
よろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1 満足
replyershimix [9月8日 08:44]

>$wdateから月を判別できるのでしょうか?

date('w', $wdate)などが書けるのであれば、そう難しいことでもないと思いますけど・・
  1. if ((date('m', $wdate) >='04')and(date('m', $wdate) <='10')and(date('w' , $wdate) == '0')) { continue; }

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1
replyersakakazu01 [9月8日 09:10]

ありがとうございます。完璧です。
基礎ができていないものでご迷惑おかけしました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)