Ir para conteúdo
Fórum Script Brasil
  • 0

Ponto de funcionários


rootzig

Pergunta

Estou tendo problema no cadastro das horas, por exemplo:

----------------------------------------------------------------------------

Código | HoraEntrada | HoraAlmoco | HoraSalmoco | HoraSaida

----------------------------------------------------------------------------

1000 | 09:00:00 | 12:30:00 | 13:30:00 |18:00

----------------------------------------------------------------------------

Consegui cadastrar até, só que se eu mudar a data por exemplo para amanha ele teria que da um insert assim registrar o ponto com a data atual

só que não estou conseguindo pensar em como fazer isso ;(

alguém ae, pode me ajudar?

te mais, valeu.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Opa, valeu pela atenção

preciso fazer um ponto virtual,

mas só consigo cadastrar uma vez, não estou conseguindo fazer para ele cadastrar na poutra data

Por exemplo:

Data: 12/11/2010

CODIGO ENTRADA SAIDA ENTRADA SAIDA

10000 09:00:00 12:00:00 13:00:00 18:00

não estou conseguindo fazer o seguinte, eu mudar a data para 13/11/2010

e fazer uma nova batida de ponto.

Não sei como fazer a lógica pra quando a data ser diferente ele da um insert na data atual.

valeu, te mias.

Link para o comentário
Compartilhar em outros sites

  • 0

Para utilizar a data atual, você pode utilizar a função current_date do próprio MySQL. Ex:

INSERT INTO teste(data, descricao) VALUES(current_date, 'Testando a função...');

Este comando iria inserir na descricao o texto 'Testando a função...' e no campo data iria inserir a data atual (data que está no servidor onde roda o MySQL).

http://dev.mysql.com/doc/refman/5.1/en/dat...-functions.html

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0

Prezado,

Acredito que sua dúvida seria:

Como inserir em somente uma linha, horários de entrada e saída de um funcionário para uma data.

De posse dessa premissa, vamos por a mão na massa.

Considerando que a estrutura de sua tabela é

/*

* CREATE TABLE "Ponto" (

* "id" int unsigned NOT NULL auto_increment,

* "codigo" int NOT NULL, - Codigo do funcionario

* "HoraEntrada" datetime NULL,

* "HoraEntrada" datetime NULL,

* "HoraEntrada" datetime NULL,

* "HoraEntrada" datetime NULL,

* "dataApontamento" date NOT NULL)

*/

Definir as funções que o script deverá fazer:

1 - Verificar se o funcionário já registrou algum ponto para a data atual.

2 - Atualizar o registro de ponto do funcionário, incrementando mais um horário.

3 - Inserir um registro de ponto para o funcionário.

Recupera a data atual

$dataApontamento = data('Y-m-d');
1 - Verificar se o funcionário já registrou algum ponto para a data atual.
$query = mysql_query("SELECT id FROM Ponto WHERE codigo = $codigo AND dataApontamento = $dataApontamento");
$id = mysql_result($query,0,'id');
2 - Atualizar o registro de ponto do funcionário, incrementando mais um horário. Caso a query acima retornar um registro, quer dizer que o funcionário já realizou algum apontamento no dia, então você edita o registro inserindo mais um horário. Por exemplo, se for hora de saída para o almoço.
mysql_query("UPDATE Ponto SET HoraAlmoco = '$hora' WHERE id = $id");
3 - Caso o funcionário não tenha realizado nenhum apontamento no dia atual, então registra sua entrada.
mysql_query("INSERT INTO Ponto (codigo,HoraEntrada) VALUES ($codigo,$HoraEntrada)");

Um sistema de ponto é um software bem complexo, e depende muito das definições das regras de negócio.

Pois você tem que tratar várias situações como:

- Se o funcionário só vier trabalhar na parte ta tarde.

- Se o funcionário sair para almoçar as 14:00.

E por ai vai.

Abraço

Editado por Romero Dias
Link para o comentário
Compartilhar em outros sites

  • 0

Romero Dias

Valeu pela resposta, o código que fiz até o momento, deva ta uma pog, mas com o tempo vou arrumado ele.

<?php 
        //------------------------------------------------------------------------------ 
        //inicia a conexao 
        include_once("conexao/connMysql.php"); 
        //------------------------------------------------------------------------------ 
         
        //------------------------------------------------------------------------------ 
        //hora atual 
        $dataAtual = date("Y/m/d");  
        echo "Data atual:". $dataAtual."<br />"; 
        //------------------------------------------------------------------------------ 
         
        //------------------------------------------------------------------------------ 
        //verifica se tem algo no get 
        if(empty($id_func)){ 
        $id_func = addslashes($_GET['id_func']);  
        } 
        if(empty($dian)){ 
        $dian    = addslashes($_GET['dian']); 
        } 
        if(empty($dial)){ 
        $dial    = addslashes($_GET['dial']); 
        } 
        if(empty($entrada1)){ 
        $entrada1= addslashes($_GET['entrada1']); 
        } 
        if(empty($saida1)){ 
        $saida1  = addslashes($_GET['saida1']); 
        } 
        if(empty($entrada2)){ 
        $entrada2= addslashes($_GET['entrada2']); 
        } 
        if(empty($saida2)){ 
        $saida2  = addslashes($_GET['saida2']); 
        } 
        //------------------------------------------------------------------------------ 

         
        $selecionaBatidas = mysql_query("SELECT id, data, entrada1, saida1, entrada2, saida2 from pontodigital WHERE id='$id_func'"); 
        $achou = mysql_num_rows($selecionaBatidas); 
        $pegaDados = mysql_fetch_assoc($selecionaBatidas); 
        $dataBanco = $pegaDados['data']; 
         
        /*echo $pegaDados['entrada2']."<br />"; 
        echo $pegaDados['saida2']."<br  />"; 
        */ 
         
        //se já bateu o ponto 
        if($achou == 1) 
        { 
                        if($pegaDados['saida1'] == "00:00:00")  
                        { 
                                        $cadDigital = ""; 
                                        $cadDigital = mysql_query("UPDATE pontodigital SET saida1='$saida1' WHERE id='$id_func' AND data='$dataBanco '"); 
                                                         
                                                if($cadDigital) 
                                                {                                
                                                        echo "Ponto registrado -> Saida 1 - Almoço"; 
                                                }else 
                                                { 
                                                        echo "Falha ao registrar ponto, tente novamente."; 
                                                } 
                        }else if($pegaDados['entrada2'] == "00:00:00"){ 
                                         
                                        $cadDigital = ""; 
                                        $cadDigital = mysql_query("UPDATE pontodigital SET entrada2='$entrada2' WHERE id='$id_func' AND data='$dataBanco '"); 
                                                         
                                                if($cadDigital) 
                                                {                                
                                                        echo "Ponto registrado -> Entrada 2 - Volta do Almoço"; 
                                                }else 
                                                { 
                                                        echo "Falha ao registrar ponto, tente novamente."; 
                                                } 
                                                 
                        }else if($pegaDados['saida2'] == "00:00:00"){ 
                                         
                                        $cadDigital = ""; 
                                        $cadDigital = mysql_query("UPDATE pontodigital SET saida2='$saida2' WHERE id='$id_func' AND data='$dataBanco'"); 
                                                         
                                                if($cadDigital) 
                                                {                                
                                                        echo "Ponto registrado -> Saída 2 - Fim"; 
                                                }else 
                                                { 
                                                        echo "Falha ao registrar ponto, tente novamente."; 
                                                } 
                        }else { 
                                echo "Falha, Colaborador já efetuou as quatros batidas."; 
                        } 
        }else    
        { 
                                        $cadDigital = mysql_query("INSERT INTO  
                                                                                                        pontodigital (id, 
                                                                                                                                  data,  
                                                                                                                                  dian, 
                                                                                                                                  dial, 
                                                                                                                                  entrada1 
                                                                                                                                  )  
                                                                                                         VALUES ('$id_func', 
                                                                                                                         '$dataAtual',   
                                                                                                                         '$dian', 
                                                                                                                         '$dial', 
                                                                                                                         '$entrada1' 
                                                                                                                        )"); 
                                                 
                                        if($cadDigital) 
                                        {                                
                                                echo "Ponto registrado ->  Entrada 1"; 
                                        }else 
                                        { 
                                                echo "Falha ao registrar ponto, tente novamente."; 
                                        } 
                 
        } 
         
?>

Ae ele esta funcionando assim:

Se não for encontrado o código do funcionário então ele da um insert, ae sempre que o funcionario bater o ponto ele da um update na tabela.

Não estou conseguindo fazer, quando por exemplo chegar amanha e o funcionário bater o ponto novamente, o que tenho que verificar pra ele da um novo insert,

to ficando louco já, kkk

valeu ae, te mais

Link para o comentário
Compartilhar em outros sites

  • 0

Verifique se o funcionário registrou o ponto do dia, caso ainda não registrou, então registre um novo ponto para a data atual.

Se a query não retornar nada, siguinifica que o funcionário ainda não realizaou sou ponto para a dia current_date.

$selecionaBatidas = mysql_query("SELECT id, data, entrada1, saida1, entrada2, saida2 from pontodigital WHERE id='$id_func' AND data = current_date");

dessa forma você consegue saber: "quando por exemplo chegar amanha e o funcionário bater o ponto novamente".

Faça os teste..

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Verifique se o funcionário registrou o ponto do dia, caso ainda não registrou, então registre um novo ponto para a data atual.

Se a query não retornar nada, siguinifica que o funcionário ainda não realizaou sou ponto para a dia current_date.

$selecionaBatidas = mysql_query("SELECT id, data, entrada1, saida1, entrada2, saida2 from pontodigital WHERE id='$id_func' AND data = current_date");

dessa forma você consegue saber: "quando por exemplo chegar amanha e o funcionário bater o ponto novamente".

Faça os teste..

Abraço

Aoooo, chorei kkk

Deu certo :~

Valeu, Romero Dias

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...