Ir para conteúdo
Fórum Script Brasil

Weslley Brum

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Weslley Brum

Weslley Brum's Achievements

0

Reputação

  1. Boa tarde a todos, sou iniciante em programação com PHP e estou tentando fazer um calculo porem, meu código calcula e grana no banco de dados a hora errada. vou deixar meu código abaixo e espero que alguém me ajude . <?php include('includes/db_config.php'); // Inicializar a variável $result $result = ""; $data = json_decode(file_get_contents("php://input"), true); if (isset($data['matricula']) && isset($data['nextField'])) { $matricula = $data['matricula']; $nextField = $data['nextField']; try { // Configuração do fuso horário para Brasília date_default_timezone_set('America/Sao_Paulo'); $query = "SELECT * FROM registros_ponto WHERE matricula = :matricula AND DATE(data_registro) = CURDATE()"; $statement = $pdo->prepare($query); $statement->bindParam(':matricula', $matricula); $statement->execute(); if ($row = $statement->fetch(PDO::FETCH_ASSOC)) { $fieldsToUpdate = ['entrada1', 'saida1', 'entrada2', 'saida2']; $fieldToUpdate = null; foreach ($fieldsToUpdate as $field) { if (empty($row[$field])) { $fieldToUpdate = $field; break; } } if ($fieldToUpdate !== null) { // Obter a data e hora atual no fuso horário de Brasília $now = new DateTime("now", new DateTimeZone("America/Sao_Paulo")); $dataHora = $now->format("Y-m-d H:i:s"); // Atualiza o campo com a hora no fuso horário de Brasília $updateQuery = "UPDATE registros_ponto SET $fieldToUpdate = :dataHora WHERE matricula = :matricula AND DATE(data_registro) = CURDATE()"; $updateStatement = $pdo->prepare($updateQuery); $updateStatement->bindParam(':matricula', $matricula); $updateStatement->bindParam(':dataHora', $dataHora); $updateStatement->execute(); // Calcular horas trabalhadas $entrada1 = strtotime($row['entrada1']); $saida1 = strtotime($row['saida1']); $entrada2 = strtotime($row['entrada2']); $saida2 = strtotime($row['saida2']); // Calcular as durações dos períodos $duracao1 = $saida1 - $entrada1; $duracao2 = $saida2 - $entrada2; // Calcular as horas trabalhadas $horasTrabalhadasSegundos = $duracao1 + $duracao2; $horasTrabalhadas = gmdate("H:i:s", $horasTrabalhadasSegundos); // Calcular horas de atraso $jornadaTrabalhoSegundos = strtotime("09:00:00"); $horasAtrasoSegundos = $jornadaTrabalhoSegundos - $horasTrabalhadasSegundos; // Verificar se há atraso com base na tolerância if ($horasAtrasoSegundos > 0) { $horasAtraso = gmdate("H:i:s", $horasAtrasoSegundos); } else { $horasAtraso = ""; // "00:00:00" Não há atraso } // Calcular horas extras $horasExtrasSegundos = max($horasTrabalhadasSegundos - $jornadaTrabalhoSegundos, 0); $horasExtras = gmdate("H:i:s", $horasExtrasSegundos); // Atualizar o campo horas_trabalhadas $updateHorasQuery = "UPDATE registros_ponto SET horas_trabalhadas = :horasTrabalhadas WHERE matricula = :matricula AND DATE(data_registro) = CURDATE()"; $updateHorasStatement = $pdo->prepare($updateHorasQuery); $updateHorasStatement->bindParam(':matricula', $matricula); $updateHorasStatement->bindParam(':horasTrabalhadas', $horasTrabalhadas); $updateHorasStatement->execute(); // Atualizar o campo horas_atraso $updateAtrasoQuery = "UPDATE registros_ponto SET horas_atraso = :horasAtraso WHERE matricula = :matricula AND DATE(data_registro) = CURDATE()"; $updateAtrasoStatement = $pdo->prepare($updateAtrasoQuery); $updateAtrasoStatement->bindParam(':matricula', $matricula); $updateAtrasoStatement->bindParam(':horasAtraso', $horasAtraso); $updateAtrasoStatement->execute(); // Atualizar o campo horas_extras $updateExtrasQuery = "UPDATE registros_ponto SET horas_extras = :horasExtras WHERE matricula = :matricula AND DATE(data_registro) = CURDATE()"; $updateExtrasStatement = $pdo->prepare($updateExtrasQuery); $updateExtrasStatement->bindParam(':matricula', $matricula); $updateExtrasStatement->bindParam(':horasExtras', $horasExtras); $updateExtrasStatement->execute(); // Exibir informações sobre o atraso e horas extras $result = "<p class='sucesso'>Registro atualizado com sucesso!</p>"; } else { $result = "Excedeu o número de registros do dia."; } } } catch (PDOException $e) { $result = "Erro ao salvar registro: " . $e->getMessage(); } } else { $result = "Dados de entrada inválidos."; } echo $result; // Retorna a mensagem de sucesso ou erro ?>
×
×
  • Criar Novo...