Varios Cliques no Botão PHP Gera Varios Registros

(fernando.treebyte) #1

Tenho um Botão PH na minha aaplicação e ao clicar nele é executado um insert em uma tabela.

Sendo que caso o usuario clique varias vezes este insert é executado a quantidade de vezes que o botão foi clicado.

alguma ideia para que isso não aconteça?

na aplicação não achei nada para fazer isso parar…

(waae) #2

Você pode fazer a aplicação fechar após o insert.
Pode criar um flag na tabela que é marcado quando a pessoa clica no botão e ao abrir a aplicação vc desabilita o botão caso esse flag esteja marcado.
Vai depender da estrutura que você tem e do que você precisa!

(fernando.treebyte) #3

Na verdade depois que é executado todos os comandos que estão no comando insert é feito um sc_redir, mas o mesmo não esta sendo feito quando acontece este caso.

(waae) #4

hmmm
Assim que a pessoa clica no botão vc já não consegue desabilitá-lo utilizando o sc_btn_display?

Na verdade nunca precisei fazer nada parecido =\

(Haroldo) #5

pegue o microtime da ação do botão, e permita que só seja executado n segundos após.

(fernando.treebyte) #6

Já tentei isso:

um flag no OnaplicattionInit e logo ao clicar no botão mudo o valor do flag. nâo funcionou.
o sc_btn_display . Não funcionou.

Haroldo como posso fazer este procedimento?
“pegue o microtime da ação do botão, e permita que só seja executado n segundos após.”

(wanderlanlima) #7

faça um sc_lookup verificando se já existe, caso sim, mostre uma mensagem, se não insere.

(Haroldo) #8

no código php do botão:
1ª linha: if (microtime()-[dataultproc_] > 10000) Return;
2ª linha: [dataultproc_]=microtime();
3ª linha em diante: seu código

em variáveis globais: desabilite sessão, get, post, e coloque como saída a variável: dataultproc_
no evento onscriptinit:
1ª linha: if ($this->NM_ajax_flag) Return;
2ª linha: [dataultproc_]=microtime();

*10000 é o tempo de delay para acionamento do processo

(fernando.treebyte) #9

Ok vou fazer…

(Haroldo) #10

Você pode usar o sc_confirma também.

(fernando.treebyte) #11

tentei as duas soluções.
a que passou do tempo e o sc_confirma.
a do tempo não funcionou.

o sc_confirma exibe a mensagem até ai ok.
mas se o usuario teclar OK e tentar clicar no botão novamente ele será executado.

obs.: ao clicar neste botão faço alguns insert e update e gero um arquivo txt.
depois fico no aguardo do retorno deste arquivo, ± 20 segundo ou mais… Neste pondo de espera se o usuario clicar novamente no botão os dados são processados novamente.

(Haroldo) #12

Desculpa, errei no sinal.