php日历制作代码分享


Posted in PHP onJanuary 20, 2014

 
php日历制作代码分享

calendar.class.php

 

 <?php
class Calendar {
  private $year; //当前的年
  private $month; //当前的月
  private $start_weekday; //当月的第一天对应的是周几
  private $days; //当前月一共多少天
  function __construct(){
   $this->year=isset($_GET["year"]) ? $_GET["year"] : date("Y");
   $this->month=isset($_GET["month"]) ? $_GET["month"] : date("m");
   $this->start_weekday=date("w", mktime(0, 0, 0, $this->month, 1, $this->year));
   $this->days=date("t", mktime(0, 0, 0, $this->month, 1, $this->year));
  }
  function out(){
   echo '<table align="center">';
   $this->chageDate("test.php");
   $this->weeksList();
   $this->daysList();
   echo '</table>';
  }
  private function weeksList(){
   $week=array('日','一','二','三','四','五','六');
   echo '<tr>';
   for($i=0; $i<count($week); $i++)
    echo '<th class="fontb">'.$week[$i].'</th>';
   echo '</tr>';
  }
  private function daysList(){
   echo '<tr>';
   //输出空格(当前一月第一天前面要空出来)
   for($j=0; $j<$this->start_weekday; $j++)
    echo '<td> </td>';

   for($k=1; $k<=$this->days; $k++){
    $j++;
    if($k==date('d'))
     echo '<td class="fontb">'.$k.'</td>';
    else
     echo '<td>'.$k.'</td>';
    if($j%7==0)
     echo '</tr><tr>';
   }
   //后面几个空格
   while($j%7!==0){
    echo '<td> </td>';
    $j++;
   }
   echo '</tr>';
  }
  private function prevYear($year, $month){
   $year=$year-1;
   if($year < 1970)
    $year = 1970;
   return "year={$year}&month={$month}"; 
  }

  private function prevMonth($year, $month){
   if($month == 1) {
    $year = $year -1;
    if($year < 1970)
     $year = 1970;
    $month=12;
   }else{
    $month--;
   }
   return "year={$year}&month={$month}"; 
  }

  private function nextYear($year, $month){
   $year = $year + 1;
   if($year > 2038)
    $year = 2038;
   return "year={$year}&month={$month}"; 
  }

  private function nextMonth($year, $month){
   if($month==12){
    $year++;
    if($year > 2100)
     $year=2100;
    $month=1;
   }else{
    $month++;
   }
   
   return "year={$year}&month={$month}"; 
  }
  private function chageDate($url=""){
   echo '<tr>';
   echo '<td><a href="?'.$this->prevYear($this->year, $this->month).'">'.'<<'.'</a></td>';
   echo '<td><a href="?'.$this->prevMonth($this->year, $this->month).'">'.'<'.'</a></td>';
   echo '<td colspan="3">';
   echo '<form>';
   echo '<select name="year" onchange="window.location=\''.$url.'?year=\'+this.options[selectedIndex].value+\'&month='.$this->month.'\'">';
   for($sy=1970; $sy <= 2100; $sy++){
    $selected = ($sy==$this->year) ? "selected" : "";
    echo '<option '.$selected.' value="'.$sy.'">'.$sy.'</option>';
   }
   echo '</select>';
   echo '<select name="month"  onchange="window.location=\''.$url.'?year='.$this->year.'&month=\'+this.options[selectedIndex].value">';
   for($sm=1; $sm<=12; $sm++){
    $selected1 = ($sm==$this->month) ? "selected" : "";
    echo '<option '.$selected1.' value="'.$sm.'">'.$sm.'</option>';
   }
   echo '</select>';
   echo '</form>'; 
   echo '</td>';

   echo '<td><a href="?'.$this->nextYear($this->year, $this->month).'">'.'>>'.'</a></td>';
   echo '<td><a href="?'.$this->nextMonth($this->year, $this->month).'">'.'>'.'</a></td>';
   echo '</tr>';
  }
 }
?>
 

 test.php

 

 <style>
 table {
  border:1px solid #050;
 }
 .fontb {
  color:white;
  background:blue;
 }
 
 th {
  width:30px;
 }
 td,th {
  height:30px;
  text-align:center;
 }
 form {
  margin:0px;
  padding:0px;
 }
</style>
<?php
 include "calendar.class.php";
 $calendar=new Calendar;
 $calendar->out();
?>
 
PHP 相关文章推荐
常用的php对象类型判断
Aug 27 PHP
PHP 反射机制实现动态代理的代码
Oct 22 PHP
php 输出双引号&quot;与单引号'的方法
May 09 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
php递归创建目录的方法
Feb 02 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
PHP中PDO事务处理操作示例
May 02 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 PHP
php使用qr生成二维码的示例分享
Jan 20 #PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 #PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 #PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 #PHP
php解析url的三个示例
Jan 20 #PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 #PHP
php fsockopen解决办法 php实现多线程
Jan 20 #PHP
You might like
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php class类的用法详细总结
2013/10/17 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
php无限极分类实现方法分析
2019/07/04 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中itertools模块用法详解
2014/09/25 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python中单、双下划线的区别总结
2017/12/01 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
学生手册评语
2014/05/05 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
村级个人对照检查材料
2014/08/22 职场文书
购房意向书
2014/08/30 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
工程款申请报告
2015/05/15 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL