如何根据数据库表php中存储的信息更改表的单元格颜色? [英] How to change cell color of table based on information stored in database table php?

查看:73
本文介绍了如何根据数据库表php中存储的信息更改表的单元格颜色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用一种考勤系统,其中用户标记了他的出勤. 在同一页面上,我有一个显示当前月份的日历.

I am working on attendance system where user marks his attendance. On the same page, I have an calendar showing current month.

我要更改表格单元格的颜色

I want to change table cell color

1."PRESENT"为绿色

1.Green for 'PRESENT'

2.黄色代表离开"

2.Yellow for 'LEAVE'

3.红色代表缺席"

3.Red for 'ABSENT'

我正在寻找您的帮助,因为我必须尽快将自己的项目提交大学. 寻找您的帮助 `

I am looking up for some help from you as i have to submit my project in college very soon. Looking for your kind help `

这是基本设计

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中存储的信息更改表的单元格颜色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆