Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Ajuda para código php de contagem de horas

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida Ajuda para código php de contagem de horas

    Olá, preciso de ajuda com uma código de calculo de horas extras.
    Fiz o código mas aparece erro no horario se ele for quebrado acima de 2:00

    No código 08:48 é as horas trabalhadas normais por dia, eu quero que ele some as horas depois desse valor como entrada 04:00 saida 12.22 nova entrada 12:30 nova saida

    abaixo o código que estou fazendo se alguem poder dar uma olhada.

    O Formulario
    Código:
    Código HTML:
    <form name="Horas" action="Calcular.php" method="POST">
    AM Valor1: <input type="text" name="V1" size="5" Maxlength="5" value=""/>
    Valor2: <input type="text" name="V2" size="5" Maxlength="5" value=""/><BR>
    PM Valor3: <input type="text" name="V3" size="5" Maxlength="5" value=""/>
    Valor4: <input type="text" name="V4" size="5" Maxlength="5" value=""/>
    <input type="hidden"name="V5" value="08.48"/><BR>
    <BR>
    <INPUT TYPE="reset" VALUE="Limpar">
    <input type="submit" name="Horas" value="Calcular" /></center>

    O php



    Código:
    <?php
    $V1 = $_POST["V1"];
    $V2 = $_POST["V2"];
    $V3 = $_POST["V3"];
    $V4 = $_POST["V4"];
    $V5 = $_POST["V5"];
    $R1 = $V2-$V1;
    $R2 = $V4-$V3;
    $R3 = ($R2+$R1)-$V5;
    echo "Horas Extras = ";
    echo $R3;
    ?>
    Meu coração é puro...
    ...Pura Maldade


    £ø®Ð Õß$¢µ®€
    Similar Threads

  • Font Size
    #2
    To na faculdade... Curti sua duvida... Vou fazer no intervalo das 20:00 horas... dae posto aqui...
    Um dia saio dessa merda... Governo só gosta de vagabundos!

    Comment


    • Font Size
      #3
      Ta ae, qualquer coisa o arquivo ta no anexo...

      Código PHP:
      <?

      function segundos_intervalo($entrada,$saida){
          
          
      //conta os segundos trabalhados no intervalo de duas horas
          
          //Separa Hora e Minutos
          
      $entrada explode':'$entrada );
          
      $saida explode':'$saida );
          
          
      //Obtém o timestamp Unix. Seguindo, no seu caso, a ordem Hora/Minuto.
          
      $hora_ini mktime$entrada[0], $entrada[1]);
          
      $hora_fim mktime$saida [0], $saida [1]);
          
          
      //Verifica a dirença entre os horários
          
      $diferenca_hora $hora_fim $hora_ini;
          
      $segundos_total = ( date('H',$diferenca_hora ) * 60 60) + ( date('i',$diferenca_hora ) * 60) ;
          
          return 
      $segundos_total;

      }

      function 
      zero_direita($num){
          
      //coloca um zero no lado esquerdo dos valores caso forem menores de 9
          //se nao tivesse isso mostraria 1:9h em vez de 01:09h
          
          
      if($num <= 9){
              return 
      '0'.$num;    
          }else{
              return 
      $num;    
          }
          
      }
      ?>
      Código HTML:
      <center>
      <form action="" method="post">
      <BR>
      AM Entrada: <input type="text" name="entradaAM" size="5" Maxlength="5" value=""/>
      Saida: <input type="text" name="saidaAM" size="5" Maxlength="5" value=""/>
      <BR>
      PM Entrada: <input type="text" name="entradaPM" size="5" Maxlength="5" value=""/>
      Saida: <input type="text" name="saidaPM" size="5" Maxlength="5" value=""/>
      <BR><BR>
      <BR>
      <input type="reset" value="Limpar">
      <input type="submit" name="Horas" value="Calcular" />
      </form>
      <br><br>
      Código PHP:
      <?php

      if($_POST[entradaAM] && $_POST[saidaAM] && $_POST[entradaPM] && $_POST[saidaPM]){

          
      $horas_normais "31680"//08:48 em segundos
          
          
      $segundos_AM segundos_intervalo($_POST[entradaAM],$_POST[saidaAM]);
          
      $segundos_PM segundos_intervalo($_POST[entradaPM],$_POST[saidaPM]);
          
      $segundos_trabalhados $segundos_AM+$segundos_PM;
          
          if(
      $horas_normais $segundos_trabalhados){
              
      //trabalhou menos que as 08:84
              
      print "Trabalho menos do que deveria!";    
          }else if(
      $horas_normais $segundos_trabalhados){
              
              
      $segundos $segundos_trabalhados $horas_normais;
          
              
      $horas floor($segundos 3600);
              
      $segundos -= $horas 3600;
              
      $minutos floor($segundos 60);
              
      $segundos -= $minutos 60;
              
              print 
      "Horas extras trabalhadas: ".zero_direita($horas).':'.zero_direita($minutos);
              
                  
          }
      }
      ?>
      Código HTML:
      </center>
      Attached Files
      Um dia saio dessa merda... Governo só gosta de vagabundos!

      Comment


      • Font Size
        #4
        Ajhuda

        Ficou bom a béssa só que mesmo que coloque tudo 00:00 ele diz que tem
        Horas extras trabalhadas: 27:12


        Vlw pela ajuda!
        Meu coração é puro...
        ...Pura Maldade


        £ø®Ð Õß$¢µ®€

        Comment


        • Font Size
          #5
          Que bom que gostou cara... Dei uma revisada no código e alterei algumas coisas.. Peço que teste novamente por favor... Coloquei umas imagens com os meus testes no final:

          Primeiro HTML:

          Código HTML:
          <html>
          <head>
          
          <script LANGUAGE="JavaScript">
          function valida_horas(edit){
          	if(event.keyCode<48 || event.keyCode>57){
          		//nao deixa colocar letras nos campos
              	event.returnValue=false;
          	}
          	
          	if(edit.value.length==2){
          		//adiciona o : no centro....
          		edit.value+=":";
          	}
          }
          </SCRIPT>
          </head>
          <body>
          <center>
          
          
          <form action="" method="post">
          <BR>
          AM Entrada: <input type="text"  name="entradaAM" size="5" Maxlength="5" value="<?= $_POST[entradaAM]?>" onKeyPress="valida_horas(this)"/>
          Saida: <input type="text" name="saidaAM" size="5" Maxlength="5" value="<?= $_POST[saidaAM]?>" onKeyPress="valida_horas(this)"/>
          <BR>
          PM Entrada: <input type="text" name="entradaPM" size="5" Maxlength="5" value="<?= $_POST[entradaPM]?>" onKeyPress="valida_horas(this)"/>
          Saida: <input type="text" name="saidaPM" size="5" Maxlength="5" value="<?= $_POST[saidaPM]?>" onKeyPress="valida_horas(this)"/>
          
          <BR><BR>
          <BR>
          <input type="reset" value="Limpar">
          <input type="submit" name="Horas" value="Calcular" />
          
          </form>
          
          <br>
          <br>
          Depois abaixo do html coloque o php:

          Código PHP:
          <?

          ini_set
          ("display_errors",0);

          function 
          segundos_intervalo($entrada,$saida){
              
              
          //conta os segundos trabalhados no intervalo de duas horas
              
              //Separa Hora e Minutos
              
          $entrada explode':'$entrada );
              
          $saida explode':'$saida );
              
              
          //Obtém o timestamp Unix. Seguindo, no seu caso, a ordem Hora/Minuto.
              
          $hora_ini mktime$entrada[0], $entrada[1]);
              
          $hora_fim mktime$saida [0], $saida [1]);
              
              
          //Verifica a dirença entre os horários
              
          $diferenca_hora $hora_fim $hora_ini;
              
          $segundos_total = ( date('H',$diferenca_hora ) * 60 60) + ( date('i',$diferenca_hora ) * 60) ;
              
              return 
          $segundos_total;

          }

          function 
          zero_direita($num){
              
          //coloca um zero no lado esquerdo dos valores caso forem menores de 9
              //se nao tivesse isso mostraria 1:9h em vez de 01:09h
              
              
          if($num <= 9){
                  return 
          '0'.$num;    
              }else{
                  return 
          $num;    
              }
              
          }

          function 
          mostra_hora($segundos_hora){
              
              
          //recebe um quantidade de segundos e retorna o equivalente em horas... Ex: Recebe 31680 e retorna: 08:48
              
              
          $horas floor($segundos_hora 3600);
              
          $segundos_hora -= $horas 3600;
              
          $minutos floor($segundos_hora 60);
              
          $segundos_hora -= $minutos 60;
              
              return    
          zero_direita($horas).':'.zero_direita($minutos);

          }

          //Ve se os quatro campos nao estao vazios...
          if($_POST[entradaAM] && $_POST[saidaAM] && $_POST[entradaPM] && $_POST[saidaPM]){

              
          $horas_normais "31680"//08:48h em segundos
              
              
          $segundos_AM segundos_intervalo($_POST[entradaAM],$_POST[saidaAM]);
              
          $segundos_PM segundos_intervalo($_POST[entradaPM],$_POST[saidaPM]);
              
          $segundos_trabalhados $segundos_AM+$segundos_PM;
              
                  print 
          '<table width="400" border="0">
                    <tr>
                      <td>Tempo trabalhado de manha:</td>
                      <td>'
          .mostra_hora($segundos_AM).'</td>
                    </tr>
                    <tr>
                      <td>Tempo trabalhado de tarde</td>
                      <td>'
          .mostra_hora($segundos_PM).'</td>
                    </tr>
                    <tr>
                      <td>Tempo total trabalhado:</td>
                      <td>'
          .mostra_hora($segundos_AM+$segundos_PM).'</td>
                    </tr>
                    <tr>
                      <td>Tempo obrigat&oacute;rio:</td>
                      <td>'
          .mostra_hora($horas_normais).'</td>
                    </tr>
                      <td>Horas Extras:</td>'
          ;
                    
                  if(
          $horas_normais $segundos_trabalhados){
                  
          //trabalhou menos que as 08:84
                      
          print "<td style='color:red;'>Trabalhou menos do que deveria!</td>";    
                      
                  }else if(
          $horas_normais == $segundos_trabalhados){
                      print 
          "<td style='color:green;'>Nenhuma hora extra...</td>"//devia estar louca para ir embora...
                  
          }else{
                      print 
          '<td style="color:blue; font-weight:bolder">'.mostra_hora($segundos_trabalhados $horas_normais).'</td>';
                  }
                  
                  print 
          '</tr></table>';
          }
          ?>
          E no final do php não se esqueça de fechar o html:

          Código HTML:
          </center>
          </body>
          </html>
          O arquivo está no Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

          Attached Files
          Um dia saio dessa merda... Governo só gosta de vagabundos!

          Comment


          • Font Size
            #6
            Ainda da erro! colocando 08:00 12:00
            13:00 17:48 que seria o horario normal de serviço.

            Que daria 0h extra ele retoena isso!


            Tempo trabalhado de manha: 22:00
            Tempo trabalhado de tarde 22:48
            Tempo total trabalhado: 44:48
            Tempo obrigatório: 08:48
            Horas Extras: 36:00
            Meu coração é puro...
            ...Pura Maldade


            £ø®Ð Õß$¢µ®€

            Comment

            X
            Working...
            X