Ir para conteúdo

POWERED BY:

Arquivado

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

JRRC

Verificar se CPF já foi cadastrado

Recommended Posts

Boa a tarde a todos do iMasters,

 

Eu gostaria de saber o que devo fazer para verificar se um determinado CPF ja foi cadastrado, e caso ela ja tenha sido cadastrado mostrar uma mensagem igual um alert em javascript.

 

Mais o problema é que nao sei como que se faz isso, alguém por favor poderia me dizer como que eu faço isso ?! Só lembrando que não estou fazendo isso através de SESSION e sim uma verificação normal.

 

Sendo que o CPF fica em uma tabela chamada cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

execute um SELECT no banco passando o CPF no WHERE. Se retornar resultado, o CPF já está cadastrado

 

Fiz a consulta da forma que está abaixo, e na hora que eu tentei cadastrar ele deu a mensagem, no entanto ele realizou assim um cadastro mais com tudo em branco.. E tem um outro problema, sempre que tento entrar agora para realizar um novo registro ele fica aparecendo direto o alertt.

 

A consulta:

 

$cpf = mysql_escape_string($_GET['CPF']);
$sql = "SELECT COUNT(cpf) as existe FROM cliente WHERE cpf = '{$cpf}' LIMIT 1;";
$resultado = mysql_query($sql, $conexao);
$linha = mysql_fetch_array($resultado);
if ($linha['existe']) 
{
	echo 'Login ja cadastrado no sistema!';
} 
else 
{


		$sql = "INSERT INTO cliente(nome, cpf, rg, sexo, endereco, cidade, cep, uf, data_nascimento, email, ddd, ddd1, fone, cadastro, celular)           
   				VALUES('$nome', '$cpf', '$rg', '$sexo', '$endereco', '$cidade', '$cep', '$uf', '$data_nascimento', '$email', '$ddd', '$ddd1', '$fone', '$cadastro', '$celular')
				";					         

$query=mysql_query($sql) or die ("Não foi possivel inserir os dados". mysql_error());

mysql_close($conexao);
header("location: ../index.php?link=1");

}

?>

 

Que que pode está de errado nesse código para isso acontecer ?! Só lembrando que ja coloquei o CPF como UNIQUE no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

impossível. não há como estar entrando no if e no else o mesmo tempo

 

dÊ um echo em $linha['existe'] para ver o que está sendo retornado

 

Opaaaa deu certo mais nao deu certo

 

O erro estava acontecendoo porque eu tinha colocado a mesma consulta para verificar o CPF no formulário de cadastro.

 

Agora quando tento cadastrar alguém com um CPF diferente ele tambem nao cadastra.. que que pode ser agora ?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste como ficou o seu código.

 

Carlos Eduardo

 

O codigo ficou assim

 

<?php

include "../conexao.php";
$nome 				  = $_GET["nome"];
$cpf 				  = $_GET["cpf"];
$rg 				  = $_GET["rg"];
$sexo				  = $_GET["sexo"];
   $endereco 			  = $_GET["endereco"];
$cidade 			  = $_GET["cidade"];
$cep				  = $_GET["cep"];
$uf					  = $_GET["uf"];
$data_nascimento 	  = $_GET["data_nascimento"];
$email			 	  = $_GET["email"];
$ddd				  = $_GET["ddd"];
$ddd1				  = $_GET["ddd1"];
$fone				  = $_GET["fone"];
$cadastro             = $_GET["cadastro"];
$celular			  = $_GET["celular"];

$cpf = mysql_escape_string($_GET['CPF']);
$sql = "SELECT COUNT(cpf) as existe FROM cliente WHERE cpf = '{$cpf}' LIMIT 1;";
$resultado = mysql_query($sql);
$linha = mysql_fetch_array($resultado);
if ($linha['existe']) 
{
	echo '<script> history.go(-1); alert("Login ja cadastrado no sistema!");</script>'; 
} 
else 
{


		$sql = "INSERT INTO cliente(nome, cpf, rg, sexo, endereco, cidade, cep, uf, data_nascimento, email, ddd, ddd1, fone, cadastro, celular)           
   				VALUES('$nome', '$cpf', '$rg', '$sexo', '$endereco', '$cidade', '$cep', '$uf', '$data_nascimento', '$email', '$ddd', '$ddd1', '$fone', '$cadastro', '$celular')
				";					         

$query=mysql_query($sql) or die ("Não foi possivel inserir os dados". mysql_error());

mysql_close($conexao);
	header("location: ../index.php?link=1");

}

?>

 

Ei dei um echo na $linha e ele me retornou o valor array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte. Coloque assim o código, para ver o que acontece.

$linha = mysql_fetch_array($resultado);
echo '<pre>';
print_r($linha);

Poste aqui o que retorna

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte. Coloque assim o código, para ver o que acontece.

$linha = mysql_fetch_array($resultado);
echo '<pre>';
print_r($linha);

Poste aqui o que retorna

 

Carlos Eduardo

 

Deixei da seguinte forma a consulta..

 

$cpf = mysql_escape_string($_GET['CPF']);
$sql = "SELECT COUNT(cpf) as existe FROM cliente WHERE cpf = '{$cpf}' LIMIT 1;";
$resultado = mysql_query($sql);
$linha = mysql_fetch_array($resultado);
echo '<pre>';
print_r($linha);
if ($linha['existe']) 
{
	echo "$linha";
} 
else 
{
          ...

 

E o seguinte resultado foi retornado:

 

Array

(

[0] => 1

[existe] => 1

)

Array

 

Só lembrando que estou entrando com um CPF diferente dos que ja tem cadastrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente novamente com esta consulta:

 

$sql = "SELECT COUNT(*) as existe FROM cliente WHERE cpf = '" . $cpf . "'";

 

Fiz a seleção dessa forma e ela me retornou o seguinte erro Parse error: syntax error, unexpected '*'

Estranho esse erro pois o * pedi para selecionado todos e ele está dando erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o resultado desse teste..

 

$cpf = mysql_escape_string($_GET['CPF']);

$sql = "SELECT cpf FROM cliente WHERE cpf = '{$cpf}' LIMIT 1;";
$resultado = mysql_query($sql);
$linha = mysql_fetch_array($resultado);

       echo $cpf . ' : ' . $linha['cpf']; exit;

if ($linha['cpf'] == $cpf ) 
{
	echo $linha;
} 
else 
{
          ...

        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você está usando $_GET, você não está pegando as informações de um Formulário ?

Então seria $_POST.

Compartilhar este post


Link para o post
Compartilhar em outros sites

JRRC já que você tá querendo uma consulta normal,pq você não faz algo bem simples mesmo....por exemplo:

 

$sql = "SELECT campo_cpf FROM cliente        WHERE campo_cpf = '".$cpf."'";$resultado  = mysql_query($sql);$linha      = mysql_fetch_assoc($resultado);//Monta o array$retorno    = mysql_num_rows ($resultado); //Verifica se encontrou algoif($retorno > 0 ){ //Se o retorno for maior que 0 (Zero), significa que o CPF a ser cadastrado já existe, pois na SQL excutada foi encontrado um igual      echo '<script> history.back(-1); alert("CPF ja cadastrado no sistema!");</script>'; }else{   // o resto do seu codigo de inserção}

Bom...espero que lhe sirva em algo ok

 

Abraços e boa sorte aí!!! :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o resultado desse teste..

 

$cpf = mysql_escape_string($_GET['CPF']);

$sql = "SELECT cpf FROM cliente WHERE cpf = '{$cpf}' LIMIT 1;";
$resultado = mysql_query($sql);
$linha = mysql_fetch_array($resultado);

echo $cpf . ' : ' . $linha['cpf']; exit;

if ($linha['cpf'] == $cpf )
{
echo $linha;
}
else
{
...

}

Com essa consulta nao retornou nenhum valor.. e nem cadastrou nada.

 

Com essa outra função abaixo o erro estava em um asterisco a mais que coloquei, mais o retirei e ele até que funcionou, mais cadastrou o cpf com NULL, ou seja, sem nada.. então nao deixou cadastrar mais nada.

 

$sql = "SELECT COUNT(*) as existe FROM cliente WHERE cpf = '" . $cpf . "'";

 

E com essa outra consulta aqui deu certo Imagem Postada para o INSERT

 

$sql = "SELECT campo_cpf FROM cliente
WHERE campo_cpf = '".$cpf."'";

$resultado = mysql_query($sql);
$linha = mysql_fetch_assoc($resultado);//Monta o array
$retorno = mysql_num_rows ($resultado); //Verifica se encontrou algo

if($retorno > 0 ){ //Se o retorno for maior que 0 (Zero), significa que o CPF a ser cadastrado já existe, pois na SQL excutada foi encontrado um igual

echo '<script> history.back(-1); alert("CPF ja cadastrado no sistema!");</script>';
}
else{

// o resto do seu codigo de inserção


}

 

E caso eu quisesse colocá-la no UPDATE como que seria ?! Eu gostaria dela no UPDATE tambem para evitar que durante uma alteração de dados alguém nao coloque o CPF igual a um outro ja cadastrado de proposito ou sem querer.

 

Como que seria?!

 

Coloquei da forma que está abaixo e fica aparecendo a mensagem do alert sempre que vou confirmar a alteração.

 

if ($opcao = "Alterar")
{
$sql = "SELECT cpf FROM cliente WHERE cpf = '".$cpf."'";
$resultado = mysql_query($sql);
$linha = mysql_fetch_assoc($resultado);//Monta o array
$retorno = mysql_num_rows ($resultado); //Verifica se encontrou algo

if($retorno < 0)
{
echo '<script> history.go(-1); alert("CPF já cadastrado no sistema!");</script>';
}
else
{

 

Desde de já muito obrigadoo pela ajuda de todos Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

No lugar de colocar if($retorno < 0) coloquei if($retorno != 0), então nao posso alterar um cpf e colocar um outro existente mais agora quando vou mudar apenas o nome ou alguma outra coisa ele nao deixa o CPF passar :S

 

Como que posso solucionar isso ?!

 

EDITANDO

 

Agora da forma que está abaixo e ele me deixa mudar o nome sem me retornar nenhum mensagem, no entanto se coloco o CPF igual a um já cadastrado em vez dele me mostrar o alert ele me mostra a seguinte mensagem Duplicate entry '123.456.789-10' for key 2. Então aonde que estou errando ai para ele não me mostrar o alert quando CPF for igual a um já cadastrado no banco ?! Coloquei o $retorno > 0 mais mesmo assim continuou a me mostra a mensagem anterior no lugar no alert

<?php
include "../conexao.php";

$codigo = $_GET["codigo"];
$opcao  = $_GET["opcao"];
$id		= $_GET["id"];

if ($opcao = "Alterar")
{
	$sql = "SELECT cpf FROM cliente WHERE cpf = '".$cpf."'";
			$resultado  = mysql_query($sql);
			$linha      = mysql_fetch_assoc($resultado);//Monta o array
			$retorno    = mysql_num_rows ($resultado); //Verifica se encontrou algo

	if($retorno != 0 && $id == $codigo)
	{
		echo '<script> history.go(-1); alert("CPF já cadastrado no sistema!");</script>'; 
	} 
	else 
	{

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá JRRC que bom que minha dica funcionou para a sua inserção... :joia:

 

Bom...agora em relação ao UPDATE, já passei pelo mesmo problema que o seu e me indicaram o seguinte.

 

1 - Como é um update, o cadastro poderá mudar algumas coisas como endereço, telefone, e-mail, enfim...mas...CPF ninguem muda né...sempre será o mesmo, sendo assim não é necessário colocá-lo pois sempre será o mesmo.Então a dica é...altere os outros dados, mas...deixe o campo CPF como está.

 

2 - Caso mesmo assim...você ainda desejar alterar o CPF, você terá que tirar a condição de único (UNIQUE KEY) no campo CPF na sua base da dados, com isso...ele poderá duplicar um CPF já existente, porém...você pode usar a mesma SQL que lhe passei para a inserção para ver se...o CPF já existe, caso sim...você não deixa inserir alertando que já existe um igual (é a mesma coisa na inserção ok).

 

Bom...no meu caso...alterei praticamente todos os outros dados, menos CPF pois não é necessário...pois o fulano de tal...sempre irá ter o mesmo CPF.

 

Porém vale lembrar que...estão querendo tirar o CPF e RG(se eu estiver falando besteiras...me perdoem)para colocar uma unica forma de identificação de pessoa fisica, então...se informe a respeito e...já deixe seu sistema apto para tal coisa ok.

 

Abraços...e precisando de ajuda...é só falar ok. :thumbsup:

Boa sorte!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá JRRC que bom que minha dica funcionou para a sua inserção... :joia:Bom...agora em relação ao UPDATE, já passei pelo mesmo problema que o seu e me indicaram o seguinte.1 - Como é um update, o cadastro poderá mudar algumas coisas como endereço, telefone, e-mail, enfim...mas...CPF ninguem muda né...sempre será o mesmo, sendo assim não é necessário colocá-lo pois sempre será o mesmo.Então a dica é...altere os outros dados, mas...deixe o campo CPF como está.2 - Caso mesmo assim...você ainda desejar alterar o CPF, você terá que tirar a condição de único (UNIQUE KEY) no campo CPF na sua base da dados, com isso...ele poderá duplicar um CPF já existente, porém...você pode usar a mesma SQL que lhe passei para a inserção para ver se...o CPF já existe, caso sim...você não deixa inserir alertando que já existe um igual (é a mesma coisa na inserção ok).Bom...no meu caso...alterei praticamente todos os outros dados, menos CPF pois não é necessário...pois o fulano de tal...sempre irá ter o mesmo CPF.Porém vale lembrar que...estão querendo tirar o CPF e RG(se eu estiver falando besteiras...me perdoem)para colocar uma unica forma de identificação de pessoa fisica, então...se informe a respeito e...já deixe seu sistema apto para tal coisa ok.Abraços...e precisando de ajuda...é só falar ok. :thumbsup:Boa sorte!!!

Roberto_S_Luz,Obrigado pelas dicas.. pensei em algo do tipo também em bloquar o campo CPF com um disable ou readonly,mais então pensei "E se sem querer na hora do cadastro o kra digitou o CPF errado ?!".Por isso, achei necessário deixa-lo ativo para alterações, mais é claro sem deixar que essa alteração possa vim a cadastrar um CPF ja existente.Vou fazer uns testes aqui,depois volto aqui para dizer os resultados.Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roberto_S_Luz,

 

Retirei o UNIQUE do CPF, e quando vou alterar algum CPF para um já existente no banco ele aparece a mensagem, no entanto se eu vou tentar mudar apenas o nome também aparece a mensagem.

 

Eitaa negocio complicado, credo!

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.