php程序设计实例(万年历)
本文献上PHP程序设计实例之万年历
目录:
前言:..... 3
设计目的:..... 3
设计内容:..... 4
设计功能:..... 4
设计步骤:..... 4
需求分析:... 4
程序设计:... 4
万年历核心代码:... 6
附:万年历页面显示截图... 9
结语:... 9
前言:
为检验本学期的PHP程序设计学习成果,在讲师提出进行PHP程序设计实训时,经过本小组成员的集体讨论,一致决定,以PHP万年历设计作为今年的实训主题。“一寸光阴一寸金,寸金难买寸光阴”,不仅仅是为了完成学习任务,更重要的是希望通过万年历,警醒正在浪费时间的人们——阳光正明媚,勿虚度光阴。
设计目的:
检验本学期的PHP程序设计学习成果,本着学习的心态,了解有关PHP等程序的相关信息,警醒正在虚度光阴的人们,一寸光阴一寸金,寸金难买寸光阴。同时,希望通过本次制作过程,提高本小组成员之间的凝聚力,加强组员之间的思想交流,树立团队意识,为以后的大型的团队合作项目打下基础。
设计内容:PHP万年历制作
设计功能:实现本地计算机的时间、年月日、星期显示,以及各年月之间的自由切换。
设计步骤:
需求分析:
通过本小组成员的商讨,共同拟定了本次设计主题,以及需求分析。万年历,其主要功能就是达到对日期的查询。本小组设想,每逢节日,用节日名取代日期显示,并同步显示阴历,譬如4月5日清明节,在日历上,实现其显示为“清明节”,但由于技术问题,本设想目前没有得以实施,故我们从最简单的万年历着手,相信最简单的就是最好的。
程序设计:
A. 本地日期与时间显示:由于PHP技术支持问题,本程序求助于网友,采用JAVA程序语言:
Ø 本地日期显示:
tmpDate=new Date();date=tmpDate.getDate();month=tmpDate.getMonth()+1;year=tmpDate.getYear();document.write
(year);document.write(".");document.write(month);document.write(".");document.write(date);document.write(" ");myArray=new
Array(6);myArray[0]="星期日 "
myArray[1]="星期一 "
myArray[2]="星期二 "
myArray[3]="星期三 "
myArray[4]="星期四 "
myArray[5]="星期五 "
myArray[6]="星期六 "
weekday=tmpDate.getDay();if(weekday==0|weekday==6)
{document.write(myArray[weekday])
}else
{document.write(myArray[weekday])
};
Ø 本地时间显示:
var tags_before_clock = ""
var tags_after_clock = ""
if(navigator.appName == "Netscape") {
document.write('<layer id="clock"></layer>');
}
if (navigator.appVersion.indexOf("MSIE") != -1){
document.write('<span id="clock"></span>');
}
function showclock()
{
var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
var col = ":";
var spc = " ";
var apm;
if ( hour >12 )
{
apm="P.M.";
hour=hour-12;
}
else
{
apm="A.M.";
}
if (hour == 0) hour=12;
if (min<=9) min="0"+min;
if (sec<=9) sec="0"+sec;
if(navigator.appName == "Netscape")
{
document.clock.document.write(tags_before_clock
+hour+col+min+col+sec+spc+tags_after_clock);
document.clock.document.close();
}
if (navigator.appVersion.indexOf("MSIE") != -1)
{
clock.innerHTML = tags_before_clock+hour
+col+min+col+sec;
}
}
setInterval("showclock()",1000);
处理通过GET方法提交的变量
万年历核心代码:
<?php
//<--
if($HTTP_GET_VARS[year]=="")
{
$HTTP_GET_VARS[year]=date("Y");
}
if($HTTP_GET_VARS[month]=="")
{
$HTTP_GET_VARS[month]=date("n");
}
$month=$HTTP_GET_VARS[month];
$year=$HTTP_GET_VARS[year];
当年份小于1971时,系统报错
//-->
if($year<1971)
{
echo "出错!";
echo "<BR>";
echo "<a href=$HTTP_SERVER_VARS[PHP_SELF]>Back</a>";
exit();
HTML程序
}
?>
<table width="400" border="1" cellspacing="0" cellpadding="0" bordercolor="#E7E7E7" style="font-size:24px;"
align="center">
<tr align="center"><td colspan="2">
当月份超出1至12时的处理
<?php
if($month<1)
{
$month=12;
$year-=1;
}
上一年,下一年,上月,下月的连接处理及输出
if($month>12)
{
$month=1;
$year+=1;
}
echo "<a href=$HTTP_SERVER_VARS[PHP_SELF]?year=".($year-1)."&month=".$month.">←</a>年<a href=$HTTP_SERVER_VARS
[PHP_SELF]?year=".($year+1)."&month=".$month.">→</a>";
?>
</td><td colspan="3"><?php echo $year."年".$month."月";?>
</td><td colspan="2">
<?php
echo "<a href=$HTTP_SERVER_VARS[PHP_SELF]?month=".($month-1)."&year=".$year.">←</a>月<a href=$HTTP_SERVER_VARS
[PHP_SELF]?month=".($month+1)."&year=".$year.">→</a>";
?></td></tr>
<tr align=center><td><font color="red">日</font></td>
<td>一</td>
<td>二</td>
<td>三</td>
取得任何一个月的一号是星期几,用于计算一号是由表格的第几格开始
<td>四</td>
<td>五</td>
<td>六</td>
</tr><tr>
<?php
$d=date("d");
$FirstDay=date("w",mktime(0,0,0,$month,1,$year));
$bgtoday=date("d");
function font_color($month,$today,$year)
{
$sunday=date("w",mktime(0,0,0,$month,$today,$year));
if($sunday=="0")
{
$FontColor="red";
}
else
当该日为星期天时,以红色显示,并改变其显示风格
{
$FontColor="black";
}
return $FontColor;
}
function font_style($month,$today,$year)//
{
$sunday=date("w",mktime(0,0,0,$month,$today,$year));
if($sunday=="0")
{
$FontStyle="<strong>";
}
else
{
$FontStyle="";
}
return $FontStyle;
}
输出某个月的一日位置
for($i=0;$i<=$FirstDay;$i++)
{
for($i;$i<$FirstDay;$i++)
{
echo "<td align=center> </td>\n";
}
if($i==$FirstDay)
{
echo "<td align=center ".bgcolor($month,$bgtoday,1,$year)."><font color=".font_color($month,1,$year).">".font_style
($month,1,$year)."1</font></td>\n";
if($FirstDay==6)
判断1日是否星期六
{
判断某月的总天数
echo "</tr>";
}
}
}
$countMonth=date("t",mktime(0,0,0,$month,1,$year));
for($i=2;$i<=$countMonth;$i++)
{
echo "<td align=center ".bgcolor($month,$bgtoday,$i,$year)."><font color=".font_color($month,$i,$year).">".font_style
($month,$i,$year)."$i</font></td>\n";
输出由1日定位,随后2日直至月尾的所有日期数
if(date("w",mktime(0,0,0,$month,$i,$year))==6)
{
判断该日是否星期六
echo "</tr>\n";
}
}
?>
注:红字部分为PHP程序核心代码,请勿随意复制或者使用,一经使用,本小组有权追究其法律责任。由于未经本小组授权而任意使用造成的后果,概不负责。
附:万年历页面显示截图
结语:本程序最终得以完成,离不开小组成员的密切配合,齐心协力,解决了程序和页面上的很多难题。当然,也离不开网友一叶扁舟的鼎力支持,以及老师平时传授的PHP程序精华。但是,本程序定然存在很多纰漏,算法定然不严谨,我们会在以后的学习中继续改进,也一定会虚心接受有识之士的批评与指导,相信我们会在以后的路上越走越好,谢谢!
