Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Adson aquino

[Resolvido] Insert

Recommended Posts

Boa Tarde!

 

Estou com um problema em eu sistema, tenho um sistema de ponto eletônico online, quero fazer o seguinte.....

 

Quero dar um insert programado todo dia num horário que eu definir, tenho esses campos na tabela - id,id_funcionario,tipo,data_hora,ip_ponto,data2.....

 

Quero que o sistema verifique se o funcionário marcou algum registro durante o dia se não tiver marcado ele da um insert nessa tabela colocando falta, alguém sabe como posso fazer isso, obg.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem acesso ao servidor? Se tiver uma idéia seria usar um agendador de tarefas... no caso do linux pode usar o cron - link.

 

Daí o resto é lógica.... Se não conseguir posta aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian não tenho acesso ao servidor, então vamos mudar o modo, quero criar um arquivo que quando eu rodar ele faz a verificação se ficou algum usuário sem marcar o ponto na data atual se tiver ficado ele joga falta, se puder ajudar, abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script rodaria uma query mais ou menos assim.

 

UPDATE tabela SET (`nome_do_campo` = 'falta') WHERE ponto = 'nao_batido'

Carlos Eduardo

 

Matias, teria que fazer a consulta na tabela funcionarios e ver se aquele id já tem algum registro no banco na data atual se não tiver ele jogaria a falta, como posso fazer essa consulta na tabela funcionarios onde pega o id e vê se esse id tem registro na tabela ponto na data atual, se puder posta uma dica aí, valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matias, teria que fazer a consulta na tabela funcionarios e ver se aquele id já tem algum registro no banco na data atual se não tiver ele jogaria a falta, como posso fazer essa consulta na tabela funcionarios onde pega o id e vê se esse id tem registro na tabela ponto na data atual, se puder posta uma dica aí, valeu.

 

Tabela de funcionários:

mysql> select * from `funcionarios`;
+----+--------+
| id | nome |
+----+--------+
| 1 | João |
| 2 | Neto |
| 3 | Adson |
| 4 | Teste |
| 5 | Fulano |
+----+--------+
5 rows in set (0.00 sec)

Tabela de ponto:

mysql> select * from `ponto`;
+----+-------------+---------------------+
| id | funcionario | data |
+----+-------------+---------------------+
| 1 | 5 | 2009-09-08 20:20:07 |
| 2 | 2 | 2009-09-08 20:20:07 |
| 3 | 1 | 2009-09-08 20:20:07 |
| 4 | 5 | 2009-10-08 20:20:31 |
| 5 | 4 | 2009-09-08 20:20:07 |
| 6 | 3 | 2009-09-08 20:20:07 |
| 7 | 2 | 2009-10-08 20:20:31 |
| 8 | 1 | 2009-10-08 20:20:31 |
+----+-------------+---------------------+
8 rows in set (0.00 sec)

Agora relacionando as duas:

mysql> select f.`nome`,p.`data` from `funcionarios` f left join `ponto` p on p.`funcionario` = f.`id`;
+--------+---------------------+
| nome | data |
+--------+---------------------+
| João | 2009-09-08 20:20:07 |
| João | 2009-10-08 20:20:31 |
| Neto | 2009-09-08 20:20:07 |
| Neto | 2009-10-08 20:20:31 |
| Adson | 2009-09-08 20:20:07 |
| Teste | 2009-09-08 20:20:07 |
| Fulano | 2009-09-08 20:20:07 |
| Fulano | 2009-10-08 20:20:31 |
+--------+---------------------+
8 rows in set (0.00 sec)

Bom, agora verificando a data de ontem:

mysql> select f.`nome`,p.`data` from `funcionarios` f left join `ponto` p on p.`funcionario` = f.`id` and date(p.`data`)='2009-09-08';
+--------+---------------------+
| nome | data |
+--------+---------------------+
| João | 2009-09-08 20:20:07 |
| Neto | 2009-09-08 20:20:07 |
| Adson | 2009-09-08 20:20:07 |
| Teste | 2009-09-08 20:20:07 |
| Fulano | 2009-09-08 20:20:07 |
+--------+---------------------+
5 rows in set (0.00 sec)

Bom, então ontem ninguém faltou, agora verificando a data de hoje:

mysql> select f.`nome`,p.`data` from `funcionarios` f left join `ponto` p on p.`funcionario` = f.`id` and date(p.`data`)=date(now());
+--------+---------------------+
| nome | data |
+--------+---------------------+
| João | 2009-10-08 20:20:31 |
| Neto | 2009-10-08 20:20:31 |
| Adson | NULL |
| Teste | NULL |
| Fulano | 2009-10-08 20:20:31 |
+--------+---------------------+
5 rows in set (0.00 sec)

Opz, o Adson e o Teste faltaram hoje !!!

 

Mas a listagem trouxe até quem não faltou, queremos só os faltantes:

mysql> select f.`nome`,p.`data` from `funcionarios` f left join `ponto` p on p.`funcionario` = f.`id` and date(p.`data`)=date(now()) where data is null;
+-------+------+
| nome | data |
+-------+------+
| Adson | NULL |
| Teste | NULL |
+-------+------+
2 rows in set (0.01 sec)

Agora temos colunas de mais, queremos só o id dos faltantes:

mysql> select f.`id` from `funcionarios` f left join `ponto` p on p.`funcionario` = f.`id` and date(p.`data`)=date(now()) where data is null;
+----+
| id |
+----+
| 3 |
| 4 |
+----+
2 rows in set (0.01 sec)

Tabela de faltas:

mysql> select * from `faltas`;
Empty set (0.00 sec)

Ela está vazia, dando falta para todos os faltantes de uma única vez:

mysql> insert into `faltas`(`funcionario`) select f.`id` from `funcionarios` f left join `ponto` p on p.`funcionario` = f.`id` and date(p.`data`)=date(now()) where data is null;
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

Agora verificando as faltas:

mysql> select * from `faltas`;
+----+-------------+---------------------+
| id | funcionario | data |
+----+-------------+---------------------+
| 1 | 3 | 2009-10-08 20:35:25 |
| 2 | 4 | 2009-10-08 20:35:25 |
+----+-------------+---------------------+
2 rows in set (0.00 sec)

Relacionando com a tabela de funcionários:

mysql> select f1.`data`,f2.`nome` from `faltas` f1 left join `funcionarios` f2 on f2.`id` = f1.`funcionario`;
+---------------------+-------+
| data | nome |
+---------------------+-------+
| 2009-10-08 20:35:25 | Adson |
| 2009-10-08 20:35:25 | Teste |
+---------------------+-------+
2 rows in set (0.00 sec)

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

João Batista, Otimo.....

 

Muito obrigado pela dica aí kra, vou agora colocar em pratica, valeu abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pela dica aí kra, vou agora colocar em pratica, valeu abraço.

 

Faça os testes, se der certo poste aqui para que possamos marcar o tópico como resolvido.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

João Batista deu tudo certo, aqui vai o código como ficou.

 



<?php
	include("conf/common.php");
	
	$connection = pg_connect("host=$_HOST dbname=$_DB user=$_USER password=$_PASS") or msgerro("Impossi­vel acessar a base de dados!");
	
	$data_atual = date('Y-m-d');
	
	$query = pg_query("select f.id_funcionario from funcionarios f left join pontos p on p.id_funcionario = f.id_funcionario and p.data2 = '$data_atual' where data2 is null;");

	while($dados = pg_fetch_array($query)):
		pg_query("INSERT INTO faltas(id_funcionario,data) VALUES (".$dados['id_funcionario'].",'".$data_atual."');");
	endwhile;
?>

 

Valeu abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.