Ir para conteúdo

Arquivado

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

Damon

Contar qtd linha e ver se foi inserido

Recommended Posts

Fala galera.

 

Estou precisando de contar a quantidade de linha que tem em uma tabela no banco e verifica e foi inserida uma nova linha se

foi inserido executa uma ação se não nenhuma ação e feita.

 

OBS: Isto tem que ser feito apenas dentro de uma consulta e no php, mais se alguém desenvolver a logica em outra linguagem ta valendo.

 

Parece ser fácil mais já quebrei muita cabeça com esta logica. Agora conto com apoio de vcs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo.

Faça da seguinte forma:

 

1 - Conte as linhas antes da instrução SQL que insere no banco;

Para contar as linhas utilize o mysql_num_rows();

 

2 - Depois do SQL que faz a inserção você conta novamente as linhas;

Para contar as linhas utilize o mysql_num_rows();

 

3 - Compare as contagens e caso sejam diferentes chame a função que deseja.

 

EX:

$contagemInicial = mysql_num_rows(mysql_query("SELECT * FROM tabela"));

$insercao = mysql_query("INSERT INTO tabela VALUES ('$id', '$nome')");

$contagemFinal = mysql_num_rows(mysql_query("SELECT * FROM tabela"));

if($contagemFinal>$contagemInicial){
    chamaFuncao();
}

Sou novato em PHP mas acho que é isso ai.

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SinoP

 

Isto daria certo se eu tivesse controle das inserções, os insertes vem de outro programa, ou seja como eu especifiquei na OBS: isto tem que ser feito apenas em uma consulta.

 

Mas obrigado por responder, valeu a tentativa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o count:

SELECT COUNT(*) AS `total` FROM `tabela`;

Mas para verificar se teve atualização, acredito que pode ter um campo datetime. Na pesquisa você compara a data e hora da última atualização.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Allex_carvalho

SELECT COUNT(*) AS `total` FROM `tabela`;

Este já estou utilizando, agora no caso do campo da data, você sugere a compara a data do sistema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara como a inserção é feita por outro programa, o seu programa que faz a contagem deve ter um local para armazenar sempre a última contagem.

 

A lógica seria mais ou menos essa:

  1. Você cria um local para armazenar a quantidade de linhas (um arquivo ou uma tabela no DB) .Seu valor inicial será 0.
  2. Realiza a contagem das linhas na tabela.
  3. Compara a contagem com o valor armazenado no arquivo ou DB.
  4. Se o valor for diferente executa sua função
  5. Salva o novo valor no arquivo ou DB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comparar data e hora para ver se algum registro já contado não foi atualizado. Se foi atualizado no sistema principal, precisa ser alterado no seu também, correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu explica certinho, pra vcs verem como é a situação.

 

Eu tenho um ajax que de tempo em tempo vai no banco e ver se tem mensagem novas.

 

Caso tenha alguma mensagem e essa mensagem for do ATENDENTE ele executa:


if ($quemenviou == "ATENDENTE" )
{
		
 echo "<html>
         <head>			  				
         </head>
	  <body>
							
             <embed  loop='1' height='5' width='5' src='som/button-09.mp3'>		
							
							
          </body>
       </html>";
					
} 

O problema é que toda vez que o ajax faz a verificação o áudio é tocado.

 

Então eu estava pensando em contar a quantidade de linha no banco e ele executaria o áudio se o valor de linha fosse diferente.

 

Exemplo:

if ($quemenviou == "ATENDENTE" && $atual > $anterior)
{
		
 echo "<html>
         <head>			  				
         </head>
	  <body>
							
             <embed  loop='1' height='5' width='5' src='som/button-09.mp3'>		
							
							
          </body>
       </html>";
					
}  

Mas a questão é que esta verificação tem que esta na mesma pagina, praticamente na mesma consulta, por que esta pagina vamos chamar de som.php esta " passando " ou melhor atualizada pela pagina em ajax.

 

 

 

Respondendo rockrgo

 

A lógica seria mais ou menos essa:

  1. Você cria um local para armazenar a quantidade de linhas (um arquivo ou uma tabela no DB) .Seu valor inicial será 0.
  2. Realiza a contagem das linhas na tabela.
  3. Compara a contagem com o valor armazenado no arquivo ou DB.
  4. Se o valor for diferente executa sua função
  5. Salva o novo valor no arquivo ou DB.

 

Neste caso não vejo um local diferente para armazenar a variável.

 

 

 

Allex_carvalho

 

Comparar data e hora para ver se algum registro já contado não foi atualizado. Se foi atualizado no sistema principal, precisa ser alterado no seu também, correto?

Tenho um campo data e tenho um campo hora, mais ainda não entendi como que seria esta verificação dentro dessa condições que citei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A comparação seria para ver se foi atualizado o campo (levando em conta que você está clonando uma tabela). Toda vez que fizer algum update atualiza a data e hora. Se não atualizar nada, não precisa.

 

E a maneira mais fácil de fazer essa comparação (caso não esteja clonando) é você ter uma tabela para armazenar o total de registros no servidor principal. Assim, poderá comparar a quantidade de itens.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Estou precisando de contar a quantidade de linha que tem em uma tabela no banco e verifica e foi inserida uma nova linha se(...)

 

De boa, pesquise sobre triggers:

http://www.devmedia.com.br/introducao-a-triggers/1695

http://pt.wikipedia.org/wiki/Gatilho_%28banco_de_dados%29

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal

 

Eu cheguei a conclusão que dentro do único SELECT ou da mesma pagina não tem como fazer mesmo.

 

Tentei de varias maneiras essa foi uma delas, usei os comando no banco para ser mais rápido .

declare @qtdregistroatual  int, 
		@qtdregistroanterior int 
            
set @qtdregistroatual= (SELECT COUNT (*) FROM mensagem);
	if (@qtdregistroatual > @qtdregistroanterior)
	begin
		
		set  @qtdregistroanterior =(SELECT COUNT (*) FROM mensagem);
		print 'não foi enserido';

	 end

se alguém quiser tentar pode fica a vontade

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.