Damon 20 Denunciar post Postado Setembro 4, 2014 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
SinoP 0 Denunciar post Postado Setembro 4, 2014 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
Damon 20 Denunciar post Postado Setembro 4, 2014 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
allex_carvalho 124 Denunciar post Postado Setembro 4, 2014 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
Damon 20 Denunciar post Postado Setembro 4, 2014 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
rockrgo 138 Denunciar post Postado Setembro 4, 2014 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: Você cria um local para armazenar a quantidade de linhas (um arquivo ou uma tabela no DB) .Seu valor inicial será 0. Realiza a contagem das linhas na tabela. Compara a contagem com o valor armazenado no arquivo ou DB. Se o valor for diferente executa sua função Salva o novo valor no arquivo ou DB. Compartilhar este post Link para o post Compartilhar em outros sites
allex_carvalho 124 Denunciar post Postado Setembro 4, 2014 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
Damon 20 Denunciar post Postado Setembro 4, 2014 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: Você cria um local para armazenar a quantidade de linhas (um arquivo ou uma tabela no DB) .Seu valor inicial será 0. Realiza a contagem das linhas na tabela. Compara a contagem com o valor armazenado no arquivo ou DB. Se o valor for diferente executa sua função 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
allex_carvalho 124 Denunciar post Postado Setembro 4, 2014 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
Fernando C 128 Denunciar post Postado Setembro 4, 2014 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
Damon 20 Denunciar post Postado Setembro 5, 2014 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