Calcular hora, minuto, segundo no while


Dúvidas sobre MySQL, PHPMyAdmin, SQL e assuntos relacionado a banco de dados.

Moderador: web

Logar para Responder
Logar para Perguntar

 Calcular hora, minuto, segundo no while
Por tajiri 293 post(s) Offline SUPER VETERANO  Masculino 4p em Sex Jun 12, 2009 7:52 pm



:help pessoal, to com dor :eek de cabeça já, ja pesquisei no google todas as primeira páginas com resultados sobre o assunto, mas não conssegui procurar algo que me antenda, me da uma luz, como que eu faço para somar as horas, minutos e segundo desta base de dados,
http://novooriente.net/testes2009/dados.gif
explicando a base de dados:
cod_o2= esse é so para definir o numero d a operação, operação 1,2,3,4,5....
cod_funcionario= esse é o codigo do funcionario, onde ele vai buscar o valor em outra tabela para buscar o nome do funcionario.
hora_trabalhada=não tenho definição para esse campo ainda, mas ele está ai para eu usar mais tarde talvez.
-----
aqui começa o pepino!
entrada1= horário que o funcionario entrou na parte da manha (das 8:00:00 as 12:00:00 horas)
saida1= horário que o funcionario saiu na parte da manha. (das 8:00:00 as 12:00:00 horas)

entrada2=horário que o funcionario entrou na parte da tarde. (das 13:00:00 as 18:00:00 horas)
saida2=horário que o funcionario entro na parte da tarde. (das 13:00:00 as 18:00:00 horas)
-----
a soma do horario segue esta regra, é como um relogio ponto. o funcionario chega, bate o cartao e registra o horario no banco de dados(entrada1), ai chega na hora do almoço ele bate de novo o cartao e registra no db (saida1), ai ele chega do almoço e registra no db (entrada2) e quando sai registra no db (saida2)
a logica seria essa, até entao teria que somar as 4 horas do primeiro turno e mais 4 horas do segundo turno e tudo isso saindo de um resultado do while, OBS:esse resultado esta funcionado corretamente, so falata saber como somar as horas, minutos e segundos, com base no resultado do while.



0 mais

34 resposta(s)

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Sex Jun 12, 2009 8:00 pm


Isso é mysql

MOVIDO: php para mysql

0 mais

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Sex Jun 12, 2009 8:04 pm


printa ai como está saindo o resultado na tela, das horas.

0 mais

 Calcular hora, minuto, segundo no while
Por tajiri 293 post(s) Offline SUPER VETERANO  Masculino 4p em Sex Jun 12, 2009 8:15 pm


segue a URL com o print do resultado:

http://novooriente.net/testes2009/dados2.gif

0 mais

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Sex Jun 12, 2009 8:38 pm


Será sempre hora em ponto?

porque você pode fazer o seguinte

Selecionar - Numerar
$entrada "08:00:00";
$saida "12:00:00";
$hora_trabalhada_manha $saida-$entrada;
echo $hora_trabalhada_manha


Que irá retornar 4

0 mais

 Calcular hora, minuto, segundo no while
Por tajiri 293 post(s) Offline SUPER VETERANO  Masculino 4p em Sex Jun 12, 2009 9:06 pm


não pode variar em hora, minutos e segundos!

0 mais

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Sex Jun 12, 2009 10:04 pm


Tem uma função no mysql que pode ajudar, subtime() essa função calcula a diferença entre as horas

Fiz uma tabela aqui com 2 valores

Selecionar - Numerar
(`var1`, `var2`)
('10:20:00', '11:00:00');

No caso quero saber a diferença entre os 2 horários, ai fiz o seguinte

Selecionar - Numerar
SUBTIME(var2,var1) AS resultado

No while eu adiciono: $resultado, que vai retornar: 00:40:00

0 mais

 Calcular hora, minuto, segundo no while
Por tajiri 293 post(s) Offline SUPER VETERANO  Masculino 4p em Dom Jun 14, 2009 12:52 am


opa, cara esse ta dificil de entender, é que nunca fiz isso, e me parece que mecher com calculo de hora é duro a queda! :-)
mudei uma coisa, agora eu consegui criar um script que entra com a hora ai ele sai assim na tabela

cod_funcionario | turno1 | turno2
-----------------------------------------------------------------
1 | 04:00:00 | 00:00:00
1 | 04:00:00 | 04:00:00
1 | 04:00:00 | 00:00:00

até aqui tudo bem!

agora ele tem que somar o turno 1 e 2 do resultado while e dar o total de horas no final de cada coluna turno1 e turno2.
Depois somar os dois subtotais e dar um resultado total, expliquei isso só para vc entender a logica.

obs: nesse resultado while, eu defino por data, isso esta ok e na linha do while esta assim:

Selecionar - Numerar
<?php
while($dados mysql_fetch_array($res2)) { $contador ++;
extract($dados);
?>


o que eu nao entendi é aquela SUBTIME(var2,var1) AS resultado como devo usar isso? eu devo criar algo assim:

Selecionar - Numerar
<?
$sql mysql_query("SUBTIME(var2,var1) AS resultado ");
$dados=mysql_fetch_array($sql);
?>


cara desculpa mesmo, mas nunca mexi com soma de hora, só em valor monetario, e numeros simples... :shock

0 mais

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Dom Jun 14, 2009 9:28 am


Vamos supor que a pessoa trabalho no turno da manhã, então você tem hora de entrada ( var1 ) e hora de saída ( var2 )

var1 = 08:30:00
var2 = 12:00:00


Isso dá 03:30:00 de hora trabalhada, portanto, se você vai ter uma coluna no while para hora trabalhada seu select seria:

Selecionar - Numerar
SELECT var1, var2, SUBTIME(var2,var1) AS resultado FROM suatabela

Dentro do while você teria

Selecionar - Numerar
echo "$var1$var2$resultado<br>"


0 mais

 Calcular hora, minuto, segundo no while
Por tajiri 293 post(s) Offline SUPER VETERANO  Masculino 4p em Dom Jun 14, 2009 4:51 pm


opa, velho ai no codigo acima vc ta me mostrando o uso dos SUBTIME, é para diminuir né? e se eu fosse somar as horas, qual função devo usar?

obs: velho olha só eu vou dar uma sugestão de artigo para vc, é que não tem nada web que fale sobre isso, então encontrei algo em ingles, e coloquei o post para vc ver, é um codigo bem simples para somar horas e dar um resultado acumulativo de horas, e acho que para esta aplicação vc poderia ter algo parecido, sei que o forum não tem esse intuito, mas fica a seu critério se quiser tirar ou não esta página, como vc me ajudou muito em varias coisas, acho que vc deveria postar algo assim para compartilhar...

Selecionar - Numerar
<?
$times = array(
  "23:00:00"//aqui vai o valor da sua tabela
  "08:00:00"//aqui vai o valor da sua tabela
);

$seconds 0;

foreach ( $times as $time ){
   list( $g$i$s ) = explode':'$time );
   $seconds += $g 3600;
   $seconds += $i 60;
   $seconds += $s;
}

$hours floor$seconds 3600 );
$seconds -= $hours 3600;
$minutes floor$seconds 60 );
$seconds -= $minutes 60;

echo "{$hours}:{$minutes}:{$seconds}";
?>



0 mais

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Dom Jun 14, 2009 5:05 pm


O fórum é para isso mesmo, compartilhar conhecimento.

Quanto a dúvida, se você já tem as horas trabalhadas nos 2 perídos, você pode trabalhar com uma função. Montei uma base com esse script que você passou.

A função

O objetivo da função é pegar as horas trabalhadas, somar uma com a outra, e printar o resultado.
Você coloca essa função fora do while.

Selecionar - Numerar
<?
function soma_horas($hora1$hora2) {
$times = array(
$hora1//aqui vai o valor da sua tabela
$hora2//aqui vai o valor da sua tabela
);
$seconds 0;
foreach ( $times as $time ){
list( $g$i$s ) = explode':'$time );
$seconds += $g 3600;
$seconds += $i 60;
$seconds += $s;
}
$hours floor$seconds 3600 );
$seconds -= $hours 3600;
$minutes floor$seconds 60 );
$seconds -= $minutes 60;

if(strlen($minutes)==1) {
$minutes "0".$minutes;
}
if(strlen($seconds)==1) {
$seconds "0".$seconds;
}
return "{$hours}:{$minutes}:{$seconds}";
}
?>


A chamada para a função é a seguinte:

Veja um exemplo * Teste só a função e a chamada antes de usar no seu sistema

Selecionar - Numerar
<?php
echo soma_horas("04:55:00""04:00:01");
?>


No caso ai, a primeira é a hora trabalhada pela manhã, a segunda pela tarde.

No uso, você irá chamar esse echo dentro do seu while, onde for mostrar a soma das horas.

0 mais

 Calcular hora, minuto, segundo no while
Por tajiri 293 post(s) Offline SUPER VETERANO  Masculino 4p em Dom Jun 14, 2009 8:44 pm


opa, cara deu certinho :) so falta uma coisa, como que eu somo o total do turno1 e turno2 de todos os dias que forem selecionados no while por data, eu printei ai para entender melhor!

http://novooriente.net/testes2009/relogioponto2.gif

valew velho!

0 mais

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Dom Jun 14, 2009 9:36 pm


Isso é meio uma gambiarra, mas deve servir

Antes do while coloca o seguinte

Selecionar - Numerar
$times = array(); 

Com isso estamos iniciando o array $times

Esse valor em vermelho da figura, que é o total de hora trabalhada de um usuário vai ter que entrar como valor no array, portanto, dentro do while fica o seguinte:

Selecionar - Numerar
$times[] = "$variavel_do_total"

Essa variável vai conter o valor do total "mostrado em vermelho"

Ai fora do while, você chama o seguinte código

Selecionar - Numerar
$seconds 0;
foreach ( $times as $time ){
list( $g$i$s ) = explode':'$time );
$seconds += $g 3600;
$seconds += $i 60;
$seconds += $s;
}
$hours floor$seconds 3600 );
$seconds -= $hours 3600;
$minutes floor$seconds 60 );
$seconds -= $minutes 60;
if(strlen($minutes)==1) {
$minutes "0".$minutes;
}
if(strlen($seconds)==1) {
$seconds "0".$seconds;
}
echo "{$hours}:{$minutes}:{$seconds}"



0 mais

 Calcular hora, minuto, segundo no while
Por tajiri 293 post(s) Offline SUPER VETERANO  Masculino 4p em Dom Jun 14, 2009 10:54 pm


velho me diz uma coisa essa variavel que vc ta me dizendo $times[] = "$variavel_do_total"; por acaso seria isso $times[] = "$dados[turno1],$dados[turno2] "; pois se for, ele esta dando uns valores estranhos (5:30:00 9:45:50 13:45:50 ), e se for apenas colocar o $times[] = "$variavel_do_total"; ele sempre esta voltando 00:00:00? :-x

0 mais

 Calcular hora, minuto, segundo no while
Por web 15111 post(s) Offline ADMIN  Masculino 3336p em Dom Jun 14, 2009 10:59 pm


Como disse acima, no gif você deixou um valor em vermelho em cada linha, que imagino já ser a soma dos valores da coluna.

Esse valor aparece por meio de uma variável, ex.: $total

Para que funciona, cada loop no while deve ter o seguinte

Selecionar - Numerar
$times[] = "$total"


0 mais

Resposta Rápida

   


 Busca Dinâmica

Clique em alguma palavra-chave para buscar, ou busque uma frase na caixa de pesquisa a seguir.

Palavras-chave: Calcular hora, minuto, segundo no while





Próximo

Logar para Responder
Logar para Perguntar




Voltar para MySQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes