- ベストアンサー
カレンダーの作り方
toshi_p_qの回答
- toshi_p_q
- ベストアンサー率40% (2/5)
カレンダーの値をいったん配列に取り込んで 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"; }
関連する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> </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> </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行目に日にちが記入される様になっています。 もし、こんな都合のいい事が出来ないのであれば不可能と、出来ればすいませんが、初心者の為、具体的な解説を宜しくお願いいたします。
- ベストアンサー
- その他(インターネット・Webサービス)
- 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> </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
- 締切済み
- SQL Server
- Office2003でカレンダーテンプレート
予定表を作成したいのですが、 ダウンロードしようとすると Office2007以降のソフトでないとできないと表示されます。 因みにうちのは2003です。 月単位のカレンダーで上に曜日があり表になったタイプで 予定が二段位書き込めるもの、 できれば上両サイドに前の月、次の月の小さいカレンダーつきがいいです。 質問ですが、 (1)ソフトを購入しないとダウンロードできませんか? (2)2003でダウンロードできるテンプレートはありますか? 知ってるサイトがあれば教えてください。
- ベストアンサー
- その他MS Office製品
補足
すいません、質問していてお礼遅れてしまいました。なるほど、このように作成するんですね、大変勉強になりました。わざわざコードまで書いて頂いて感激です。ありがとうございました!!