投稿者 |
メッセージ |
|
< PHPプログラミング ~ カレンダーの表示、教えてください! |
|
時間:
日 2月 11, 2007 10:13 pm
|
|
|
|
以下のようなカレンダー表示のプログラム(c1の部分)ですが、それをwhile文(c2の部分)を使って、簡単にできるそうなのですが、どこをどうすればいいのでしょうか?
初心者です。教えてください。
--------------------------c1はここから
<?php
// データの初期設定
$monthLast = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) ;
// うるう年の計算
function uruu($year) {
$ret = 28 ;
if (($year % 4) == 0) $ret = 29 ;
if (($year % 100) == 0) $ret = 28 ;
if (($year % 400) == 0) $ret = 29 ;
return $ret;
} ;
// カレンダーの表示
//
// @param $year 表示する年
// @param $month 表示する月
function show($year, $month) {
print "<TABLE border=\"1\">";
print " <TBODY>";
print " <TR>";
print " <TD colspan=\"7\" align=\"center\">";
print $year . "年" . $month ."月<BR>\n" ;
print " </TD>";
print " </TR>";
print " <TR>";
print " <TD><FONT color=\"#ff0000\">SUN</FONT></TD>";
print " <TD>MON</TD>";
print " <TD>TUE</TD>";
print " <TD>WED</TD>";
print " <TD>THU</TD>";
print " <TD>FRI</TD>";
print " <TD><FONT color=\"#0000ff\">SAT</FONT></TD>";
print " </TR>";
print "";
print " <TR>";
$j = 0;
$dateinfo_start = getdate( mktime(0,0,0,$month,1,$year) ) ;
$dateinfo_end = getdate( mktime(0,0,0,$month,lastday($year,$month),$year) ) ;
for ($i = 1 - $dateinfo_start['wday'] ;
$i < lastday($year,$month) + (7 - $dateinfo_end['wday']); $i++)
{
print "<TD align=\"right\">";
if ($j % 7 == 0) {
print "<FONT color=\"#ff0000\">"; // Set font color red on Sunday.
} else if ($j % 7 == 6) {
print "<FONT color=\"#0000ff\">"; // Set font color blue on Saturday.
}
if ($i > 0 and $i <= lastday($year,$month)) {
print $i;
} else {
print " ";
}
if ($j % 7 == 0 || $i % 7 == 6) {
print "</FONT>"; // Reset font color
}
print "</TD>\n";
if ($j == 6) {
print "</TR>\n<TR>\n";
$j = 0;
} else {
$j++;
}
}
print " </TR>";
print "";
print " </TBODY>";
print "</TABLE>";
print "</BODY>";
print "</HTML>";
}
// @param $year 表示する年
// @param $month 表示する月
function lastday($year, $month) {
global $monthLast;
if ($month == 2) { // 2月だったらうるう年のチェック
return uruu($year);
} else {
return $monthLast[$month -1 ];
}
}
?>
<HTML>
<HEAD>
<TITLE>月の日数を表示</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
</HEAD>
<BODY>
<H1>calender</H1>
<HR>
<FORM ACTION='' METHOD='POST'>
<SELECT NAME='YEAR'>
<OPTION VALUE='2005'>2005
<OPTION VALUE='2006'>2006
<OPTION VALUE='2007'>2007
<OPTION VALUE='2008'>2008
<OPTION VALUE='2009'>2009
</SELECT>
年
<SELECT NAME='MONTH'>
<OPTION VALUE='1'>1
<OPTION VALUE='2'>2
<OPTION VALUE='3'>3
<OPTION VALUE='4'>4
<OPTION VALUE='5'>5
<OPTION VALUE='6'>6
<OPTION VALUE='7'>7
<OPTION VALUE='8'>8
<OPTION VALUE='9'>9
<OPTION VALUE='10'>10
<OPTION VALUE='11'>11
<OPTION VALUE='12'>12
</SELECT>
月を
<INPUT TYPE=SUBMIT VALUE='表示'>
</FORM>
<HR>
<?php
if ( isset($_REQUEST['YEAR']) ) {
// ここで表示
show($_REQUEST['YEAR'], $_REQUEST['MONTH']);
} else {
print "年月を指定して下さい.<BR>\n" ;
} ;
?>
--------------------------c1はここまで
-------------------------c2はここから
$d = -5 ;
$lastday = 31 ;
while ($d <= $lastday) {
if ($w == 0) {
/* 日曜日 */
} ;
for ($w = 0 ; $w < 7 ; $w++) {
if ( ($d >= 1) && ($d <= $lastday) 0 {
print $d ;
} else {
print " " ;
} ;
$d++ ;
} ;
} ;
--------------------------c2はここまで |
|
|
|
|
|
|
|
|
新規投稿: 不可 返信: 不可t 自分の記事の編集: 不可 自分の記事の削除: 不可 投票への参加: 不可
|
|