• ベストアンサー

カレンダーの作り方

toshi_p_qの回答

回答No.3

カレンダーの値をいったん配列に取り込んで 5行目までと6行目の表示部分を切り離すやり方です。 function calender($year,$month){  $cal = mktime(0,0,0,$month,1,$year);  $edate = date("t",$cal);  $array = array();  $kuhaku = "・"  // カレンダーのセルは最大で42個  for($i=0; $i<42; $i++){   $array[$i] = $kuhaku;  }  // その月の始まりのセルに1から終わりの日までを入れていきます。  for($i=date("w",$cal),$a=0; $a<$edate; $i++,$a++){   $array[$i] = $a+1;  }  // 表示部分  echo "<table border=1>\n";  echo "<tr><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td></tr>\n";  //5行目までを表示する  for($i=0; $i<5; $i++){   echo "<tr>";   for($j=0; $j<7; $j++){    echo "<td>".$array[$j+$i*7]."</td>";   }   echo "</tr>\n";  }  //配列の35番目(6行目の一番左のセル)に数字が入っていれば表示する  if($array[35]!=$kuhaku){   echo "<tr>";   for($j=0; $j<7; $j++){    echo "<td>".$array[35+$j]."</td>";   }   echo "</tr>\n";  }  echo "</table>\n"; }

mellow91
質問者

補足

すいません、質問していてお礼遅れてしまいました。なるほど、このように作成するんですね、大変勉強になりました。わざわざコードまで書いて頂いて感激です。ありがとうございました!!

関連するQ&A

  • C言語のポインタのプログラムの作成依頼です

    西暦年と月を入力し、その月の最初の日(一日)の曜日を表す番号(日曜なら0、月曜なら1.......、土曜日なら6という整数)で返す関数 int calc_youbi(int y,int m)とする。また、1か月の日数をdaynumとして、その月の最初の日(1日)の曜日を*youbiとして受け取り、一か月分のカレンダーを出力するとともに、翌月の1日の曜日を*youbiとして受け渡す関数を、void print_calendar(int daynum,int *youbi)とする。  西暦年と月の情報を入力して、最初に calc_youbiを一回、その後にprint_calendarを二回使うことによって二か月分のカレンダーを出力するプログラムを教えてください。 以下は、実行例です。 enter year:2010 enter month:6 Su Mo Tu We Th Fr Sa 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 Su Mo Tu We Th Fr Sa 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

  • 改行されないカレンダー(PHP)

    ●質問の主旨 下記のコードでカレンダーを作りましたが、 日付が横一列に並んだ奇妙なカレンダーになってしまいます。 参考文献と比べて、同じコードを記述しているように思いますが、 なぜ改行されないのか、分かりません。 ご存知の方、アドバイスよろしくお願いします。 ●参考文献 西沢直木「プログラミングの教科書」P196 ●開発環境 windows8 xammp1.8.1 ●コード(test.4) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>カレンダー</title> </head> <table border="1"> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> <tr> <?php $y =2012; $m = 2; $wd1 = date("w", mktime(0, 0, 0, $m, 1, $y)); for ($i = 1; $i <= $wd1; $i++) { echo "<td> </td>"; } $d = 1; while (checkdate($m, $d, $y)) { echo "<td>$d</td>"; if (date("w", mktime(0, 0, 0, $m, $d, $y)) == 6) { //週を終了 echo"</tr>"; //次の週がある場合は新たな行を準備 if (checkdate($m, $d + 1, $y)) { echo"<tr>"; } } //日付を1つすすめる $d++; } // 最後の週の土曜日まで移動 $wdx = date("w", mktime(0, 0, 0, $m + 1, 0, $y)); for ($i = 1; $i < 7 - $wdx; $i++) { echo "<td> </td>"; } ?> </tr> </table>

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

    php初心者です。HTMLにカレンダーのソースを、そのまま下記のHPから埋め込んだのですが、表示されません。なぜでしょうか? http://shanabrian.com/web/php_calendar.php --------------HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>index</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <?php function calendar($year, $month) { //月末 $l_day = date("j", mktime(0, 0, 0, $month + 1, 0, $year)); //初期出力 $tmp = <<<EOM <table cellspacing="0" cellpadding="0" border="0" class="calendar"> <caption>{$year}年{$month}月</caption> <tr> <th class="red">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="blue">土</th> </tr>\n EOM; //月末分繰り返す for ($i = 1; $i < $l_day + 1;$i++) { //曜日の取得 $week = date("w", mktime(0, 0, 0, $month, $i, $year)); //曜日が日曜日の場合 if ($week == 0) { $tmp .= " <tr>\n"; } //1日の場合 if ($i == 1) { $tmp .= str_repeat(" <td>&nbsp;</td>\n", $week); } if ($i == date("j") && $year == date("Y") && $month == date("n")) { //現在の日付の場合 $tmp .= " <td class=\"today\">{$i}</td>\n"; } else { //現在の日付ではない場合 $tmp .= " <td>{$i}</td>\n"; } //月末の場合 if ($i == $l_day) { $tmp .= str_repeat(" <td>&nbsp;</td>\n", 6 - $week); } //土曜日の場合 if($week == 6) { $tmp .= " </tr>\n"; } } $tmp .= "</table?>\n"; return $tmp; } ?> <?= calendar(date("Y"), date("n")) ?> </body> </html> ---------------------CSS table.calendar { border-collapse:collapse; border:1px #666 solid; text-align:center; font-size:12px; } table.calendar td, table.calendar th { padding:5px; border:1px #666 solid; } table.calendar th { background:#eee; } table.calendar td.today { background:#999; color:#fff; } table.calendar .red { color:#f33; } table.calendar .blue { color:#33f; }

    • ベストアンサー
    • PHP
  • 続・Excelでカレンダー

    以前も下記の件で質問させていただきました。 http://pcsoft.okwave.jp/qa2615315.html 今回はこれ以降の課題で、カレンダーを勤務表として作成しようと思います! そこで、普通のカレンダーは1日から始まりますが、16日~翌月の15日迄表示されるという様な都合のいい事は可能なのでしょうか? 曜日のセル同様、BC.DE.FG.HI.JK.LM.NO各、結合セルの8、14、20、26、32、38行目に日にちが記入される様になっています。 もし、こんな都合のいい事が出来ないのであれば不可能と、出来ればすいませんが、初心者の為、具体的な解説を宜しくお願いいたします。

  • PHPでカレンダー

    PHPを使ってカレンダーを作成しました。が、コードの意味が良く分かりません。 コードは以下の通りです。 <?php if($_GET['num']==''){ $today_year = date("Y"); //4桁の西暦年 $today_month = date("n"); //1~12の月 }else{ $timestamp = mktime(0,0,0,date("n")+$_GET['num'],date("d"),date("Y")); $today_year = date("Y",$timestamp); $today_month = date("n",$timestamp); //1~12月 } $current = mktime(0,0,0,$today_month,1,$today_year); $first_day = date("w",$current); //1日の曜日を0~6に当てはめる $last_day= date("t",$current); //月の日数 ?> <html> <head> <title>カンレンダー</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <h1><?php print (date("Y年m月",$current)); ?>のカレンダー</h1> <table border="1" cellpadding="0" cellspacing="2"> <tr> <th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th> </tr> <?php for($i=1; $i<=$first_day+$last_day; $i++){ if($i%7==1){print ("<tr>");} if($i>$first_day){ print ("<td>".($i-$first_day)."</td>"); }else{ print ("<td>&nbsp;</td>"); } if($i%7==0){print ("</tr>");} } ?> </table> </body> </html> for以降の部分が良く分かりません。よろしくお願いします。※上記のスクリプトで正しく表示されることは確認済です。

    • 締切済み
    • PHP
  • 複数行のデータ一括更新に関して

    教えて下さい。 ある表をループで回しながら作成していますが、そこに表示/入力 された情報をボタン1つで更新させたいと考えています。 更新処理はPOSTで送った次のページ(a.php⇒b.php)でしたいと考えて いますが、それらループ処理で作成されたデータをどのように次へ渡し たら良いかわかりません。 固定の表であれば、それぞれに名前を付けてPOSTしてやれば良いかと 思いますが、ループ処理している場合は全てのデータを b.php へ 渡す事はできないのでしょうか。。。

    • ベストアンサー
    • PHP
  • Googleカレンダーでカレンダーの下に予定を表示する

    今iグーグルでポータルとなる画面を作っているのですが、そのガジェットの一つにGoogleカレンダーを入れました。雑誌(YOMIURI PC)に載ってる画面ではカレンダーの下に「予定を作成」「予定リストを非表示」などと表示されてて、その下に登録した予定などが表示されていますが、私の場合予定を登録しても、そのように表示されず、ただカレンダーが表示されるのみです。どうやったらカレンダーの下に予定が表示されたりするのでしょうか?

  • BULKINSERT時の件数表示について

    Batファイルを作成し、CSVファイルをBULKINSERTにて DBに挿入しています。 FORループを使用し、フォルダに存在するテーブル名.txtの数だけ 処理を繰り返しています。 処理中に「(XXX 行処理されました)」が表示されない場合があります。 (挿入されたデータ件数には問題なく、  フォルダのCSVファイルが1件の場合には表示されます) 必ず「(XXX 行処理されました)」を表示させる方法があるのでしょうか? ※SQL Server 7.0のでは、表示されていました 環境  OS:Windows Server 2003  DB:SQL Server 2005

  • Office2003でカレンダーテンプレート

    予定表を作成したいのですが、 ダウンロードしようとすると Office2007以降のソフトでないとできないと表示されます。 因みにうちのは2003です。 月単位のカレンダーで上に曜日があり表になったタイプで 予定が二段位書き込めるもの、 できれば上両サイドに前の月、次の月の小さいカレンダーつきがいいです。 質問ですが、 (1)ソフトを購入しないとダウンロードできませんか? (2)2003でダウンロードできるテンプレートはありますか? 知ってるサイトがあれば教えてください。

  • カレンダーの作成

    エクセルにて カレンダーというか年と月を入力すると 下の表に1~31 と その曜日が出せるようにしたいのですが そのような式わかる方いらっしゃいますでしょうか A1 年(年号表示なので今なら18) A2 月 A3~34(その月の日) B3~34(その月の曜日) ってな感じで表を作成したいのですが・・・ 各セルを&でくっつけたとかしてみたんですが・・・だめでした お願いします。