Fiamenghi 0 Denunciar post Postado Novembro 4, 2009 Pessoal preciso de ajuda. Tenho tres componentes select em meu form, sao eles: hora inicial, intervalo, hora final. Através deles preciso calcular a hora trabalhada do funcionario. Como fazer isso em PHP? Compartilhar este post Link para o post Compartilhar em outros sites
Ederjsantos 0 Denunciar post Postado Novembro 4, 2009 voce quer um relogio de ponto?? Compartilhar este post Link para o post Compartilhar em outros sites
Fiamenghi 0 Denunciar post Postado Novembro 4, 2009 voce quer um relogio de ponto?? a pessoa vai informar esses horarios na tela, eu vou ter que calcular e gravar no banco no campo horasubtotal. somente o calculo que nao sei fazer. Compartilhar este post Link para o post Compartilhar em outros sites
lucasmartins 6 Denunciar post Postado Novembro 4, 2009 Bom, primeiramente, é melhor que o horario esteja em formato de 24hrs... Daí você poderia fazer assim: <?php $total_horas = $hr_final - $hr_inicial; $horas_trabalhadas = $total_horas - $intervalo; ?> ALTERNATIVA SIMPLES: $horas_trabalhadas = bcsub($hr_final, $hr_inicial, 2)-$intervalo; $horas_trabalhadas guardará o total de horas que o peão trabalhou (tirando a hora de intervalo né). Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Fiamenghi 0 Denunciar post Postado Novembro 4, 2009 Bom, primeiramente, é melhor que o horario esteja em formato de 24hrs... Daí você poderia fazer assim: <?php $total_horas = $hr_final - $hr_inicial; $horas_trabalhadas = $total_horas - $intervalo; ?> ALTERNATIVA SIMPLES: $horas_trabalhadas = bcsub($hr_final, $hr_inicial, 2)-$intervalo; $horas_trabalhadas guardará o total de horas que o peão trabalhou (tirando a hora de intervalo né). Abraços Lucas, nao ta dando certo, veja o formato que estou gravando no banco: 07:30:00 O tipo do campo no mysql é TIME, será que é o formato o problema? valew. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_S_Luz 2 Denunciar post Postado Novembro 4, 2009 Opa...e aí Fiamenghi só de boa??? Acho que não né...tem esse problema aqui para você resolver né....rsss Recentemente tive que fazer um sistema de controle de horas extras de uma empresa de coletivo...então...vou tentar resolver o seu problema ok. Bom...irei criar um script aqui....e daki a pouco irei posta-lo para você beleza.... Aguarde aí.... Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_S_Luz 2 Denunciar post Postado Novembro 4, 2009 <?php /*Bom...vamos lá. Ok...vamos entrar com os respectivos dados.*/ echo "<br>Hora Inicial = ".$horaInicial = "08:00:00"; echo "<br>Hora Final = ".$horaFinal = "18:00:00"; echo "<br>Intervalo = ".$intervalo = "02:00:00"; echo "<br>Intervalo = ".$horaAuxuliar = "00:00:00"; /* Bom...primeiramente...você terá que converter esses valores com a função strtotime */ $horaInicial = strtotime($horaInicial); $horaFinal = strtotime($horaFinal); $intervalo = strtotime($intervalo); $horaAuxuliar = strtotime($horaAuxuliar); /* Bom...agora é só dividir os valores...e você terá o total de segundos trabalhados */ echo "<br><br>Total de Segundos trabalhados = ".$totalSegundos = ($horaFinal - $horaInicial); /* Observe que...já que estamos falando de segundos e você quer saber o total de horas trabalhas...então...você terá que dividir pela quantidade de segundos existente em 1 hora...que no caso é 3600 segundos ok*/ echo "<br>Total de Horas Trabalhadas = ".$totalHora = $totalSegundos / 3600; /*E não podemos esquecer a hora de intervalo né...observe que criei uma hora auxiliar para que possa ser interagaida com ele beleza...*/ echo "<br>Segundos Intervalor = ".$segundosIntervalo = $intervalo - $horaAuxuliar; echo "<br>Intervalo = ".$horaIntervalo = $segundosIntervalo /3600; /* E finalmente para que você saiba realmente quantas horas o fulano trabalhou...de acordo com as horas inseridas pelo usuario é claro...*/ echo "<br>Total de Horas trabalhadas menos o intervalo = ". $horasTrabalhadas = $totalHora - $horaIntervalo; $segundosTotal = $totalSegundos - $segundosIntervalo; /*E para que tudo saia num formato bunitinhu...te messa função aí para converter a parada ok...*/ echo "<br>Horas = ".$hora = converterHora($segundosTotal); function converterHora($total_segundos){ $hora = sprintf("%02s",floor($total_segundos / (60*60))); $total_segundos = ($total_segundos % (60*60)); $minuto = sprintf("%02s",floor ($total_segundos / 60 )); $total_segundos = ($total_segundos % 60); $hora_minuto = $hora.":".$minuto; return $hora_minuto; } ?>Agora é só adaptar ao seu codigo aí beleza...Bom...espero te te ajude aí... Abraços amigo... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Fiamenghi 0 Denunciar post Postado Novembro 5, 2009 Muito obrigado Roberto, deu certo o código. Ficou perfeito e de fácil entendimento, estou começando em PHP e por isso estou apanhando um pouco...rsrsrs Valew mesmo pela ajuda. Forte abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_S_Luz 2 Denunciar post Postado Novembro 5, 2009 Outro forte abraço...precisando estamos aqui beleza. Boa sorte e seja bem vindo ao PHP (você irá apanhar um pouco apenas no inicio...mas logo pegará o conceito da coisa...porém...sempre irá aparecer algo novo para você fazer...portanto...estude...e quando não souber...peça ajuda...rssss). http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Sucesso amigo!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites