Ir para conteúdo

POWERED BY:

Arquivado

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

luizchequini

Como evitar duplicação de cadastros

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Caros colegas eu trabalho em um local onde há 5 computadores e resolvi desenvolver um programa em php para cadastro de contatos, então deparei com o seguinte problema Ex

 

Na página CADASTRA.HTML tenho os seguintes campos

 

NOME - SOBRENOME - CIDADE - TELEFONE - EMAIL => O FORM ACTION = INSERIR.PHP

 

então eu percebi que o cadastro que eu fiz de um cliente 03 pessoas tambem fizeram o mesmo cadastro

 

Nome = Luiz

Sobrenome = Zafalon

Cidade = Campinas

Telefone = 3265-8789

Email = luizafalon@ig.com.br

 

agora temos no banco de dados 04 cadastro do mesmo cliente (EXISTE MAIS OU MENOS UNS 20 CLIENTES DUPLICADOS OU TRIPLICADOS) como fazer para não acontecer mais este bug RESTRINGINDO OS CAMPOS NOME, SOBRENOME E EMAIL PARA NÃO HAVER DUPLICAÇÃO =>

 

Segue abaixo o script = INSERIR.PHP

 

<?php/* * faz a conexao ao banco * e seleciona a base de dados */$conexao = mysql_connect("localhost", "root", "")or die ("Erro na conexão ao banco de dados.");$db = mysql_select_db("noticias")or die ("Erro ao selecionar a base de dados.");/* * monta query em SQL para insercao */$sql = "INSERT INTO noticias (nome,sobrenome,cidade,telefone,email) VALUES ('".$_POST['nome']."','".$_POST['sobrenome']."','".$_POST['cidade']."','".$_POST['telefone']."','".$_POST['email']."')";/* * executa a query */$sql = mysql_query($sql)or die ("Houve erro na gravação dos dados.");?><h1>Cadastro efetuado com sucesso!</h1>

AGUARDO RESPOSTA => VALEU MESMO

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz uma funçao de modo q você faça nesta uma pesquisa no db antes de inserir os dados , você pegaria os campos e faia uma comparaçao de strings e se desse alguma ai você mandava barrar a inclusao e enviava um erro ao user

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sou novato e não tenho muito conhecimento em programação eu fiu pegando um pouco ali aqui fui juntado estudando.Caro fabyo eu ja coloquei no banco de dados unique mas existe outros Luiz se eu colocar unique não conseguirei fazer outros cadastros com o mesmo nome Por isso que eu pedi uma restrição entre 03 campos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao por isso que falei era outra dica, para usar UNIQUE é em casos onde nao pode haver duplicação de campos por exemplo CPF, CNPJ, RG, etc. onde esses valores sao unicos de cada pessoa e nao pode existir 2 iguais

 

dai no seu caso voce precisa ver qual campo você nao quer deixar que se repita, porque fazer um select para ver se o campo ja existe e nao deixar gravar da na mesma que usar o UNIQUE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resumidamente....//Pagina que recebe os valores do formulário e insere no BD1-Recebe os valores do formulário.2-Faz uma busca no banco de dados usando WHERE email='$email'if(mysql_num_rows($sql)!=0){ //Se retornar algum resultado é porque o usuário já está cadastradoecho 'Usuário já cadastrado!';}else{insere no banco;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tive serios problemas com duplicação de dados tambem, so que eu não podia validar se ja existia ou não os dados ja cadastrados, a pessoa podia cadastra no maximo de 5 vezes com o mesmo CPF porem com cargos diferentes, percebi que as vezes apareciam dados repetindo mais de 8 vezes mesmo com o bloqueio do CPF, ai fazendo alguns testes percebi que se a pessoa clicasse varias vezes no botão de cadastro , o cadastro duplicava no banco, foi so colocar um script no botão submit para ser dessabilitado assim que a pessoa clicasse uma vez, acho que isso resolve seu problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros colegas estou aqui novamente, e como iniciante tenho dúvidas e muitas, e tambem posso cometer muitos deslizes em palavras técnicas, mas eu acho, "NÂO" tenho certeza de que este forum serve para tirar dúvidas mesmo sendo absurdas.

 

- Tenho certeza que terei a resposta pois vou batalhar para ter exodo nesta enquete e acredito neste forum. Bem chega de lero lero.

 

Reparem logo abaixo que para motivos de teste e tambem para aprendizagem estou fazendo uma restrinção com somente dois campos EMPRESA e CONTATO, para que quando o usuário postar o nome de uma empresa e de um contato se os doi estiverem no banco de dados da a seguite mensagem "Cadastro existente em nossos registros" Exemplo;

 

no banco de dados tenho o seguinte cadastro

id: 1----------contato: Luiz----------empresa: Eng-Ranch

id: 2----------contato: Luiz----------empresa: Marcopel

id: 3----------contato: Luiz----------empresa: Skytec

id: 5----------contato: Márcio-------empresa: Skytec

---------------------------------------------------------------

Estão vendo que Contatos iguais mas em empresas diferentes e vice versa e nunca os dois campos com dados iguais

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Eu gostaria de saber o que estou fazendo de errado, neste script

 

<HTML><HEAD> <TITLE>Como evitar duplicação</TITLE></HEAD><BODY><?$con = mysql_connect("localhost", "root", "") or die ("Servidor não encontrado");mysql_select_db("bd") or die ("Erro em acessar banco de dados");# - Altera os espaços adicionando no lugar do simbolo %$palavra = str_replace(" ", "%", $_POST['empresa']);$consulta = "SELECT * FROM clientes WHERE empresa LIKE '%".$palavra."%' ORDER BY id DESC";$resultado = mysql_query($consulta) or die ("Erro na consulta");	  while($r = mysql_fetch_array($resultado)) { // Gera o Loop com os resultados			if($_POST['empresa'] == $r['empresa'] and $_POST['contato'] == $r['contato']) {							   echo "Cadastro existente em nossos registros";		   }if($_POST['empresa'] != $r['empresa'] and $_POST['contato'] != $r['contato']) {							   $sql = "INSERT INTO clientes (empresa,contato) VALUES (							   '".$_POST['empresa']."','".$_POST['contato']."')";$sql = mysql_query($sql)or die ("Houve erro na gravação dos dados.");}}?></BODY></HTML>

 

 

Espero que os mais experientes me compreendam, Um dia espero contribuir

 

AGUARDO RESPOSTA http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros colegas estou aqui novamente, e como iniciante tenho dúvidas e muitas, e tambem posso cometer muitos deslizes em palavras técnicas, mas eu acho, "NÂO" tenho certeza de que este forum serve para tirar dúvidas mesmo sendo absurdas.- Tenho certeza que terei a resposta pois vou batalhar para ter exodo nesta enquete e acredito neste forum. Bem chega de lero lero.Reparem logo abaixo que para motivos de teste e tambem para aprendizagem estou fazendo uma restrinção com somente dois campos EMPRESA e CONTATO, para que quando o usuário postar o nome de uma empresa e de um contato se os doi estiverem no banco de dados da a seguite mensagem "Cadastro existente em nossos registros" Exemplo;no banco de dados tenho o seguinte cadastroid: 1----------contato: Luiz----------empresa: Eng-Ranchid: 2----------contato: Luiz----------empresa: Marcopelid: 3----------contato: Luiz----------empresa: Skytecid: 5----------contato: Márcio-------empresa: Skytec---------------------------------------------------------------Estão vendo que Contatos iguais mas em empresas diferentes e vice versa e nunca os campos com dados iguais >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Eu gostaria de saber o que estou fazendo de errado, neste script

<HTML><HEAD> <TITLE>Como evitar duplicação</TITLE></HEAD><BODY><?$con = mysql_connect("localhost", "root", "") or die ("Servidor não encontrado");mysql_select_db("bd") or die ("Erro em acessar banco de dados");# - Altera os espaços adicionando no lugar do simbolo %$palavra = str_replace(" ", "%", $_POST['empresa']);$consulta = "SELECT * FROM clientes WHERE empresa LIKE '%".$palavra."%' ORDER BY id DESC";$resultado = mysql_query($consulta) or die ("Erro na consulta");	  while($r = mysql_fetch_array($resultado)) { // Gera o Loop com os resultados			if($_POST['empresa'] == $r['empresa'] and $_POST['contato'] == $r['contato']) {							   echo "Cadastro existente em nossos registros";		   }if($_POST['empresa'] != $r['empresa'] and $_POST['contato'] != $r['contato']) {							   $sql = "INSERT INTO clientes (empresa,contato) VALUES (							   '".$_POST['empresa']."','".$_POST['contato']."')";$sql = mysql_query($sql)or die ("Houve erro na gravação dos dados.");}}?></BODY></HTML>
Espero que os mais experientes me compreendam, Um dia espero contribuirAGUARDO RESPOSTA http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
luizchequini, você já testou ele, deu algum erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro não mas Quando digito os dois campos que ja estão cadastrados no banco de dados eu recebo a mensagem no browser Cadastro existente em nossos registros mas mesmo assim o programa cadastra e não obedecendo o outro if

Compartilhar este post


Link para o post
Compartilhar em outros sites

talvez nao seja isso, mas no segundo if em vez de if, tente usar else if

 

ou entao somente o else

if($_POST['empresa'] == $r['empresa'] and $_POST['contato'] == $r['contato']) {							   echo "Cadastro existente em nossos registros";		   }		   else {							   $sql = "INSERT INTO clientes (empresa,contato) VALUES (							   '".$_POST['empresa']."','".$_POST['contato']."')";								 $sql = mysql_query($sql)								  or die ("Houve erro na gravação dos dados.");			 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ontem depois dos POST realizados fiz alguns teste e percebi que tem algo de errado e não estou conseguindo resolver.

 

no banco de dados tenho o seguinte cadastro

id: 1----------contato: Andre----------empresa: Skytec

id: 2----------contato: Luiz-------------empresa: Skytec

id: 3----------contato: Marcio---------empresa: Skytec

 

Quando digito

Cliente---------------Contato-------------Resultado no browser

 

Skytec-----------------Andre-------------- Não existe este cadastroNão existe este cadastroExiste este cadastro

Skytec-----------------Luiz---------------- Não existe este cadastroExiste este cadastro

Skytec-----------------Marcio---------------- Existe este cadastro

 

 

 

<HTML><HEAD> <TITLE>Documento PHP</TITLE></HEAD><BODY><?$con = mysql_connect("localhost", "root", "") or die ("Erro na conexão ao banco de dados.");$db  = mysql_select_db("bd") or die ("Erro ao selecionar a base de dados.");$palavra = str_replace(" ", "%", $_POST['empresa']);$consulta = "SELECT * FROM clientes WHERE empresa LIKE '%".$palavra."%' ORDER BY id DESC";$resultado = mysql_query($consulta) or die ("Erro na consulta");	  while($r = mysql_fetch_array($resultado)){  // Gera o Loop com os resultadosif($_POST['empresa'] == $r['empresa'] and $_POST['contato'] == $r['contato']) {							   echo "Existe este cadastro";							   break;		   }//Aqui eu coloquei uma frase em vez de fazer um cadastro		   else{ echo"Não existe este cadastro";		  }		  }?></BODY></HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Luiz antes de voce proceguir gostaria de dar uma dica, nao se deve cadastrar toda hora uma empresa, o correto é voce criar uma tabela para cadastrar as empresas e no cadastro de usuario voce apenas mostra as empresas cadastradas num combo dai o usuario escolhe a empresa e cadastra o resto, e depois é só fazer os relacionamentos normal, assim alem de fazer do jeito certo ja evita que voce fique cadastrando a mesma empresa para varias pessoas

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Fabyo eu não entendi direito o seu post poderia me explicar melhor.

 

Viu sera que é possivel de fazer isso ou é impossivel em PHP, eu tenho certeza que tem pois por enquanto esta fora do meu alcançe por isso estou pedindo o auxilio dos EXPERT na área, será que alguem poderia dar uma mão para solucionar esta dúvida para mim.

 

 

Obrigado pela compreesão.

 

Agradeço a todos e aguardo resposta http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao tem nada de impossivel nisso, o que é dificil é que você nao entende muito de programação entao pode parecer impossivel pra você mas nao pra linguagem, o que você quer fazer é simples, mas pra você aprender é com o tempo e vendo exemplos estudando, eu postei uns exemplos de sistema de cadastro da uma olhada você vai entender melhor sobre relacionamentos

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.