php - 如何根据数据库表php中存储的信息更改表的单元格颜色?

标签 php jquery mysql

我正在开发考勤系统,用户可以在其中标记他的考勤。 在同一页面上,我有一个显示当前月份的日历。

我想更改表格单元格颜色

1.绿色表示“当前”

2.黄色表示“离开”

3.红色表示“缺席”

我正在寻求您的帮助,因为我必须很快在大学提交我的项目。 寻求您的帮助 `

这是basic design

class Calendar {


public function __construct(){
    $this->naviHref = htmlentities($_SERVER['PHP_SELF']);
}

/********************* PROPERTY ********************/
private $dayLabels = array("Mon","Tue","Wed","Thu","Fri","Sat","Sun");

private $currentYear=0;

private $currentMonth=0;

private $currentDay=0;

private $currentDate=null;

private $daysInMonth=0;

private $naviHref= null;

/********************* PUBLIC **********************/

/**
 * print out the calendar
 */
public function show() {
     $year == null;

     $month == null;

    if(null==$year&&isset($_GET['year'])){

        $year = $_GET['year'];

    }else if(null==$year){

        $year = date("Y",time());

    }

    if(null==$month&&isset($_GET['month'])){

        $month = $_GET['month'];

    }else if(null==$month){

        $month = date("m",time());

    }

    $this->currentYear=$year;

    $this->currentMonth=$month;

    $this->daysInMonth=$this->_daysInMonth($month,$year);

    $content='<div id="calendar">'.
        '<div class="box">'.
        $this->_createNavi().
        '</div>'.
        '<div class="box-content">'.
        '<ul class="label">'.$this->_createLabels().'</ul>';
    $content.='<div class="clear"></div>';
    $content.='<ul class="dates">';

    $weeksInMonth = $this->_weeksInMonth($month,$year);
    // Create weeks in a month
    for( $i=0; $i<$weeksInMonth; $i++ ){

        //Create days in a week
        for($j=1;$j<=7;$j++){
            $content.=$this->_showDay($i*7+$j);
        }
    }

    $content.='</ul>';

    $content.='<div class="clear"></div>';

    $content.='</div>';

    $content.='</div>';
    return $content;
}

/********************* PRIVATE **********************/
/**
 * create the li element for ul
 */
private function _showDay($cellNumber){

    if($this->currentDay==0){

        $firstDayOfTheWeek = date('N',strtotime($this->currentYear.'-'.$this->currentMonth.'-01'));

        if(intval($cellNumber) == intval($firstDayOfTheWeek)){

            $this->currentDay=1;

        }
    }

    if( ($this->currentDay!=0)&&($this->currentDay<=$this->daysInMonth) ){

        $this->currentDate = date('Y-m-d',strtotime($this->currentYear.'-'.$this->currentMonth.'-'.($this->currentDay)));

        $cellContent = $this->currentDay;

        $this->currentDay++;

    }else{

        $this->currentDate =null;

        $cellContent=null;
    }


    return '<li id="li-'.$this->currentDate.'" class="'.($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).
    ($cellContent==null?'mask':'').'">'.$cellContent.'</li>';
}

/**
 * create navigation
 */
private function _createNavi(){

    $nextMonth = $this->currentMonth==12?1:intval($this->currentMonth)+1;

    $nextYear = $this->currentMonth==12?intval($this->currentYear)+1:$this->currentYear;

    $preMonth = $this->currentMonth==1?12:intval($this->currentMonth)-1;

    $preYear = $this->currentMonth==1?intval($this->currentYear)-1:$this->currentYear;

    return
        '<div class="header">'.
        '<a class="prev" href="'.$this->naviHref.'?month='.sprintf('%02d',$preMonth).'&year='.$preYear.'">Prev</a>'.
        '<span class="title">'.date('Y M',strtotime($this->currentYear.'-'.$this->currentMonth.'-1')).'</span>'.
        '<a class="next" href="'.$this->naviHref.'?month='.sprintf("%02d", $nextMonth).'&year='.$nextYear.'">Next</a>'.
        '</div>';
}

/**
 * create calendar week labels
 */
private function _createLabels(){

    $content='';

    foreach($this->dayLabels as $index=>$label){

        $content.='<li class="'.($label==6?'end title':'start title').' title">'.$label.'</li>';

    }

    return $content;
}



/**
 * calculate number of weeks in a particular month
 */
private function _weeksInMonth($month=null,$year=null){

    if( null==($year) ) {
        $year =  date("Y",time());
    }

    if(null==($month)) {
        $month = date("m",time());
    }

    // find number of days in this month
    $daysInMonths = $this->_daysInMonth($month,$year);

    $numOfweeks = ($daysInMonths%7==0?0:1) + intval($daysInMonths/7);

    $monthEndingDay= date('N',strtotime($year.'-'.$month.'-'.$daysInMonths));

    $monthStartDay = date('N',strtotime($year.'-'.$month.'-01'));

    if($monthEndingDay<$monthStartDay){

        $numOfweeks++;

    }

    return $numOfweeks;
}

/**
 * calculate number of days in a particular month
 */
private function _daysInMonth($month=null,$year=null){

    if(null==($year))
        $year =  date("Y",time());

    if(null==($month))
        $month = date("m",time());

    return date('t',strtotime($year.'-'.$month.'-01'));
}

`

最佳答案

定义一个颜色数组,如下所示:

$colors = array(
  'P' => 'green',
  'L' => 'yellow',
  'A' => 'red',
);

并像这样访问它:

<span style="color:<?=$colors[$attendance->AttType];?>;">$attendance->AttType</span>

关于php - 如何根据数据库表php中存储的信息更改表的单元格颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716586/

相关文章:

javascript - 功能未按预期响应

javascript - 如何禁用 get 方法中的提交按钮?

php file_put_contents 偶尔没有这样的文件或目录

php - 用于数据库设置脚本的 SQL 或 sql/PHP

mysql - 对 MySQL 语句中的分组行进行排序

php - 寻找所有可能的序列

jquery - $.css ('transition' ,'value' ) 不起作用

javascript - 选择特定选项后禁用 select2 上的选项

jQuery 插件 vs UI vs 一些替代方案

php - mysql 表中保存重复行的问题