Yii Framework Forum: Melhor Forma De Impedir Insert Duplicado - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Melhor Forma De Impedir Insert Duplicado Rate Topic: -----

#1 User is offline   Apix 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 07-November 13

Posted 11 December 2013 - 06:09 AM

Prezados,

Esta situação não se refere especificamente ao Yii, mas gostaria de saber quais as soluções que vocês utilizam para evitar inserts duplicados. Em um crud padrão do yii por exemplo, se o usuário clicar repetidas vezes no botão salvar ao inserir um registro, ele será duplicado.

Vejo as seguintes opções:
1. bloquear o botão inserir ao clicar a primeira vez -> mas se o link oscilar, o usuário não conseguirá reenviar o formulário;
2. fazer um select para verificar se o registro já existe -> penso ser pesado, principalmente ao utilizar uma aplicação de alto tráfego, onde teremos mysql replicado para separação de bases para inserts e selects (que é meu caso);

Existe alguma solução mais prática e leve?
0

#2 User is offline   Aryel Santos 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 26-April 13

Posted 11 December 2013 - 11:29 AM

Uma forma simples de evitar isso é usar um redirect para a mesma página depois de salvar.

$this->redirect("url");


Uma outra forma mais simples ainda é usar o método refresh do Yii.

$this->refresh();

0

#3 User is offline   Apix 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 07-November 13

Posted 11 December 2013 - 12:31 PM

Legal Aryel, esta é uma boa prática que evita problemas com o botão voltar do navegador. Já passei por isso no passado e contornei com 'redirect' (ou mesmo o 'header' do php quando não usava framework).

Mas mesmo assim ainda consigo inserir vários registros simplesmente clicando feito um louco no botão cadastrar do crud... ou seja, o php acaba recebendo várias requisições http e tratando todas elas (fazendo inserts duplicados).
0

#4 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 821
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 13 December 2013 - 06:43 AM

View PostApix, on 11 December 2013 - 06:09 AM, said:

Prezados,

Esta situação não se refere especificamente ao Yii, mas gostaria de saber quais as soluções que vocês utilizam para evitar inserts duplicados. Em um crud padrão do yii por exemplo, se o usuário clicar repetidas vezes no botão salvar ao inserir um registro, ele será duplicado.

Vejo as seguintes opções:
1. bloquear o botão inserir ao clicar a primeira vez -> mas se o link oscilar, o usuário não conseguirá reenviar o formulário;
2. fazer um select para verificar se o registro já existe -> penso ser pesado, principalmente ao utilizar uma aplicação de alto tráfego, onde teremos mysql replicado para separação de bases para inserts e selects (que é meu caso);

Existe alguma solução mais prática e leve?


Apix,

Quando o cliente clicar, você desativa o botão. Se houver alguma instabilidade no sistema, se caso ocorrer, colocar um setTimeout() de 30 segundos, se o formulário não submeter em 30 segundos o botão volta a ser ativado.
Newerton Vargas de Araújo
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users