万年カレンダーについて

このQ&Aのポイント
  • 万年カレンダーについて質問します。11月10日(月)が休みとした場合に11月10日(月)セルの背景を赤色にする方法を教えて下さい。
  • PHPのプログラムに加える記述方法を教えて下さい。
  • 万年カレンダーを表示するHTMLコードは提供されています。
回答を見る
  • ベストアンサー

万年カレンダーについて

万年カレンダーについて質問します。例えば、11月10日(月)が休みとした場合に11月10日(月)セルの背景を赤色にする方法を教えて下さい。下記のプログラムに加える記述方法を教えて下さい。 <?php if($_GET['num']==''){ $today_year =date("Y"); $today_month=date("n"); }else{ $timestamp=mktime(0,0,0,date("n")+$_GET['num'],date("d"),date("Y")); $today_year =date("Y",$timestamp); $today_month=date("n",$timestamp); } $current=mktime(0,0,0,$today_month,1,$today_year); $first_day=date("w",$current); $last_day=date("t",$current); ?> <html> <head> <title>万年カレンダ</title> </head> <body> <h1 style="background:#cccccc"> <?php print(date("Y年m月",$current)); ?>のカレンダ</h1> <table border="1" width="300"> <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>

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (741/5648)
回答No.1

こんな方法でどうでしょうか。 print("<td>".($i-$first_day)."</td>"); のところを次のようにします。 if(($today_month==11) and ($i-$first_day==10)){ $bgcolor="red"; }else{ $bgcolor=""; } print("<td bgcolor=\"".$bgcolor."\">".($i-$first_day)."</td>"); これは11月10日専用の処理ですが、あくまで背景色を設定する方法のひとつです。 おそらく、次に必要な処理は、他の休日に対応する事だと思いますが、 例えば、 $holiday[]=array("month"=>1,"day"=>1); $holiday[]=array("month"=>11,"day"=>3); $holiday[]=array("month"=>11,"day"=>10); のようにして、休日配列「$holiday」を用意して、その日が休日かどうかを判断する必要です。 $holiday[]="1/1"; $holiday[]="11/3"; $holiday[]="11/10"; のように月日を編集したものでもかまわないと思います。 この$holidayを設定するのが手作業か、自動かなど、さらに処理は増えてくると思います。

chunchun76
質問者

お礼

丁寧に教えていただきありとうございました。 カレンダーの色を変えることができました。 また、ホリデー関数についても今後勉強したいと思います。 ありがとうございました。

関連するQ&A

  • 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
  • PHPによるカレンダーについて

    PHPでカレンダーを作成しています。 プルダウンで年月を指定し、更新ボタンを押せば、指定した年月のカレンダーを表示させたいのですが、うまくいきません。 更新ボタンを押してもカレンダーが変わらないです。 KOMOカレンダーというサイトを参考にして、文字コードを変えただけです。 教えてくださる方がいらっしゃいましたら宜しくお願いいたします。 <?php $last_year = 2037; $wday_color = "#000000"; $sat_color = "#0000ff"; $sun_color = "#ff0000"; $reg_color = "#ffccff"; $year = (!isset($year)) ? date("Y") : $year; $month = (!isset($month)) ? date("n") : $month; ?> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>カレンダー</TITLE> </HEAD> <BODY> <P><FONT SIZE="6" COLOR="#006600">カレンダー</FONT></P> <P> <TABLE BORDER="1"CELLSPACING="1" CELLPADDING="1"> <TR> <TD COLSPAN="7"> <SELECT NAME="year"> <?php for($i = 2002; $i <= $last_year; $i++){ echo "<option value=".$i.(($i == $year) ? ' selected':'').">".$i."年\n"; } ?> </SELECT> <SELECT NAME="month"> <?php for($i = 1; $i <= 12; $i++){ echo "<option value=" . $i . (($i == $month) ? ' selected':'').">".$i."月\n"; } ?> </SELECT> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="更新"></TD> </TR> <TR> <TD> <P ALIGN="CENTER"><FONT COLOR="red">日</FONT> </TD> <TD> <P ALIGN="CENTER">月 </TD> <TD> <P ALIGN="CENTER">火 </TD> <TD> <P ALIGN="CENTER">水 </TD> <TD> <P ALIGN="CENTER">木 </TD> <TD> <P ALIGN="CENTER">金 </TD> <TD> <P ALIGN="CENTER"><FONT COLOR="blue">土</FONT> </TD> </TR> <?php $time = mktime(0, 0, 0, $month, 1, $year); $day_of_first = date("w", $time); $date_of_month = date("t", $time); $week_of_month = ceil($date_of_month / 7); if(($date_of_month % 7 > 7 - $day_of_first) || ($date_of_month % 7 == 0 && $day_of_first != 0)){ $week_of_month++; } for($i = 1; $i <= $week_of_month * 7; $i++){ if($i % 7 == 1){ echo "<tr>"; } if(($i - 1 < $day_of_first) || ($i > $date_of_month + $day_of_first)){ echo "<td>&nbsp;</td>"; }else{ if($i % 7 == 1){ $color = $sun_color; }elseif($i % 7 == 0){ $color = $sat_color; }else{ $color = $wday_color; } echo "<td width=30 height=30 align=right valign=top>"; echo "<font color=" . $color . ">"; echo $i - $day_of_first; echo "</font></td>"; } if($i % 7 == 0){ echo "</tr>\n"; } } ?> </TABLE> </FORM> </BODY> </HTML>

    • ベストアンサー
    • 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
  • PHP 余分に出来たタグを消したい

    PHP初心者です。 ただ今カレンダーを作成しております。 コードは以下です。 <?php $d=isset($_GET['d'])? $_GET['d']:date("Y-n-d"); list($year,$month,$day)=explode("-",$d); $prev=date("Y-n-d",mktime(0,0,0,$month-1,1,$year)); $next=date("Y-n-d",mktime(0,0,0,$month+1,1,$year)); $timestamp = mktime(0,0,0,$month,1,$year); $fd=date("w",$timestamp); $ld=date("t",$timestamp); ?> <table> <tr> <th><a href="?d=<?php echo$prev; ?>">←</a></th> <th colspan="5"><?php echo ("<h1>".$year."年".$month."月</h1>"); ?></th>   <th><a href="?d=<?php echo$next; ?>">→</a></th> </tr> <tr> <th class="sun">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="sat">土</th> </tr> <tr> <?php $offset = $fd; // while($fd--){ //$y ++; // 空セル文曜日を増やす $s .= "<td></td>\n"; } for($i=1; $i<=$ld; $i++){ $tmp = $offset + $i; //$tmpを$offset(1日までの空セル) と $i(31日)を足したものにする $s.="<td>$i</td>\n"; //$sに日数とセルを追加 if($tmp % 7 ==0){ //$tmp(空セル+その月の日数)を7で割りあまりが0すなわち土曜日まできたら $s.= "</tr>\n<tr>\n"; //</tr>で改行をいれる } } $y=0; for($i=1; $i<=$tmp; $i++){ //$tmp(空セル+その月の日数)になるまで if($y % 7 == 0){ //7倍数になったら0にリセットする $y = 0; } $y++; //リセットされた残りの曜日 } $r=7-$y; $y=0; while($r--){ $s.='<td></td>'; } for($i=1; $i<=$tmp; $i++){ if($tmp % 7 == 0){ $s.="</table>\n"; break; }else{ $s.="</tr></table>\n"; break; } } echo $s; ?> 一見出来ているようですが、最終日が土曜日になると余分な<tr>が入ってしまいます。 原因として、 if($tmp % 7 ==0){ $s.= "</tr>\n<tr>\n";} と入れてあり、土曜日に7がくる(7で割り切れる数字で終わる)であるとは理解しているのですが、どうすれば、「最終セルに最後の日が来たときに<tr>をいれない」といった命令の仕方がわかりません。 素人ですので、分かりやすく解説していただけると嬉しいです。 よろしくお願い致します。

  • カレンダーについて教えてください。

    phpでカレンダーを作っているのですが休日を設定したい場合 の方法がわかりません。 for文で日にちを表示させているのですが休日設定の配列の値を どのように参照すればいいかで悩んでおります。 // 現在の日付を取得 $year = date("Y"); $month = date("n"); $today = date("j"); // 休日を設定 $holyday = array('1', '5', '12', '28'); // カレンダー始まり echo "<table width='200' height='182' border='0'><tr><td valign='top'>"; echo "<table border ='0' bgcolor='#cccccc' cellspacing='1' cellpadding='3' width='170'><tr>\n"; echo "<td colspan='7' bgcolor='white' align='center' style='font-size:12px;font-weight:bold;color:#6666ff'>"; echo $year . "年" . $month . "月</td><tr>"; // 曜日表示部分 $weekday = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); for ($i = 0 ; $i < 7 ; $i++) { if ($i == 0 or $i == 6) { echo "<td class='head_" . $i . "'>"; } else { echo "<td class='head'>"; } echo $weekday[$i] . "</td>\n"; } echo "</tr>\n"; // 日数と曜日の計算 $days = cal_days_in_month (CAL_GREGORIAN, $month, $year); $week_start = jddayofweek (cal_to_jd(CAL_GREGORIAN, $month,1, $year) , 0); // 日付が始まる前の空白 for ($dot1 = 0 ; $dot1 < $week_start ; $dot1++) { echo "<td align='center' class='dot'></td>\n"; } // 日付表示部分 for ($day = 1 ; $day <= $days ; $day++) { if (($day+$week_start)%7 == 1) { // 日曜日 echo "<tr>\n<td class='sun'>$day</td>\n"; } else if (($day+$week_start)%7 == 0) { // 土曜日 echo "<td class='sat'>$day</td>\n</tr>\n"; } else if ($day == $today) { // 今日 echo "<td class = 'today'>$day</td>\n"; // ここで休日を表示させるのですが方法がわかりません。 } else if ($day == $holyday[0]) { // 休日 echo "<td class = 'holyday'>$day</td>\n"; } else { // 平日 echo "<td class='othr'>$day</td>\n"; } } // 最終日後の空欄の表示 $wend = 35 - ($days + $week_start); if ($wend < 0) { $wend += 7; } if ($wend == 7) { echo ''; } else if ($wend != 0) { for ($dot2 =0 ; $dot2 < $wend ;$dot2++) { echo "<td align='center' class='dot'></td>\n"; } } // カレンダー終り echo "</tr></table>\n"; echo "</td></tr></table>\n";

    • ベストアンサー
    • PHP
  • javaScriptでカレンダーを作成したい

    カレンダーをjavaScriptで作成しております。 tableをflexして2段のカレンダーです。 ①次へや前へのボタンを押すと前のが削除されず下へ増えていってしまいます。 ②矢印を2回押したら次の次の月を表示したいのができません。 ご教授お願いいたします。 Java Script let topicsData = [ ["1", "1日です"], ["4", "4日です"], ["9", "9日です"], ["15", "15日です"], ["27", "27日です"] ] function showProcess(year, month) { const lastday = new Date(year, month + 1, 0).getDate() + 1; const topics = new Array(); for (i = 0; i <= lastday; i++) { topics[i] = ""; } for (i = 0; i < topicsData.length; i++) { topics[topicsData[i][0]] = topicsData[i][1]; } //HTMLタグをつくる const table = document.getElementById("calendarleft"); for (let i = 1; i <= 15; i++) { let tr = document.createElement("tr"); //tdタグ(日付)    let td = document.createElement("td"); td.textContent = i; //tdタグ(曜日)   day = new Date(year, month, i); days = day.getDay(); weekjp = new Array("日", "月", "火", "水", "木", "金", "土"); weeks = weekjp[days]; let tdWeek = document.createElement("td"); tdWeek.innerText = weeks; //tdタグ(トピックス)  let topicsText = document.createElement("td"); topicsText.innerText = topics[i]; console.log(topics[i]); //HTMLに表示させる document.querySelector('#header').innerHTML = (month + 1) + "月"; table.appendChild(tr); tr.appendChild(td); tr.appendChild(tdWeek); tr.appendChild(topicsText); } const table2 = document.getElementById("calendarright"); for (let i = 16; i < lastday; i++) { let tr = document.createElement("tr"); //tdタグ(日付)    let td = document.createElement("td"); td.textContent = i; //tdタグ(曜日)   day = new Date(year, month, i); days = day.getDay(); weekjp = new Array("日", "月", "火", "水", "木", "金", "土"); weeks = weekjp[days]; let tdWeek = document.createElement("td"); tdWeek.innerText = weeks; //tdタグ(トピックス)  let topicsText = document.createElement("td"); topicsText.innerText = topics[i]; console.log(topics[i]); //HTMLに表示させる document.querySelector('#header').innerHTML = (month + 1) + "月"; table2.appendChild(tr); tr.appendChild(td); tr.appendChild(tdWeek); tr.appendChild(topicsText); } } const today = new Date(); let showDate = new Date(today.getFullYear(),today.getMonth(),1); window.onload = function () { showProcess(today.getFullYear(),today.getMonth()); }; function prev() { showProcess(showDate.getFullYear(),showDate.getMonth()-1); } function next() { showProcess(showDate.getFullYear(),showDate.getMonth()+1); }

  • カレンダーの年月日の横に翌月へを追加したいです

    このカレンダーの年月日の横に翌月へを追加したいのですが やり方がわかりません。 翌月へをクリックすると翌月のカレンダーに変わるようにしたいです。 どなたかよろしくお願いします。 // 表示月数(x) x=1; // cldr = ""; day = new Date(); thisday = day.getDate(); day.setDate(1); month = day.getMonth() + 1; year = day.getYear(); if(year < 2000) year += 1900; numdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31); if((year%4 == 0) && (year%100 != 0) || (year%400 == 0)) numdays[1] = 29; for(j = 0; j < x; j++){ date = new Date(); date.setDate(1) thisMonth = date.getMonth() + 1 + j; date.setMonth(thisMonth - 1); if(thisMonth > 12){ if(thisMonth % 12 == 1){ year++; } } thisMonth = date.getMonth() + 1; date.setDate(1); firstDay = date.getDay(); if(thisMonth == 1){holiday1 = 1; holiday2 = 14-(firstDay+5)%7; holiday3 = -1} else if(thisMonth == 2){holiday1 = 11; holiday2 = -1; holiday3 = -1} else if(thisMonth == 3){ ed = 20.8431 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4); holiday1 = Math.floor(ed); holiday2 = -1; holiday3 = -1; } else if(thisMonth == 4){holiday1 = -1; holiday2 = -1; holiday3 = -1} else if(thisMonth == 5){holiday1 = 3; holiday2 = 4; holiday3 = 5} else if(thisMonth == 6){holiday1 = -1; holiday2 = -1; holiday3 = -1} else if(thisMonth == 7){holiday1 = 21-(firstDay+5)%7; holiday2 = -1;holiday3 = -1} else if(thisMonth == 8){holiday1 = -1; holiday2 = -1; holiday3 = -1} else if(thisMonth == 9){ holiday1 = 21-(firstDay+5)%7; ed = 23.2488 + 0.242194 * (year - 1980) - Math.floor((year - 1980)/4); holiday2 = Math.floor(ed); holiday3 = -1 } else if(thisMonth == 10){holiday1 = 14-(firstDay+5)%7;; holiday2 = -1; holiday3 = -1} else if(thisMonth == 11){holiday1 = 3; holiday2 = 23; holiday3 = -1} else if(thisMonth == 12){holiday1 = 23; holiday2 = 30; holiday3 = -1} // 文字サイズ ymsize =16; dysize =16; // // 色 color0 = "aqua"; // 今日の背景 color2 = "red"; // 日曜,金曜,祝祭日 // cldr += "<table class='calender'>"; // カレンダーTable内の書式 cldr += "<tr class='calender'><th colspan=4><font color='#ffffff' style='font-size : "+ ymsize +"px;'>"+year+"年"+thisMonth+"月</font></th><th colspan=3>翌月へ</th></tr>"; // 年月セルの書式 cldr += "<tr class='calender2'><td>日</td><td>月</td><td>火</font></td><td>水</td><td>木</td><td>金</td><td>土</td></tr>"; for(sunday = 1-date.getDay(); sunday <= 36; sunday +=7){ cldr += "<tr align=center>"; for(i = sunday; i < sunday + 7; i++){ if((i > 0) && (i <= numdays[thisMonth-1])){ date.setDate(i); today = date.getDay(); if((thisday == i)&&(month == thisMonth)){ cldr += "<td bgcolor='"+ color0 +"'>" }else{ cldr += "<td>"; } if((today == 0)||(i == holiday1)||(i == holiday2)||(i == holiday3)||((today == 1)&&((i-1 == holiday1)||(i-1 == holiday2)||(i-1 == holiday3)))) { cldr += "<font color='"+ color2 +"'>"+ i +"</font>"; // 日曜,金曜の書式,祝祭日の書式 }else { cldr += i; // その他の日の書式 } cldr += "</td>"; }else{ cldr += "<td> </td>"; } } cldr += "</tr>"; } cldr += "</table>"; }document.write(cldr);

  • 改行されないカレンダー(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
  • 配列が受け取れないのはなぜなのでしょうか?

    カレンダーの日付にリンクをさせようとしているのですが、上手くできません。 リンクさせたい日付をforeachで配列として渡そうと思うのですが、 受け取ってくれません。 なぜ、受け取ることができないのでしょうか? 何が間違っているのでしょうか。 どなたかご指摘、アドバイスなどお願いします。 以下コードです。 <?php $qry = $_SERVER['QUERY_STRING']; if( ereg( "^[0-9]{8}", $qry ) ){ $today = getdate( mktime( 0, 0, 0, substr( $qry,4,2 ), substr( $qry,6,2 ), substr( $qry,0,4 ) ) ); }else{ $today = getdate(); } $f_today = getdate( mktime( 0, 0, 0, $today[mon], 1, $today[year] ) ); $prev_month = date( "Ymd", mktime( 0, 0, 0, $today[mon], 0, $today[year] ) ); $next_month = date( "Ymd", mktime( 0, 0, 0, $today[mon]+1, 1, $today[year] ) ); <table width=170><tr><td> <table width=100%> <tr><td colspan=7><a href="?<?= $prev_month ?>">≪ </a><?= $today[year] ?>年<?= $today[mon] ?>月 <a href="?<?= $next_month ?>"> ≫</a></td></tr> <tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr> <tr> <?php for ( $i=0; $i<$f_today[wday]; $i++ ) { echo "<td></td>\n"; } $day = 1; while( checkdate( $today[mon], $day, $today[year] ) ){ $link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day ); if( $link == 20081014 ){ //← 日付を指定※ここが問題の箇所です。 echo "<td><a href=?date=$link\">$day</a></td>\n"; }else{ echo "<td>$day</td>\n"; } if( $f_today[wday] == 6) echo "</tr><tr>"; $day++; $f_today[wday]++; $f_today[wday] = $f_today[wday] % 7; } if( $f_today[wday] > 0 ){ while( $f_today[wday] < 7 ) { echo "<td> </td>\n"; $f_today[wday]++; } } else { echo "<td colspan=7></td>\n"; } ?> </tr> </table> </td></tr></table> 下記のように日付を配列にするとダメです。 $day = 1; //以下を変更 $data = array( "200810005", "200810010", "20081011", "20081015", "20081025", "20081030" ); foreach( $data as $value ) { $val = $value; while( checkdate( $today[mon], $day, $today[year] ) ){ $link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day ); if( $link == $val ){  // ← 配列で代入※配列として受け取ってくれない。 echo "<td><a href=?date=$link\">$day</a></td>\n"; }else{ echo "<td>$day</td>\n"; } if( $f_today[wday] == 6) echo "</tr><tr>"; $day++; $f_today[wday]++; $f_today[wday] = $f_today[wday] % 7; } } ↑ここまで なぜ、できないのかが分からないので、色々試しても上手くいきません。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 該当日のスケジュール内容を別ウィンドウで表示したいのですが…。

    初めて質問させて頂きます。 プログラム初心者です。 今、課題でカレンダー作成(予定を表示させる)をしています。 現在の時点でカレンダーの指定日(予定のある日)にリンクをつけるところまでは出来たのですが、リンク先に移動した際に該当日の予定を表示させるのが出来なくて困っています。 (予定はCSVファイルからuploadしています。) どなたかお力を貸して頂けませんでしょうか??…orz。 宜しくお願いします。 ソースはこちらです。 …読みにくくてすみません(泣 <html> <head> <meta http-tquiv="Content-Type" content="text/html;charset=EUC-JP"> <title>カレンダー</title> </head> <form name="skl" method="post" action="yotei.php"> <body> <?php  $year = date("Y");  $month = date("n");  $day = date("j");  $year2=$_GET["year"];  $month2=$_GET["month"];  $day2=$_GET["day"]; //先月、来月をクリックした場合の処理  if($year2!="" || $month2!="" || $day2!="") {   if($year2!="") {    $year = $year2;   }   if($month2!="") {    $month = $month2;   }   if($day2!="") {    $day = $day2;   }else {    $day = 1;   }  } // カレンダー表示(先月の場合)  if($month==1) {   $year3 = $year-1;   $month3 = 12;  }else {   $year3 = $year;   $month3 = $month-1;  } // カレンダー表示(来月の場合)  if($month==12) {   $year4 = $year+1;   $month4 = 1;  }else {   $year4 = $year;   $month4 = $month+1;  } // テーブルの作成  print "<tableborder='1'><tr>";  print "<td width='250' align='center' bgcolor='yellowgreen' colspan='7'>";  print "<a href=\"?year=$year3&month=$month3\"><<</a>";  print " ".$year."年".$month."月のカレンダー ";  print "<a href=\"?year=$year4&month=$month4\">>></a></td></tr>";  print "<tr><td align='center' bgcolor='pink'>日</td>";  print "<td align='center' bgcolor='silver'>月</td>";  print "<td align='center' bgcolor='silver'>火</td>";  print "<td align='center' bgcolor='silver'>水</td>";  print "<td align='center' bgcolor='silver'>木</td>";  print "<td align='center' bgcolor='silver'>金</td>";  print "<td align='center' bgcolor='skyblue'>土</td></tr>";  $week = date(w,mktime(0,0,0,$month,1,$year));  for ($ix1 = 0 ; $ix1 < $week ; $ix1++) {   print "<td align='center'>-</td>";  } // ファイルの読み込み  $data = "date- data.CSV";  $file = fopen($data,"r");  while(!feof($file)){   $csv = fgets($file);   $csv = mb_convert_encoding($csv, "EUC-JP", "SHIFT-JIS"); //csvファイルを配列に格納   $str = explode(",", $csv);   for($day = 1 ; checkdate ($month,$day,$year) ; $day++) {    if($str[1] == "$year/$month/$day") {     $ymd[] = $str[1];    }   }  }  for($day = 1 ; checkdate ($month,$day,$year) ; $day++) {   print "<td align='center'";   if(($day+$week)%7 == 1 ) {    print "bgcolor='pink'><font color='red'>";   }else if(($day+$week)%7 == 0 ) {    print "bgcolor='skyblue'><font color='blue'>";   }else {    print "bgcolor='wheat'>";   }   for($i=0 ; $i<count($ymd) ; $i++) {    if($ymd[$i] == "$year/$month/$day") {     print "<a href=yotei.php>";    }   }   print "$day</td>";   if(($day+$week)%7 == 0 ) {    print "</tr>";   }  }  fclose($file);  $weekend = date(w,mktime(0,0,0,$month,$day,$year));  for ($ix2=0 ; $ix2<(7-$weekend) ; $ix2++) {   if ($weekend != 0) {    print "<td align='center'>-</td>";   }  }  print "</tr>";  print "</table>"; ?> <table border='0'> <tr> <td width="250"> <div align="center"> <input type="button" value="ファイル参照画面へ戻る" onClick="location.href='upload.php'" name="button"> </div> </td> </tr> </table> <br><br> </body> </form> </html>

    • 締切済み
    • PHP