D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys_ant
/
Filename :
teste_agenda.php
back
Copy
<?php $conn = new mysqli("localhost:3308","root","","dados_mont_blanc"); $sql = " SELECT d.n_obra obra, o.obra nome_obra, a.N_tarefa id, a.tarefa, a.funcionario, a.situacao, date_format(a.d_inicio, '%Y-%m-%d') inicio_raw, date_format(a.d_final, '%Y-%m-%d') fim_raw, date_format(a.d_inicio, '%d/%m/%Y') inicio, date_format(a.d_final, '%d/%m/%Y') fim FROM tblagendatarefa a inner join tblagendadados d on a.ID_Dados = d.N_dados inner join tblobra o on d.N_Obra = o.N_Obra where a.id_dados in(91700,91701,92272,92273) order by a.N_tarefa"; $result = $conn->query($sql); $tarefas = []; $obras = []; while($row = $result->fetch_assoc()){ $tarefas[] = $row; $obras[$row['obra']]['nome'] = $row['nome_obra']; $obras[$row['obra']]['tarefas'][] = $row; } $data_inicio = "2025-09-26"; $data_fim = "2025-10-25"; $inicioPeriodo = new DateTime($data_inicio); $fimPeriodo = new DateTime($data_fim); $fimPeriodo->modify('+1 day'); function getDiasUteis(DateTime $inicio, DateTime $fim): array { $periodo = new DatePeriod($inicio, new DateInterval('P1D'), $fim); $dias = []; foreach ($periodo as $data) { $dia_semana = (int)$data->format('w'); if ($dia_semana !== 0 && $dia_semana !== 6) { $dias[] = clone $data; } } return $dias; } $dias_uteis = getDiasUteis($inicioPeriodo,$fimPeriodo); $dias_semana_pt = ['dom','seg','ter','qua','qui','sex','sab']; ?> <style> table{ border-collapse:collapse; font-size:12px; width:100%; } td,th{ border:1px solid #999; padding:1px; text-align:center; min-width:18px; } /* coluna tarefa sem quebra */ td:nth-child(2), th:nth-child(2){ white-space:nowrap; max-width:200px; overflow:hidden; text-overflow:ellipsis; } /* preenchimento das tarefas */ .ativo{ background:#777; } /* cabeçalho datas */ .data-header{ height:60px; padding:2px; } /* quebra interna das linhas */ .data-header span{ display:block; line-height:1.1; } .data-dia{ font-weight:bold; } </style> <table> <thead> <tr> <?php foreach($obras as $obra_id=>$dados){ $minData=null; $maxData=null; foreach($dados['tarefas'] as $t){ $dIni=new DateTime($t['inicio_raw']); $dFim=new DateTime($t['fim_raw']); if(!$minData || $dIni<$minData) $minData=$dIni; if(!$maxData || $dFim>$maxData) $maxData=$dFim; } if($minData<$inicioPeriodo) $minData=clone $inicioPeriodo; if($maxData>$fimPeriodo) $maxData=clone $fimPeriodo; $dias_uteis_obra=getDiasUteis($minData,(clone $maxData)->modify('+1 day')); $colspan=count($dias_uteis ) + 6; echo "<th colspan='$colspan'>Obra: {$obra_id} - {$dados['nome']}</th>"; } ?> </tr> <tr> <th>ID</th> <th>Tarefa</th> <th>Funcionário</th> <th>Situação</th> <th>Início</th> <th>Fim</th> <?php setlocale(LC_TIME, 'pt_BR.utf8'); foreach($dias_uteis as $data){ $indice=(int)$data->format('w'); $dia_semana=$dias_semana_pt[$indice]; $dia=$data->format('d'); $mes=$data->format('m'); echo "<th class='data-header'> <span>$dia_semana</span> <span class='data-dia'>$dia</span> <span>$mes</span> </th>"; } ?> </tr> </thead> <tbody> <?php foreach($tarefas as $t): ?> <tr> <td><?= htmlspecialchars($t['id']) ?></td> <td><?= htmlspecialchars($t['tarefa']) ?></td> <td><?= htmlspecialchars($t['funcionario']) ?></td> <td><?= htmlspecialchars($t['situacao']) ?></td> <td><?= (new DateTime($t['inicio_raw']))->format("d/m/Y") ?></td> <td><?= (new DateTime($t['fim_raw']))->format("d/m/Y") ?></td> <?php $inicioTarefa=new DateTime($t['inicio_raw']); $fimTarefa=new DateTime($t['fim_raw']); foreach($dias_uteis as $data){ if($data >= $inicioTarefa && $data <= $fimTarefa){ echo "<td class='ativo'></td>"; }else{ echo "<td></td>"; } } ?> </tr> <?php endforeach; ?> </tbody> </table>