Jump to content


carlosins

Member Since 27/05/2008
Offline Last Active 21/09/2010, 12:57
-----

Posts I've Made

In Topic: Calculo De DiferenÇa De Horas

18/11/2009, 18:52

sem.Ponto Valeu pela grande ajuda, ficou bom mesmo agora tá rodando legal, acrescentei no final a definição de codigo, quanto a tabela vou mudar para time, melhor garantir.

if($tempo->positivo != $tempo->negativo)
{
$cod = ($tempo->positivo > $tempo->negativo) ? "33333" : "00172";
}
else
{
$cod = "00000";
}

In Topic: Calculo De DiferenÇa De Horas

16/11/2009, 20:40

Spark, toda ajuda é bem vinda, o campo dia tem o formato date.
Sem Ponto. Vou fazer o teste recomendado.

Sem.Ponto, primeiro teste: Tá pegando certo.
Array ( [0] => stdClass Object ( [segundos] => 7200 [oco] => 00172 ) [1] => stdClass Object ( [segundos] => 86400 [oco] => 33333 ) )

Segundo teste:
Array ( [0] => stdClass Object ( [segundos] => 7200 [oco] => 00172 ) [1] => stdClass Object ( [segundos] => 86400 [oco] => 33333 ) )

echo na $resultado

93600

descobri ele não entrava na condição $row->OCO == 33333 porque estava com zeros 0C0 e é com OCO, o resultado deu certo mesmo com varchar não cheguei nem a mudar, pois antes já dava certo dessa forma, vou testa a mudança para ver o que ocorre.
Indago mas uma questão, como o resultado está em minutos pode me ajudar na conversão para exibição em horas:minutos.

In Topic: Calculo De DiferenÇa De Horas

16/11/2009, 18:03

O print_r deu o seguinte:

stdClass Object ( [positivo] => 0 [negativo] => 93600 )

O campo jornidf é varchar

Sim alterei acrescentei o seguinte

$resultado = $resultado/3600;
echo $resultado;

In Topic: Calculo De DiferenÇa De Horas

16/11/2009, 15:00

Entendi, ficou bom mesmo vou testar.

Entendi, ficou bom mesmo vou testar.

'' sem.Ponto testei e deu erro, ele soma tudo, coloquei no tabela 02:00 para o codigo 00172 e tres codigos 33333 com 08:00 cada o que daria 24 de credito contra 02 de debito o resultado está gerando 26:00 e não 24:00, o que poderia ser?

In Topic: Calculo De DiferenÇa De Horas

15/11/2009, 20:07

Muito obrigado pela dica, ficou bom o codigo mas ainda tenho um problema no else não posso somar todos os codigos restantes preciso somar apenas os grupos indicados 00172 e 55555, então troquei para elseif abaixo, mas não está somando.
Me desculpe mas ainda tenho muito a aprender.

elseif($row->OCO == 00172 || $row->OCO == 55555)
{
$tempo->negativo += $row->segundos;
}


Não era bem o que eu estava pensando que fosse... :ponder:

Bom, você pode fazer assim:

// Essa query me retorna 3 linhas, cada linha contém a soma dos segundos de cada ocorrência do usuário
$sql = mysql_query("SELECT SUM(TIME_TO_SEC(JORNDIF)) as segundos, OCO FROM sua_tabela_aqui
WHERE SIAPE='".$mat."'
GROUP BY OCO");

// Nas variáveis declaradas abaixo, em $tempo->positivo vai entrar os segundos da OCO 33333 e em $tempo->negativo vai entrar a soma da OCO 55555 e OCO 00172
$tempo->positivo = 0;
$tempo->negativo = 0;

// Faço o loop nas 3 linhas retornadas na query
while ($row = mysql_fetch_object($sql)) {
	 // se OCO é 33333, jogo os segundos em $tempo->positivo
	 if ($row->OCO == 33333) {
		  $tempo->positivo = $row->segundos;
	 }
	 // senão vou somando as outras OCO em $tempo->negativo
	 else {
		  $tempo->negativo += $row->segundos;
	 }
}

// Verifico qual variável tem o maior valor e faço o cálculo. O resultado é em segundos.
$resultado = ($tempo->positivo > $tempo->negativo) ? $tempo->positivo - $tempo->negativo : $tempo->negativo - $tempo->positivo;

Acho que está tudo certo, qualquer dúvida, poste. ;)

(ok2)


IPB Skin By Virteq