服务热线 400-660-8066

苏州网站建设
首页 站内资讯

苏州网站建设

站内资讯
苏州网站建设 / 站内资讯 / 产品资讯 / 正文

网站制作系列之PHP制作日历

来源: All文章
发布时间:2023-06-13 11:34:33

  网上有很多漂亮的js日历插件拿来做一下日期的选择方便、漂亮,但是如果要拿来做像订票、行程表等,这些都需要将我们的数据动态的写入日历中,这种就需要大量的改动,所以我们用php加js生成一个能够高度定制的日历.

  生成日历的代码

  <!--?php

  namespaceOrg\Util;

  classCalendar{

  private$year;

  private$month;

  private$day;

  private$weeks=array('日','一','二','三','四','五','六');

  

  function__construct($options=array()){

  $this-year=$options['year'];

  $this-month=$options['month'];

  $this-day=$options['day'];

  

  $vars=get_class_vars(get_class($this));

  foreach($optionsas$key=$value){

  if(array_key_exists($key,$vars)){

  $this-$key=$value;

  }

  }

  }

  functiondisplay()

  {

  $list='

  ';

  $list.=$this-showChangeDate();

  $list.=$this-showWeeks();

  $list.=$this-showDays($this-year,$this-month,$this-day);

  

  return$list;

  }

  

  privatefunctionshowWeeks()//生成星期

  {

  $list='';

  foreach($this-weeksas$title)

  {

  $list.='';

  }

  $list.='';

  return$list;

  }

  

  privatefunctionshowDays($year,$month,$day)

  {//生成日期,具体日历的样式可以替换生成

  $firstDay=mktime(0,0,0,$month,1,$year);

  $starDay=date('w',$firstDay);

  $days=date('t',$firstDay);

  

  $list='';

  for($i=0;$i$starDay;$i++){

  $list.='';

  }

  

  for($j=1;$j=$days;$j++){

  $i++;

  $ymd=date('Y-m-d',strtotime($year.'-'.$month.'-'.$j));

  $time=strtotime($year.'-'.$month.'-'.$j);

  if($j==$day){//当前日期下

  $list.='';

  }else{//非当前日期下

  $list.='';

  

  }

  if($i%7==0){//一个星期结束

  $list.='';

  }

  }

  $list.='

'.$title.'
'.$j.''.$j.''.$j.'
';

  return$list;

  }

  

  functionshowChangeDate()//点击更换月份{

  $url=basename($_SERVER['PHP_SELF']);

  

  $list='

  

  

  ';

  

  return$list;

  

  }

  privatefunctionpreYearUrl($year,$month)

  {

  $year=($this-year=1970)?1970:$year-1;

  

  return'year='.$year.'month='.$month;

  }

  

  privatefunctionnextYearUrl($year,$month)

  {

  $year=($year=2038)?2038:$year+1;

  

  return'year='.$year.'month='.$month;

  }

  privatefunctionpreMonthUrl($year,$month)

  {

  if($month==1){

  $month=12;

  $year=($year=1970)?1970:$year-1;

  }else{

  $month--;

  }

  

  return'.$year.','.$month.';//'year='.$year.'month='.$month;

  }

  privatefunctionnextMonthUrl($year,$month)

  {

  if($month==12){

  $month=1;

  $year=($year=2038)?2038:$year+1;

  }else{

  $month++;

  }

  return'.$year.','.$month.';//'year='.$year.'month='.$month;

  }

  }调用日历

  1. 控制器

  publicfunctionget_date(){

  if(IS_AJAX){

  $result['title']='success';

  $params=array();

  $year=I('get.year',date('Y'));

  $month=I('get.month',date('m'));

  $day=I('get.day',date('d'));

  if($year$month){

  $params=array(

  'year'=$year,

  'month'=$month,

  'day'=$day,

  );

  }

  $catobj=new\Org\Util\Calendar($params);

  //print_r($price_list);

  $result['content']=$catobj-display();

  $this-ajaxReturn($result);

  }

  

  }

  前端js生成日历

  chage_month(year,month,day);//当前的年月日

  functionchage_month(year,month,day){

  

  $.ajax({url:{:urlrotue('Activity/get_date')}?year=+year+month=+month+day=+day,

  type:POST,

  cache:false,

  data:{},

  success:function(obj){

  if(obj.title=='success'){

  

  $('#get_date').html(obj.content);

  }

  else{

ayer.msg(obj.msg,{icon:5});

  }

  },

  error:function(){

ayer.msg('获取日期失败!',{icon:5});

  }

  });

  }

  效果:

  这个样式比较集成,只加了跳转时间筛选功能,我们可以在日期showDays里面添加日期的活动,门票等,看业务需求.

* 文章来源于网络,如有侵权,请联系客服删除处理。
在线 咨询

添加动力小姐姐微信

微信 咨询

电话咨询

400-660-8066

我们联系您

电话 咨询
微信扫码关注动力小姐姐 X
qr