麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
【原创】一个实用日历类 Calendar v1.0
悬赏分:20 - 2007年08月15日



大家给点意见,到目前form提交日期还没有增加验证功能,大家有兴趣可以自己修改。 查看演示 [PHP] <?php # 实用日历类 Calendar v1.0 # 作者 : Murder.XP # QQ :7853151 # Email : Murder_XP@126.com # Finished : 10/3/2004 ############################################### # 使 用 说 明 # ############################################### # # # 本程序由Murder.XP(murder_xp@126.com)设计编写,保留 # # 最终解释权,在保留版权条件下提供对个人网站及非赢利性费网站 # # 的免费使用权,任何对基于本程序进行的修改,删除,增加 # # 行为都请保留本人版权信息。 # # # ############################################### /* 实用Calendar v1.0 类 介绍 1.可自定义样式,使用继承方式或直接修改类属性。 2.完全不用考虑用户GET变量,Calendar类自动保存传递用户GET变量。 3.日期范围 1970-2037 年。 4.用户可动态的删除,增加URL变量,提供更大灵活性。 5.提供相关方法返回各种格式日期满足用户对数据库进行操作。 6.支持直接日期跳转。 //相关用户函数 $cal->PrintCalJumper(); //输出跳转窗体 $cal->SetSpliter($spliter); //设定日历GET变量格式所用分隔符 默认为 'x' ex. 2004x10x3。 echo $cal->GetCurDateFormat(); //获取当前日期的查询格式 ex. 2004-10-03。 echo $cal->GetDateFormat($y,$m,$d) //返回指定日期的查询格式 ex. 2004-10-03。 echo $cal->GetCurYear();//返回当前年份。 echo $cal->GetCurMonth();//返回当前月份。 echo $cal->GetCurDay();//返回当前日。 $cal->AddQueryParam($strName,$strVal) //追加一个URL查询参数 ex. $strName 对应 a,$strVal 对应 1,日期更新时自动追加URL参数a=1。 $cal->ClearQueryString(); //清除所有附加查询字符串。 echo $cal->GetQueryString(); //获取附加查询字符串 ex. a=1&b=2。 //简单使用方法 include_once('Calendar.php'); $cal=new Calendar(); //定义Canlendar对象。 $cal->Display(); //显示日历 //推荐使用方法 (1)继承Calendar类 Class myCal extends Calendar { // 重载以下样式属性 并自定义属性值 //cal style config var $calborder=0; var $calbg='#EEEEEE'; var $calcellspacing=1; var $calcellpadding=2; var $calwidth=220; var $headerbg='#EEEEEE'; var $headerheight=20; var $headerfontcolor='#444444'; var $headerlinkstyle='linkheader'; var $titlebg='#CCCCCC'; var $titlefontcolor='#FFFFFF'; //星期‘日’ 默认为 红色,不可以修改 var $titlelinkstyle='linktitle'; #链接样式(外部css文件) var $titleheight=24; //link style var $LinkDefault='linkdefault'; #链接样式(外部css文件) var $LinkToday='linktoday'; #链接样式(外部css文件) var $LinkSelect='linkselect'; #链接样式(外部css文件) var $LinkHeaderBack='linktitle'; #链接样式(外部css文件) var $colalign='center'; var $colbgcolor='#DDDDDD'; var $colblankcellcolor='#EEEEEE'; var $collinkstyle='linkdefault'; #链接样式(外部css文件) var $colbgcolortoday='#CC6600'; var $colbgcolorselect='#FFFFFF'; var $jumpborder=0; var $jumpcellbg=''; var $jumpcellspacing=0; var $jumpcellpadding=0; var $jumpwidth=220; var $jumpheight=30; var $jumpbg=''; } 定义css文件 cal.css 这里仅列举一个样式 a.linkdefault { font-size:14px; font-weight:light; text-decoration:none; color:#000000; } a.linkdefault:hover { color:#000000; font-size:14px; font-style:italic; font-weight:light; text-decoration:underline; } include_once('Calendar.php'); $cal=new Calendar(); //$param_name1='a';$param_value1=1; //$param_name2='b';$param_value2=2; //$cal->AddQueryParam($param_name1,$param_value1); //$cal->AddQueryParam($param_name2,$param_value2); $cal->Display();//显示日历 echo $cal->GetCurDateFormat(); // output: 2004-10-03 $cal->PrintCalJumper();//显示跳转窗体 echo $cal->GetQueryString(); // output: a=1&b=2& */ Class Calendar { //cal vars var $year; var $month; var $day; var $DayOfMonthStart; //每月开始第一天是星期几 0-6 ,对应header: 日-六 var $CurDate; var $err=''; var $spliter='x'; var $DaysHaveLink=Array(); var $QueryString=''; var $WeekTitle=Array('日','一','二','三','四','五','六'); var $DaysPerMonth; //cal style config var $calborder=0; var $calbg='#EEEEEE'; var $calcellspacing=1; var $calcellpadding=2; var $calwidth=220; var $headerbg='#EEEEEE'; var $headerheight=20; var $headerfontcolor='#444444'; var $headerlinkstyle='linkheader'; var $titlebg='#CCCCCC'; var $titlefontcolor='#FFFFFF'; //星期‘日’ 默认为 红色,不可以修改 var $titlelinkstyle='linktitle'; //set css tagname from css file var $titleheight=24; //link style var $LinkDefault='linkdefault'; var $LinkToday='linktoday'; var $LinkSelect='linkselect'; var $LinkHeaderBack='linktitle'; var $colalign='center'; var $colbgcolor='#DDDDDD'; var $colblankcellcolor='#EEEEEE'; var $collinkstyle='linkdefault'; var $colbgcolortoday='#CC6600'; var $colbgcolorselect='#FFFFFF'; var $jumpborder=0; var $jumpcellbg=''; var $jumpcellspacing=0; var $jumpcellpadding=0; var $jumpwidth=220; var $jumpheight=30; var $jumpbg=''; //functions function Calendar() { $this->CurDate=getdate();//设定当前系统日期 //设定查询字符串 if(!empty($_SERVER['QUERY_STRING'])) { $q=explode("&",$_SERVER['QUERY_STRING']); foreach($q as $qs) { $kv=explode("=",$qs); if($kv[0]!='caldate') { $this->QueryString.=$qs."&"; } } } if(empty($_GET['caldate'])) { $tmpdate=getdate(); $this->year=$tmpdate['year']; $this->month=$tmpdate['mon']; $this->day=$tmpdate['mday']; unset($tmpdate); } else { if($this->CheckGetDate($_GET['caldate'])) { $tmpdate=explode($this->spliter,$_GET['caldate']); $this->year=$tmpdate[0]; $this->month=$tmpdate[1]; $this->day=$tmpdate[2]; unset($tmpdate); } else { $this->ErrorDisplay(); } } $FirstDay=getdate(mktime(0,0,0,$this->month,1,$this->year)); $this->DayOfMonthStart=$FirstDay['wday']; //0-6 $this->DaysPerMonth=date("t",mktime(0,0,0,$this->month,1,$this->year));//设定当月天数 } function CheckGetDate($caldate) { $td=explode($this->spliter,$caldate); $y=$td[0]; $m=$td[1]; $d=$td[2]; $isError=false; $cyear=intval($y); if($cyear>2037||$cyear<1970) { $isError=true; $this->err.="年份超过范围,请控制在1970-2037内。
"; } if(intval($m)<1||intval($m)>12) { $isError=true; $this->err.="月份设置错误!
"; } if(intval($d)>31/*$this->DaysPerMonth*/||intval($d)<1) { // $this->DaysPerMonth=date("t",mktime(0,0,0,$this->month,1,$this->year));//设定当月天数 $isError=true; $this->err.="日期超出范围!
"; } if($isError) { return false; } else { return true; } unset($y,$m,$d,$td,$isError); } function PrintCalHeader() { echo "calborder\" cellspacing=\"$this->calcellspacing\" cellpadding=\"$this->calcellpadding\" width=\"$this->calwidth\" bgcolor=\"$this->calbg\">\n"; //cal header,display current date (year & month) echo "\n"; echo "\n"; echo "\n"; } //输出头部: 日 - 六 function PrintCalWeekTitle() { echo "\n"; for($i=0;$i<7;$i++) { echo "\n"; } echo "\n"; } //打印日历表 function PrintCalBody() { //计算本月天数 $MonthLength=$this->DaysPerMonth; //Print start echo "\n"; //循环打印1号开始前的所有空格 $line=1; $countday=1; //打印日期开始前的空(一声)格 for($i=0;$i<$this->DayOfMonthStart;$i++) { echo "\n"; $line++; } $add=7-intval($line); //打印第一行 for($j=0;$j<$add;$j++) { echo "\n"; if($line%7==0) echo "\n\n"; $line++; $countday++; } //打印日历主体 while($countday<=$MonthLength) { echo "\n"; if($line%7==0) { echo "\n\n"; } $line++; $countday++; } //打印最后一行剩余空(一声)格 //计算最后一天是最后一个星期的第几天 $tmpdate=getdate(mktime(0,0,0,$this->month,$MonthLength,$this->year)); $DayOfLastWeek=$tmpdate['wday']; $lastc=7-$DayOfLastWeek; for($n=1;$n<$lastc;$n++) { echo "\n"; } echo "
headerbg\" align=\"center\" height=\"$this->headerheight\" colspan=\"7\">"; $lastyear=$this->year-1; $nextyear=$this->year+1; $day=$this->day; $UrlQueryStringLastYear=$this->QueryString."caldate=".$lastyear.$this->spliter.$this->month.$this->spliter.$this->day; $UrlQueryStringNextYear=$this->QueryString."caldate=".$nextyear.$this->spliter.$this->month.$this->spliter.$this->day; echo "headerlinkstyle\"><<\n"; echo "headerfontcolor\">"; echo $this->year; echo " "; echo "headerlinkstyle\">>>\n"; echo " "; $lastmonth = $this->month - 1; $nextmonth = $this->month + 1; $lastyear=$this->year; $nextyear=$this->year; if($lastmonth<1) { $lastmonth=12; $lastyear=$lastyear-1; } if($nextmonth>12) { $nextmonth=1; $nextyear=$nextyear+1; } $UrlQueryStringLastMonth=$this->QueryString.$this->GetGetFormat($lastyear,$lastmonth,$this->day); $UrlQueryStringNextMonth=$this->QueryString.$this->GetGetFormat($nextyear,$nextmonth,$this->day); echo "headerlinkstyle\" title=\"上一月\"><<\n"; echo "headerfontcolor\">"; echo $this->month; echo " "; echo "headerlinkstyle\" title=\"下一月\">>>\n"; $backlink=$_SERVER['PHP_SELF']."?".$this->QueryString.$this->GetGetFormat($this->GetCurYear(),$this->GetCurMonth(),$this->GetCurDay()); echo "LinkHeaderBack\" title=\"定位日历到今天\">今天"; echo "
colalign\" bgcolor=\"$this->titlebg\" height=\"$this->titleheight\">"; echo "titlefontcolor; } echo "\">"; echo $this->WeekTitle[$i]; echo ""; echo "
colalign\" bgcolor=\"$this->colblankcellcolor\"> colalign\" bgcolor=\""; if($this->IsToday($countday,$this->month,$this->year)) { echo $this->colbgcolortoday; } else if($this->day==$countday) //如果为选定日 { echo $this->colbgcolorselect; } else { echo $this->colbgcolor; } echo "\">"; echo "QueryString; echo $this->GetGetFormat($this->year,$this->month,$countday); echo "\""; echo " class=\""; if($this->IsToday($countday,$this->month,$this->year)) { echo $this->LinkToday; } else if($this->day==$countday) //如果为选定日 { echo $this->LinkSelect; } else { echo $this->LinkDefault; } echo "\" title=\""; echo $this->GetDateFormat($this->year,$this->month,$countday); echo "\">"; echo $countday; echo ""; echo "
colalign\" bgcolor=\""; if($this->IsToday($countday,$this->month,$this->year)) { echo $this->colbgcolortoday; } else if($this->day==$countday) //如果为选定日 { echo $this->colbgcolorselect; } else { echo $this->colbgcolor; } echo "\">"; echo "QueryString; echo $this->GetGetFormat($this->year,$this->month,$countday); echo "\""; echo " class=\""; if($this->IsToday($countday,$this->month,$this->year)) { echo $this->LinkToday; } else if($this->day==$countday) //如果为选定日 { echo $this->LinkSelect; } else { echo $this->LinkDefault; } echo "\" title=\""; echo $this->GetDateFormat($this->year,$this->month,$countday); echo "\">"; echo $countday; echo ""; echo "
colblankcellcolor\"> 
"; } function PrintCalJumper() { echo "jumpborder\" cellspacing=\"$this->jumpcellspacing\" cellpadding=\"$this->jumpcellpadding\" width=\"$this->jumpwidth\" bgcolor=\"$this->jumpbg\">\n"; echo "\n"; echo "\n"; echo "
jumpcellbg\" height=\"$this->jumpheight\">"; echo "
"; echo ""; echo "-"; echo ""; echo "-"; echo ""; echo " "; echo ""; echo "
"; echo "
\n"; echo "<script language=\"javascript\">\n"; echo "\n"; echo "</script>\n"; } function Display() { $this->PrintCalHeader(); $this->PrintCalWeekTitle(); $this->PrintCalBody(); } function AddQueryParam($strName,$strVal) //追加一个URL查询参数 { $this->QueryString.=$strName.$this->spliter.$strVal.'&'; } function GetQueryString() { return $this->QueryString; } function ClearQueryString() { $this->QuertyString = Array(); } function ErrorDisplay($errstr='') //Call your error display function here { //include_once('common.php'); //ShowErrorMsg($errstr); if(empty($errstr)) { echo $this->err; } else { echo $errstr; } exit; } /* Optional function function IsLeapYear($y) { if(intval($y)%4==0) return true; else return false; } */ function GetCurDateFormat() //返回当前选定日期的查询格式 { $CurYear=$this->year; $CurMonth=($this->month > 9) ? $this->month : "0".$this->month; $CurDay=($this->day > 9) ? $this->day : "0".$this->day; return $CurYear."-".$CurMonth."-".$CurDay; } function GetDateFormat($y,$m,$d) //返回指定日期的查询格式 { $CurYear=$y; $CurMonth=($m > 9) ? $m : "0".$m; $CurDay=($d > 9) ? $d : "0".$d; return $CurYear."-".$CurMonth."-".$CurDay; } function GetCurYear() { return $this->CurDate['year']; } function GetCurMonth() { return $this->CurDate['mon']; } function GetCurDay() { return $this->CurDate['mday']; } function IsToday($d,$m,$y) { if($this->GetCurDay()==$d && $this->GetCurMonth()==$m && $this->GetCurYear()==$y) { return true; } else { return false; } } function GetGetFormat($y,$m,$d) { return "caldate=".$y.$this->spliter.$m.$this->spliter.$d; } function SetSpliter($spliter) { if(empty($spliter)) { $this->spliter='x'; } else { $this->spliter=$spliter; } } } ?>[/PHP]

提问者:murder   08-15 09:09
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
47 + 37 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM