您的位置:首页 > 编程语言 > PHP开发

php 万年历

2013-08-23 18:15 218 查看
<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(E_ALL & ~E_NOTICE);
$year = $_GET['y']?$_GET['y']:date('Y')+0;
$month = $_GET['m']?$_GET['m']:date('m')+0;

$dd = date('t',mktime(0,0,0,$month)); //本月一共有多少天
$w = date('w',mktime(0,0,0,$month,1,$year));  //本月的1号是星期几
if($w === '0')
{
$w=7;
}
echo '<center>';
echo '<h1>'.$year.'年'.$month.'月'.'</h1>';
echo '<table border=1 cellspacing=0>';
echo '<tr><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th><th>星期日</th></tr>';

//循环输出数据
//方法一
// for($i=0;$i<ceil(($dd+$w-1)/7);$i++) //判断输出几行
// {
// 	echo '<tr>';
// 	for($j=1; $j < 8 ; $j++)
// 	{
// 		$day=$i*7-$w+1+$j; //算出对应的天数
// 		if($day<=0 ||$day>$dd)
// 		{
// 			echo '<td></td>';
// 		}
// 		else
// 		{
// 			echo '<td>'.$day.'</td>';
// 		}

// 	}
// 	echo '</tr>';
// }
//方法二
$day =1 ;
while($day<$dd)
{
echo '<tr>';
for($i=0;$i<7;$i++)
{
if($day<$dd &&($day!=1 || $w-1<=$i)) //唯一难点在于 $day!=1 || $w-1<=$i 可以反过来理解 见注①
{
echo '<td>'.$day.'</td>';
$day++;
}
else
{
//注①
//$day=1 && $w-1>$i
//$day=1 的时候 说明是第一行的时候,也就是刚开始写入数据
//如果 1号是 星期一 则不需要输入空格 $w=1  1要大于 $i(0) 就要 减去 1 所以 $w-1>$i
//然后反过来,符号取反 && => ||   ,  =   =>  !=   ,  >  =>  <=
echo '<td></td>';
}
}
echo '</tr>';
}
echo '</table>';

//上一页 下一页
$previousy = $nexty =$year;
$previousm = $month-1;
$nextm = $month+1;
if($previousm<1)
{
$previousm=12;
$previousy-=1;
}else if($nextm>12)
{
$nextm=1;
$nexty+=1;
}
echo "<a href='4.php?y={$previousy}&m={$previousm}'>上个月</a>      ";
echo "<a href='4.php?y={$nexty}&m={$nextm}'>下个月</a>";
echo '</center>';
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php php学习记录