Ir para conteúdo

POWERED BY:

Arquivado

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

.:: Pegasus ::.

[Resolvido] Como eliminar campos duplicados no MySQL?

Recommended Posts

Olá pessoal..

Eu tenho um sistema de atendimento onde os funcionários cadastram suas atividades em um banco de dados através desse sistema em PHP.

O problema é que esses campos estão vindo duplicados no MySQL. Esses campos não são efetivamente duplicados, a diferença de insersão é de 2~3 segundos, é como se a pessoa enviasse duas informações diferentes em questão de 2 segundos, o que é impossível, pois em média um atendimento dura no mínimo 10 minutos.

No meu sistema o cliente passar por várias validações e mesmo assim o problema continua.

1 – Javascript

3 – PHP

Primeiro é passado por uma validação JavaScript, na qual quando o operador clicar em enviar, o javascript desativa o botão para que ele não possa clicar mais uma vez.

Segundo, antes de enviar as informações ao MySQL eu faço uma consulta e vejo se o operador está querendo enviar a mesma informação, como “nome cliente”, “historico” e etc duas vezes. Caso sim, ele não gravará nada no banco, senão ele grava.

Só que mesmo assim continua com campos duplicados, mudando apenas por questão de segundos a data final do atendimento. Ex: 2009-05-22 00:00:01 em uma linha e 05-22 00:00:03

Ou seja... o resto tudo está igual, só difere esses segundos na data final do atendimento, o que também não é padrão, as vezes muda para 4~5 segundos, as vezes 10 e etc..

O que aparentemente mostra ser é que o cara está clicando duas vezes em enviar ou algo do tipo, mas pela lógica seria impossível isso acontecer.. Principalmente por eu fazer uma busca no banco e verificar se as informações são duplicadas antes de gravar no banco.

Abaixo está o código PHP responsável pela segurança dos campos duplicados.

 

$select = "select * from tabela where idfuncionario= $idFunc and datainicial = '$dataIni'";
	if(mysql_num_rows(mysql_query($select)) > 0 )
	{
		echo "
			<script>
				window.location='../principal.php';
			</script>
		";
	}
	else
	{
		$query="insert into tabela values(valores)";
		mysql_query($query) or die(mysql_error());

Então, como explicado acima, vários campos se duplicam, mas como não precisava listar todos, eu coloquei apenas 2, já que esses são essenciais.. então, antes de gravar no banco ele verifica se ja foi cadastrado algum atendimento antes de gravar, caso sim ele não faz nada, senão ele grava normalmente.

 

A questão é: Tem alguma outra forma de impedir que os campos sejam duplicados?

Obs: eu não posso deixar a data como unique porque muitos operadores atendem ligações simultaneamente, então é normal que vários operadores atendam na mesma hora.

 

Eu acho que a única solução é fazer alguma coisa no MySQL porém eu também não sei como resolver.

 

[RESOLVIDO]

 

Haviam dois arquivos que salvavam no banco, um que não era mais utilizado ( acho que não foi esse o motivo ) e na tabela havia um campo chamado idFunc, porém no SELECT do PHP estava idfunc, ou seja... essa condicao nunca seria verdadeira, por isso ele continuava com campos duplicados..

Alterei o select para idFunc e parou os campos duplicados..

 

Ou seja.. o MySQL é case sensitive inclusive em nome de campos ( eu achava que era apenas em nomes de tabelas e bancos ).

 

ps: Atualizado para usuários vindos do google encontrarem a resposta mais facilmente.

 

[/RESOLVIDO]

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz duas alterações que achei relevantes:

 

1 - Quando eu fiz as mudanças para tirar o campo duplicado, eu criei um novo arquivo ( ex: insere2.php ) e fiz as alterações nele, e depois mudei na outra pagina, no form, para utilizar o novo arquivo, porém eu não apaguei o arquivo antigo.. não sei se não apagando alguém poderia utilizar, mas de qualquer forma, depois de ler a resposta do Calvin, decidi apagar.

 

2 - mudei o campo da tabela que estava como idfunc para idFunc, que é como está o campo na tabela do servidor ( na minha estava idfunc mesmo ). Não sei se esse era o problema, mas hoje faz 6 dias que não caiu campos duplicados na tabela, não vou fechar como resolvido pois ja teve intervalos de 5 dias na tabela com campos duplicados então, só deixando registrado aqui caso alguém tenha o mesmo problema.

 

Obrigado Calvin, apesar de me lembrar coisas que eu vejo todos os dias, eu resolvi ler a fundo todos os mínimos passos, e erros que eu tinha 99% de certeza de que não era, mas para não restar dúvidas alterei... Tomara que sejam esses..

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Pessoal... hoje faz 12 dias após a alteração e não apareceu mais nenhum campo duplicado..

 

A todos o meu obrigado..

 

Alterei o post como Resolvido..

 

Obrigado.. Abraços.

 

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.