Jump to content


carlosins

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

Topics I've Started

Calculo De DiferenÇa De Horas

14/11/2009, 15:16

Pessoal, estou com um problema nesse codigo, se as variáveis $tdeb e $tcred apresentarem valores inferiores a 24:00 o resultado fica perfeito, porém as vezes os resultados são superiores a 24:00 e no calculo da diferença entre elas gera erro, por exemplo se o resultado for 36:00 em $tdeb e 06:00 em $tcred o resultado de $tohor é 06:00 e não 30:00 como deveria ser, ou seja quando passa de 24:00 ele zera e conta novamente.
Como poderia resolver essa questão? Alguém pode me dar uma sugestão?


$sql = mysql_query("SELECT SEC_TO_TIME( SUM(TIME_TO_SEC( jorndif ) ) ) AS total_horas FROM ponto$comp USE INDEX (siape) where oco in('00172','55555') and siape = '$mat'");
$tdeb = mysql_result($sql,0,"total_horas");
$sq = mysql_query("SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( jorndif ) ) ) AS total_horas FROM ponto$comp USE INDEX (siape) where oco = '33333' and siape = '$mat'");
$tcre = mysql_result($sq,0,"total_horas");
$hodeb = explode(":", $tdeb);
$hocre = explode(":", $tcre);


if($tdeb > $tcre && !empty($tcre))
{
$thor = mktime ($hodeb[0] - $hocre[0], $hodeb[1] - $hocre[1], 0, 0 );
$tohor = date("H:i", $thor);

Falha Na Passagem De Variaveis

28/10/2009, 18:05

Prezados colegas estou com um problema e não consigo identificar o que pode ser.
Está ocorrendo o seguinte com a aplicação, uma rotina que deve inserir dados em 6 campos de uma tabela do banco de dados funciona para 39000 usuários perfeitamente, porém para 3000 faz o insert parcial, ora pula dois valores, ora pula um valor, e essa falha é aleatória não tem padrão, tem vez que é no primeiro campo, as vezes no segundo campo, muito estranho mesmo.
exemplo dessa ocorrência:
dia funcion entra intini intsai sai jornd jornp jorndif oco
2009-10-21 1111111 00:00:00 00:00:00 00:00:00 00:00:00 00:00 08:00 00:00 88888


0000-00-00 2222222 06:44:00 00:00:00 00:00:00 00:00:00 00:00 08:00 00:00 88888

São dois registros de funcionarios do mesmo setor realizados no mesmo dia e horario, os campos dia, funcion, entra, jornp e oco devem ser inseridos na mesma rotina, porém no primeiro não inseriu o horário de entrada no segundo não inseriu o dia, porém para vários usuários inseriu corretamente.

Alguém já teve situação semelhante? O que pode ser?
Desde já agradecido.

Ajuda Em Seleção

26/04/2009, 15:47

Pessoal, estou com dificuldade de realizar o seguinte select:

Selecionar a primeira e a ultima data para cada codigo existente de um funcionario na tabela ponto que é mensal obedecendo a ordem cronologica dos dias. Abaixo um exemplo de registro do funcionario 0911251 na tabela ponto:
2009-04-05 0911251 00020 NULL
2009-04-06 0911251 00020 NULL
2009-04-07 0911251 00020 NULL
2009-04-08 0911251 00020 NULL
2009-04-09 0911251 00000 NULL
2009-04-10 0911251 00020 NULL
2009-04-11 0911251 00172 NULL
2009-04-12 0911251 00000 NULL
2009-04-13 0911251 00000 NULL
2009-04-14 0911251 00000 NULL
2009-04-15 0911251 00000 NULL
2009-04-25 0911251 00000 NULL
2009-04-16 0911251 00000 NULL
2009-04-17 0911251 00000 NULL
2009-04-23 0911251 00020 NULL
Para esse funcionario (0911251) deverei ter de resultado o seguinte:
cod 00020 dtinicial 05-04-2009 dtfinal 08-04-2009
cod 00172 dtinicial 11-04-2009 dtfinal 11-04-2009
cod 00000 dtinicial 12-04-2009 dtfinal 17-04-2009
cod 00020 dtinicial 23-04-2009 dtfinal 23-04-2009
cod 00000 dtinicial 25-04-2009 dtfinal 25-04-2009
Alguém poderia me ajudar nessa demanda?

Somar Horas

21/04/2009, 14:47

Pessoal estou desenvolvendo um sistema de controle de ponto que deve totalizar o numero de horas executadas (banco de horas) para utilizar posteriormente.
A minha dificuldade é que ao somar as diferenças de horas executadas em cada dia o código que estou utilizando zera a contagem quando atinge 24:00, ou seja só soma até 23:59.
Então como posso corrigir o código para somar até o limite mensal que é 176:00 horas.
Vejam o código:

[codebox]
$sql = mysql_query("SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( jorndif ) ) ) AS total_horas FROM ponto$comp where oco != '33333' and siape = '$mat'");
$tdeb = mysql_result($sql,0,"total_horas");
$sq = mysql_query("SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( jorndif ) ) ) AS total_horas FROM ponto$comp where oco = '33333' and siape = '$mat'");
$tcre = mysql_result($sq,0,"total_horas");
$hodeb = explode(":", $tdeb);
$hocre = explode(":", $tcre);
if($tdeb > $tcre)
{
$thor = mktime ($hodeb[0] - $hocre[0], $hodeb[1] - $hocre[1], 0, 0 );
$tohor = date("H:i", $thor);
$total = "-".$tohor;
$cod = '00172';
}
else
{
$thor = mktime ($hocre[0] - $hodeb[0], $hocre[1] - $hodeb[1], 0, 0 );
$tohor = date("H:i", $thor);
$total = "+".$tohor;
$cod = '33333';
}
[/codebox]

Insert Com For Ou While

19/04/2009, 19:01

:wacko: Pessoal, estou com dificuldade para criar uma rotina de insert com uso do for ou while.
Tenho um formulario que transmitirá as variáveis $dia1, $dia2, $mat e $oco, onde $dia1 é o dia de início do registro e $dia2 é o último dia a ser registrado na tabela, o insert deverá incluir na tabela todos os dias entre o primeiro dia inclusive e o ultimo dia inclusive e repetir o valor de $mat e $oco em cada registro .

Tentei o codigo abaixo, que entra em looping e não insere nada.

$dia1 = conv_data($dt_ini);//converte a data para inserir na tabela
$dia2 = conv_data($dt_fim);

while($dia1 <= $dia2){
$query = "INSERT INTO ponto$compete (dia, siape, oco) VALUES ('".$dia."', '".$mat."', '".$ocor.'")"
$result = mysql_query($query) or die("Falha no registro do ponto".mysql_error());
$dia1++;}';

IPB Skin By Virteq