• 締切済み

PHP5でカレンダーを作っています。2日おきに日付にマーカーが入るようにするには?

教えてください。 PHP5でカレンダーを作っています。 2日おきにカレンダーの日付にマーカーが入るようにしたいのですがどうもうまくいきません。 どのようなスクリプトを書けばよいのでしょうか? わかる方教えてください。

みんなの回答

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.7

7tv3mmさん,すみません。  「motokibさん」へとするところの名前を間違えてしまいました。  大変申し訳ありませんでした。

motokib
質問者

お礼

Suziさん、7tv3mmさんアドバイスありがとうございます。 お二方のアドバイスを参考に試行錯誤した結果、 無事、考えていたカレンダーができました。 ありがとうございました。 またわからないことがありましたらアドバイスお願いします(^-^)。

motokib
質問者

補足

Suziさん、7tv3mmさんアドバイスありがとうございます。 さっそくお二人のアドバイスを参考にさせていただきカレンダーを修正したいと思います。 お二人の意見を聞いて、まだまだ自分にはPHPの知識が足りないと痛感しました。 また後で結果を報告させていただきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • 7tv3mm
  • ベストアンサー率75% (12/16)
回答No.6

Suzi さん、ご指摘ありがとうございます。 言葉足らずで誤解があるといけませんので、補足ですが、 私もタイムスタンプでの処理の方がいいと思ってます。 質問者さんの目的のカレンダーから逸れてしまって申し訳ないですが、 趣味で作った万年カレンダー(紀元前2000年~西暦3000年[万年でないです])や バイオリズムの計算(1990年生まれの人が60歳になった時 = 2050年 など)で、 1970年以前や2038年以後のタイムスタンプを取得できなかった時、 アバウトに日数計算で処理したのを思い出し、投稿した次第です。 なので、質問者さんにも、その程度という内容で受け取って下さい。

motokib
質問者

お礼

Suziさん、7tv3mmさんアドバイスありがとうございます。 お二方のアドバイスを参考に試行錯誤した結果、 無事、考えていたカレンダーができました。 ありがとうございました。 またわからないことがありましたらアドバイスお願いします(^-^)。

全文を見る
すると、全ての回答が全文表示されます。
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.5

7tv3mmさん、こんにちは。 >>+$kankaku days ⇒ +$kankaku_day  以下のところの変更だと思われますが、そうだとしたらこれは間違っています。 date( 'md', strtotime("+$kankaku days", $start_day) );  これは、タイムスタンプ($start_day) から ●×日語のタイムスタンプを作り出す物です。    つまり今日から3日後のタイムスタンプだとしたら、  date( 'md', strtotime("+3 days", 今日) ); になります。  +/-数字 days/weeks/montshs/years で指定します。  ロジックは、 1) 開始する日と間隔を決め、開始する日から換算したマーカー日を決め、これらはすべてタイムスタンプに。 2) ループの中でその日を出力しようとする時、   a:その日がマーカー日よりも以前でしたらマーカー日はそのまま   b:その日がマーカー日だったら、出力処理後、マーカー日を+間隔に変更 * その日付をマーカー日で比較する時は、月+日だけで一度タイムスタンプに出力した方が良いでしょう。  6月15日 14:23:02 と 6月15日 18:11:48 ではイコールにならないからです。月+日だけなら6月15日 00:00:00 になって統一できるからです。  こういう方法はより良いスマートなのも含めていろいろあると思います。

全文を見る
すると、全ての回答が全文表示されます。
  • 7tv3mm
  • ベストアンサー率75% (12/16)
回答No.4

もう見ていないかもしれませんが、以前、万年カレンダーや バイオリズムの計算などの、タイムスタンプの範囲外も含めて 日数を計算した時、基軸となる年月日からの総日数で対応しました。 「2日おきにマーカー表示」という具合にアレンジすると、↓の感じです。 ttp://mfdl.hp.infoseek.co.jp/goo_php_q/20090606_php.txt (先頭のhは、外しています) $view_m の「表示したい年月」を変更して、2008年1月~同4月までは 確認しましたが、細かいところを端折っているので、それ以後の 年月でバグっているかもしれません。 タイムスタンプの範囲内だけなら、他の方が言われるように タイムスタンプで処理した方がスマートだと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.3

補足への回答ありがとうございます。 「if($day % 3 == 1)」のところを以下のようにアレンジしてみるといかがでしょうか。 $m_num = $today[mon]; $d_num = $today[mday]; $year = $today[year]; $kankaku = '3'; # 日にちの間隔、 $kankaku += 1; $start_day = strtotime("$d_num $m_num $year "); # 開始する日 $marker_day = date( 'md', strtotime("+$kankaku days", $start_day) ); # マーカー日。0608とかに出力 ****ループ************** $this_tody = date( 'md', $today_2 ); # $today をタイムスタンプの$today_2に変換できることを願って if( $this_tody == $marker_day ){ print "マーカー処理"; $marker_day = date( 'md', strtotime("+$kankaku days", $today_2) ); } else print $today;

motokib
質問者

お礼

度々失礼します。 先ほどやってみましたが、すべての日付にマーカー(◎)が入ってしまいました。 以下のようにスクリプトを変更しました。 http://test.monki8.com/cal2_1.html 先ほどのアドバイスの関数に少し変更を加えました。 +$kankaku days ⇒ +$kankaku_day $this_tody ⇒ $this_today   ****ループ**************  ⇒ //****ループ************** print "マーカー処理"; ⇒ echo "<td align=\"center\"><a href=\"$PHP_SELF?$link\"><font size=\"3\" color=\"#0000cc\">$day</font></a><br>◎</td>\n"; print $today; ⇒  echo "<td align=\"center\"><a href=\"$PHP_SELF?$link\"><font size=\"3\" color=\"#0000cc\">$day</font></a></td>\n"; この変更が原因だったのでしょうか? ちなみにこのような結果になりました。 2009年6月 日  月  火  水  木  金  土    1  2  3  4  5  6    ◎  ◎  ◎  ◎  ◎  ◎    7  8  9  10  11  12  13 ◎  ◎  ◎  ◎  ◎  ◎  ◎ 14  15  16  17  18  19  20 ◎  ◎  ◎  ◎  ◎  ◎  ◎ 21  22  23  24  25  26  27 ◎  ◎  ◎  ◎  ◎  ◎  ◎ 28  29  30 ◎  ◎  ※なぜか30日はマーカー(◎)なし

motokib
質問者

補足

ご回答ありがとうございます☆ さっそくやってみます。 結果は明日の夕方にまた報告させていただきます。 知識のない私にわかりやすく丁寧に教えてくださり嬉しいです。 感謝いたします。

全文を見る
すると、全ての回答が全文表示されます。
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.2

済みません、1ヶ月分のカレンダーだと思い込んでしまいました。 ループ付近のスクリプトをお知らせ願えますか。

motokib
質問者

補足

私の説明が足りず申し訳ございません。 よろしくお願いいたします。 このスクリプトですと、5月31日と6月1日にマーカー(◎)が 入ってしまうのです。(2日おきじゃない) 何か良い解決法がありましたらお教え願います。 http://test.monki8.com/cal2.html

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

 2日おきだから任意に指定し初日から3日目にマーカーが入れば良いのだと思います。  以下のでどうでしょうか。 $start_day = '5'; # 開始する日 $kankaku = '3'; # 日にちの間隔 $marker_day = $start_day + $kankaku; # 最初にマーカーする日  日付をprintするループの中に(カレンダー日付が $today とするのなら)、 if( $today == $marker_day ){ print "マーカー処理"; $marker_day = $today + $kankaku; }else print $today;

motokib
質問者

お礼

回答ありがとうございます。 さっそく実行してみます。

motokib
質問者

補足

先ほど実行してみましたが、私の知識不足が原因でループ処理のところから先に進めません。 再度、質問失礼します。 以下の用なカレンダーにしたいのですが、助言をお願いします。 2日おきにマーカー(◎)が入るようにしたい。 2009年5月 日  月  火  水  木  金  土                1  2                   ◎ 3  4  5  6  7  8  9       ◎        ◎     10  11  12  13  14  15  16    ◎       ◎     17  18  19  20  21  22  23 ◎       ◎        ◎ 24  25  26  27  28  29  30       ◎        ◎ 31   2009年6月 日  月  火  水  木  金  土    1  2  3  4  5  6    ◎        ◎     7  8  9  10  11  12  13 ◎       ◎        ◎ 14  15  16  17  18  19  20       ◎        ◎ 21  22  23  24  25  26  27    ◎        ◎ 28  29  30 ◎

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

関連するQ&A

  • PHPでカレンダーを作る(縦書き)

    PHP初心者です。 PHPでカレンダーを作りたいのですが、よくある格子型のではなく、以下のように縦に日付が並ぶタイプです。 (例) ------------------------ 2004年12月 1日 (水) 2日 (木) ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ 31日 (金) ←前 次→ ------------------------ どなたか、参考になるスクリプトが公開されていることをお知りであれば、教えて欲しいです。 もしくは、参考となるソースをご指南頂けると、とても助かります。

    • ベストアンサー
    • PHP
  • PHP5でカレンダー

    PHP5で動作するカレンダーを探しています。 以下の機能を希望します。 ・12月分表示(今年の1月から12月まで) ・特別な営業日を任意で設定して休みを視覚的にわかるように表示  (日付の色を変えたり、セルのbackground-colorの変更) 参考になるサイトやフリースクリプトなど情報をお待ちしております。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • php カレンダー

    PHP初心者です。 http://shanabrian.com/web/php_calendar.php このページを参考にカレンダーを作成しています。 カレンダーの横に次の月、前の月などのクリックボタンをつけ 何年先でも見れるようなカレンダーを作成したいのですが、 PHPを初めて触ったので何が何だかさっぱりです、、。 教えてくださる方がいらっしゃいましたら 宜しくお願いいたします。

    • 締切済み
    • PHP
  • ファイルメーカーで日付をカレンダー入力するスクリプトは

    ファイルメーカーで日付をカレンダー入力するスクリプトはあるでしょうか。  いちいち年月日を入力せずに、カレンダーをクリックするとフィールドに日付が入力されるようなものです。 そんなスクリプトが公開されていましたら教えてください。

  • グーグルカレンダーのようなカレンダーをPHPで作るには

    グーグルカレンダーのような、クリック一つで簡単にスケジュールが書き込める、また作ったスケジュールを他の日に移動できる、スケジュールを色で分けれるなど、グーグルカレンダーそっくりのカレンダーを作りたいのです。 PHPで作れるような感じがするのですが、実際どうでしょう?作る方法を知っている方、ぜひとも教えてください。 また、PHPで作れなければ、ほかの方法はどんなのがあるのでしょうか? グーグルカレンダーのようなものは不可能であれば、最低限、スケジュールが書き込める機能を持ったカレンダーを作れればと考えています。 会社で使うのですが、会社のメンバーそれぞれにIDをふり、メンバーそれぞれが使えるようにしたいのです。 宜しくお願いします!

    • ベストアンサー
    • PHP
  • 日付カレンダー探してます

    こんにちは、高齢の両親が日付を忘れて困っています、日付つき置き時計など探したのですが、メインが時刻なため日付表示が小さくて見えません、TVの上などに置いて直ぐに見られる時計式のカレンダー(大きい表示)のようなものを探しています、どなたかご存知ありませんでしょうか? よろしくお願い致します。

  • phpカレンダーについて。

    phpカレンダーで、指定日にリンクの張り方が分かりません。 どうぞ宜しく、お願いします。

    • 締切済み
    • PHP
  • phpでカレンダー作成

    今phpでカレンダーを作成しています。 その月の最終日以降に翌月の日付を表示させたいのですが、 if($i>$hiniti){ print("<td>w&nbsp;</td>"); } だと、最終日の次の日(翌月の1日)しか表示させませんよね? カレンダーの表を翌月の最初のほうまで表示させ全部埋めるためにはどのようにすれば良いでしょうか? 後、祝日を色付けするにはどうすればよいですか? お願いします。

    • ベストアンサー
    • PHP
  • yahooカレンダーの日付が当日の日付と違います

    yahooカレンダーの日付が当日の日付と違う日付が表示されます 以前は当日の日付が表示されていました パソコンに不具合がありWIndow xpを入れ替えました XPの日付は当日の日付にしてあります 当日の日付をカレンダーを立ち上げた時に表示させるにはどうすれば良いのでしょうか

  • トップページに埋め込むカレンダーのCGI

    こんにちは、現在スクリプトを探しているのですが HTMLで書かれたトップページに埋め込む形で カレンダーを小さく表示することはできますでしょうか。 カレンダーの日付をクリックすると、その日付に行われる イベントの情報が別窓もしくはページ内のどこかで表示される 形になるのが理想なのですが、そうなると普通のHTMLではなく PHPなどの形でないとできないのでしょうか。 ご指導、アドバイスお願いいたします。

    • 締切済み
    • CGI
このQ&Aのポイント
  • 上海ロックダウンの是非について、疑問を持っている人が多いです。
  • 中国以外でもゼロコロナ政策が批判されており、上海市内でもそのような認識が広まっています。
  • ただし、ロックダウンしなかった場合、感染拡大のリスクが非常に高くなることも考えられます。
回答を見る