Ir para conteúdo
Fórum Script Brasil
  • 0

Cadastra Duas Vezes O Mesmo Registro


Jetro

Pergunta

Olá Pessoal

Estou retornando com esse probleminha que não consigo solucionar.

Não entendo o que ocorre.

No meu sistema, na hora de cadastrar uma pessoa, as vezes aparecem dois registros iguais no Banco de Dados. Mas o impressionante é que somente em algumas vezes isso ocorre, Normalmente, não acontece. Aproximadamente 20% dos cadastros aparecem duplicados no BD. Os campos da cópia as vezes ficam vazios e as vezes aparecem identicos só mudando o ID que é auto-increment.

Cheguei a fazer a ridícula rotina de colocar um link de "Deletar duplicado" para o usuário apagar pessoalmente caso isso ocorra.

Não sei o que fazer.

Preciso de ajuda.

Obrigado

Jetro

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Cara eu vejo duas causas possiveis. mas são sei se poder realemte ocorrer.

1. seu sistema ta fazendo 2 submits no form, se você tiver usando javascript para enviar o formulario, pode ser um erro de você jamar a função no buttom, e ele ta marcado como subimt, isso força o envio duplicado do form.

exemplo:

<script>
    function enviar(){
                window.Consulta.action="fr.php";
                window.Consulta.method="post";
                window.Consulta.submit();
    }
</script>
.
.
.
<input type="submit" onclick="enviar()">  // repare tas como submit e deveria ser button

2. seu usuario ta enviando o cadastro de forma errada, "aperta o enter sem querer", ai usa o botao voltar do navegado, e envia de novo.

Parecem situações improvaveis, mas já vi acontecer.

Editado por itibere
Link para o comentário
Compartilhar em outros sites

  • 0
Cara eu vejo duas causas possiveis. mas são sei se poder realemte ocorrer.

1. seu sistema ta fazendo 2 submits no form, se você tiver usando javascript para enviar o formulario, pode ser um erro de você jamar a função no buttom, e ele ta marcado como subimt, isso força o envio duplicado do form.

exemplo:

&lt;script>
    function enviar(){
                window.Consulta.action="fr.php";
                window.Consulta.method="post";
                window.Consulta.submit();
    }
</script>
.
.
.
<input type="submit" onclick="enviar()">  // repare tas como submit e deveria ser button

2. seu usuario ta enviando o cadastro de forma errada, "aperta o enter sem querer", ai usa o botao voltar do navegado, e envia de novo.

Parecem situações improvaveis, mas já vi acontecer.

Olá amigo...

A opção 1, está descartada porque chquei o Script varias vezes e alem do mais, não seria aleatória a duplicação. Seria constante.

A opção 2, Também está descartada porque o usuário dos testes fui eu mesmo... Eu mesmo inseri diversas vezes os dados e quando checava, aparecia duplicado.

Por fim, tive que colocar uma rotina que varre o BD em busca de dados reduntantes. Está funcionando mas é uma "preaca" das grandes e nem durmo direito por causa disso.

Agora, no entanto, ficou mais difícil porque os usuarios não reclamam mais de "Duplicados" e ai, eu nem me lembrarei deste problema. Que chato!

Parece um erro no Mysql... sei lá... foi a única explicação que encontrei devido à "aleatoriedade" do fato.

Se souber de algo, por favor, me avisa pelo meu email... jetro@bspropaganda.com.br

Mas de qualquer forma, agradeço muito sua atenção.

Aproposito, meu sistema é o www.admycar.com.br

Caso queira dar uma olhada, entre com o usuario junior e a senha 230811

O problema ocorre na hora de cadastrar um veículo.

Link para o comentário
Compartilhar em outros sites

  • 0

Tente fazer o seguinte para teste:

1- Crie uma variável de nome qualquer, $Numero, vamos supor, e atribua o valor 0.

2- Coloque um if verificando se esta variável já existe, e se já existir, deixá-la intocada.

if (!$Numero){
$Numero = 0;
}
Antes de incluir um automóvel no database, faça um if para a consulta:
if ($Numero == 0){
// ...
}
E por fim, depois da consulta, mude o valor da variável para 1, ficando assim
if (!$Numero){
$Numero = 0;
}
if ($Numero == 0){
mysql_query(INSERT INTO.......);
$Numero = 1;
}

Assim, se ele estiver passando duas vezes pelo código, na segunda ele não fará o insert no database, pois o $Numero não será mais igual a 0.

Isso é somente para testes, pra descobrir se o erro está no código sendo passado duas vezes.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...