JRRC 0 Denunciar post Postado Novembro 29, 2009 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
Beraldo 864 Denunciar post Postado Novembro 29, 2009 execute um SELECT no banco passando o CPF no WHERE. Se retornar resultado, o CPF já está cadastrado Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Novembro 29, 2009 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
Beraldo 864 Denunciar post Postado Novembro 29, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Novembro 29, 2009 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
Matias Rezende 50 Denunciar post Postado Novembro 29, 2009 Poste como ficou o seu código. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Novembro 29, 2009 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
Matias Rezende 50 Denunciar post Postado Novembro 29, 2009 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
JRRC 0 Denunciar post Postado Novembro 29, 2009 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
Beraldo 864 Denunciar post Postado Novembro 29, 2009 tente novamente com esta consulta: $sql = "SELECT COUNT(*) as existe FROM cliente WHERE cpf = '" . $cpf . "'"; Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Novembro 30, 2009 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
Beraldo 864 Denunciar post Postado Novembro 30, 2009 qual SGBD está usando? E dê um echo em $sql para ver como a consulta está ficando Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Novembro 30, 2009 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
Dee 0 Denunciar post Postado Novembro 30, 2009 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
Roberto_S_Luz 2 Denunciar post Postado Novembro 30, 2009 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
JRRC 0 Denunciar post Postado Novembro 30, 2009 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 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 Compartilhar este post Link para o post Compartilhar em outros sites
JRRC 0 Denunciar post Postado Novembro 30, 2009 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
Roberto_S_Luz 2 Denunciar post Postado Novembro 30, 2009 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
JRRC 0 Denunciar post Postado Dezembro 1, 2009 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
JRRC 0 Denunciar post Postado Dezembro 1, 2009 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