【问题标题】:php monthly attendance tablephp月考勤表
【发布时间】:2017-05-17 03:35:43
【问题描述】:

我正在尝试创建一个月度考勤系统,该系统显示员工每个月每天工作了多少小时。表格如下所示-

php 代码 -

    $s = $_GET['s'];
$y = date('Y');

$fdt = date('Y-m-d',strtotime($y.'-'.$s.'-'.'01'));
$ldt = date('Y-m-t',strtotime($y.'-'.$s.'-'.'01'));
$nd = date('t',strtotime($y.'-'.$s.'-'.'01'));
$stmt = $pdo->prepare("SELECT emp_id_fk, Resource_Name , ROUND(SUM(TIME_TO_SEC(TIMEDIFF(COALESCE(`end_time`,NOW()),`start_time`)))/3600,1) as Hrs, CAST(`start_time` AS DATE) as cd FROM `attendance` LEFT JOIN resource ON attendance.`emp_id_fk` = resource.`Resource_ID` WHERE CAST(`start_time` AS DATE) BETWEEN :s AND :e GROUP BY emp_id_fk, Resource_Name, CAST(`start_time` AS DATE)");

$stmt->bindParam(':s', $fdt);
$stmt->bindParam(':e', $ldt);

$stmt->execute();
$data = $stmt->fetchAll();
print_r($data);
$ret = "";
$id = array_column($data,'emp_id_fk');
$name = array_column($data,'Resource_Name');
$id = array_unique($id);
$name = array_unique($name);

for($i=0;$i<sizeof($id); $i++){
    $ret.='<tr>
            <td>'.$name[$i].'</td>';

        for($j=0; $j<sizeof($nd); $j++){
            $cd = date('Y-m-d',strtotime($y.'-'.$s.'-'.($j+1)));
            $d = date('l',strtotime($y.'-'.$s.'-'.($j+1)));

            if($d != 'Sunday' && $d != 'Saturday'){

                for($k=0; $k<sizeof($data); $k++){

                    if( $id[$i] == $data[$k]['emp_id_fk']){

                        if($cd == $data[$k]['cd']){
                            $ret.='<td>'.($data[$k]['Hrs']).'</td>';
                        }else{
                            $ret.='<td>0</td>';
                        }
                    }
                }
            }

        }
    $ret.='</tr>';
}

echo $ret;

如图所示,第二个 forloop($j 循环) 只迭代一次,因为它应该根据月份迭代 28,30 或 31 次。我的预期输出是,对于每个员工来说,一周中的每一天都应该有一个值,如果没有特定日期的记录,它应该显示 0。

提前致谢。

【问题讨论】:

标签: php html


【解决方案1】:

PHP 函数 sizeof() 是 count() 的别名。 函数 count() 是对数组中的所有元素,或者对象中的某物进行计数。

变化:

for($j=0; $j<sizeof($nd); $j++){

收件人:

for($j=1; $j<=$nd; $j++) {

【讨论】:

  • 不客气!如果那天我在代码中太多,我也会被这样的事情难住。有时,拥有另一双眼睛是件好事。 :-)
猜你喜欢
  • 1970-01-01
  • 2016-07-20
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
相关资源
最近更新 更多