投稿者 メッセージ
<  PHPプログラミング  ~  カレンダーの表示、教えてください!
pomeji
投稿1時間: 日 2月 11, 2007 10:13 pm  引用



登録日: 2007年2月 11日
投稿記事: 1

以下のようなカレンダー表示のプログラム(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 "&nbsp;";
}

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 "&nbsp;" ;
} ;
$d++ ;
} ;
} ;
--------------------------c2はここまで
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.