LipeLauro 0 Denunciar post Postado Dezembro 21, 2011 Amigos, bom dia a todos! No sistema tem uma mensagem de erro onde informa se um CPF já está cadastrado no sistema, porém, mesmo se o usuário não preencher o campo CPF, a mensagem de erro é informada. No caso do campo CPF não ser preenchido, a mensagem de erro não deve ser informada e o cadastro deverá ser efetuado com sucesso, mesmo porque o campo CPF não é obrigatório. Onde errei? O que está faltando nesse código? foreach ($_POST as $campo => $valor) { $$campo = strip_tags($valor); } $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF'"; $query = mysql_query($sql); $total = mysql_num_rows($query); if($total == 0){ $query = "INSERT INTO clientes(empresas_idempresas, tipopessoa, nomecliente, nomefantasia, ramo, cpf, rg, cnpj, ie, logradouro, numero, complemento, bairro, cep, cidade, uf, tipotel, numerotel, fax, observacaotel, tiponet, email, observacaonet, tiporeferencia, nomereferencia, telefonereferencia, bancoreferencia, logradouro2, numero2, complemento2, bairro2, cep2, cidade2, uf2, tipoobservacao, observacaocliente, datacadastro) VALUES ('$varEmpresas_idempresas', '$varTipopessoa', '$varNome', '$varFantasia', '$varRamo', '$varCPF', '$varRG', '$varCNPJ', '$varIE', '$varLogradouro', '$varNumero', '$varComplemento', '$varBairro', '$varCEP', '$varCidade', '$varUF', '$varTipotel', '$varNumerotel', '$varFax', '$varObservacaotel', '$varTiponet', '$varContatonet', '$varObservacaonet', '$varTiporef', '$varNomeref', '$varTelefoneref', '$varBancoref', '$varLogradouro2', '$varNumero2', '$varComplemento2', '$varBairro2', '$varCEP2', '$varCidade2', '$varUF2', '$varTipoobs', '$varObservacaocliente', '$varDatacadastro')"; $result = mysql_query($query); } else{ echo "<a class='gridmsg'>CPF ja cadastrado no sistema!<a><br>"; } Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Dezembro 21, 2011 verifique antes se o cpf é vazio ou não. pq sempre q for vazio vai cair no else. se o cpf for vazio da um return ou exit verifique antes se o cpf é vazio ou não. pq sempre q for vazio vai cair no else. se o cpf for vazio da um return ou exit Compartilhar este post Link para o post Compartilhar em outros sites
LipeLauro 0 Denunciar post Postado Dezembro 21, 2011 Sim, preciso fazer isso... mas como fazer essa verificação? Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Dezembro 21, 2011 if($varCPF == ""){ exit; } so n sei da onde vem o $varCPF Compartilhar este post Link para o post Compartilhar em outros sites
LipeLauro 0 Denunciar post Postado Dezembro 21, 2011 Com esse complemento, não mostrou a mensagem mas também não gravou o cadastro. :( Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 21, 2011 mais alguma dica? :) Este tipo de post não é permitido. Sugiro que leia as orientações para uma boa participação. ------------- Sobre a sua dúvida, você precisa adicionar a condição do CPF no mesmo if. if(($total == 0) || empty($varCPF)){ Deve funcionar. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
LipeLauro 0 Denunciar post Postado Dezembro 21, 2011 Mil perdões Matias pelo post inadequado, prometo não repetir tal erro. A sua dica funcionou perfeitamente! Muito obrigado pela ajuda! Grande abraço! Apareceu outro problema nesse sentido! :( O sistema é usado por duas empresas distintas, onde cada uma tem seu idempresa e uma não vê os registros da outra. Nesse caso, imaginemos que um CPF é cliente da empresa A e posteriormente se torna cliente da empresa B, logo, a empresa B irá fazer o cadastro e o sistema emitirá a mensagem: "CPF já cadastrado no sistema!". E agora? como resolver isso? :| Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 21, 2011 Adiciona o id da empresa que está consultado na cláusula where da primeira consulta, a que vê se o CPF está cadastrado. Algo assim: $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF' AND empresas_idempresas = $idDaEmpresa "; Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
LipeLauro 0 Denunciar post Postado Dezembro 21, 2011 Coloquei, porém, agora ele deixa repetir o CPF... :| Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 21, 2011 Dentro da mesma empresa? Poste o código como ficou. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
LipeLauro 0 Denunciar post Postado Dezembro 21, 2011 Isso mesmo, tá deixando duplicar o CPF dentro da mesma empresa. Veja só, eu pego a sessão da empresa desta forma no início do código: <?php session_start(); if (!isset($_SESSION["empresas_idempresas"]) || !isset($_SESSION["senha"]) || !isset($_SESSION["login"]) || ($_SESSION["nivel"])... ?> Agora vem a parte interessada: $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF' AND empresas_idempresas = empresas_idempresas "; $query = mysql_query($sql); $total = mysql_num_rows($query); if(($total == 0) || empty($varCPF)){ $query = "INSERT INTO clientes(empresas_idempresas, tipopessoa, nomecliente, nomefantasia, ramo, cpf, rg, cnpj, ie, logradouro, numero, complemento, bairro, cep, cidade, uf, tipotel, numerotel, fax, observacaotel, tiponet, email, observacaonet, tiporeferencia, nomereferencia, telefonereferencia, bancoreferencia, logradouro2, numero2, complemento2, bairro2, cep2, cidade2, uf2, tipoobservacao, observacaocliente, datacadastro) VALUES ('$varEmpresas_idempresas', '$varTipopessoa', '$varNome', '$varFantasia', '$varRamo', '$varCPF', '$varRG', '$varCNPJ', '$varIE', '$varLogradouro', '$varNumero', '$varComplemento', '$varBairro', '$varCEP', '$varCidade', '$varUF', '$varTipotel', '$varNumerotel', '$varFax', '$varObservacaotel', '$varTiponet', '$varContatonet', '$varObservacaonet', '$varTiporef', '$varNomeref', '$varTelefoneref', '$varBancoref', '$varLogradouro2', '$varNumero2', '$varComplemento2', '$varBairro2', '$varCEP2', '$varCidade2', '$varUF2', '$varTipoobs', '$varObservacaocliente', '$varDatacadastro')"; $result = mysql_query($query); } else { echo "<a class='gridmsg'>CPF já cadastrado no sistema!<a><br>"; } if($result) $msg = "<a class='gridmsgok'>Cliente cadastrado com sucesso!<a> <br>"; else $msg = "<a class='gridmsg'>Erro ao cadastrar cliente!<a><br>".mysql_error(); } if(isset($msg)) { echo utf8_encode($msg); } Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 22, 2011 $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF' AND empresas_idempresas = empresas_idempresas "; Olha bem com atenção a condição... se empresass_idempresas = empresas_idempresas... ou seja, isto SEMPRE vai ser verdadeiro. Na segunda parte deve estar a variável que recebe o id da empresa que está acessando. Parece ser $_SESSION['empresas_idempresas']. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
LipeLauro 0 Denunciar post Postado Dezembro 22, 2011 Bom dia amigo! Tentei das seguintes formas: $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF' AND empresas_idempresas = $_SESSION[empresas_idempresas] "; $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF' AND empresas_idempresas = $idempresas "; $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF' AND empresas_idempresas = $empresas_idempresas "; E mesmo assim continua permitindo a duplicidade do CPF na mesma empresa. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 22, 2011 Agora é debugar, exibindo a consulta antes de executar, colocando pra exibir todos os erros, inclusive possíveis erros do mysql, encontrando a variável que está o id da empresa. Você leu o link que eu postei antes, sobre as orientações para participação? Sugiro que leia, pois tem coisas lá que você não fez ainda, senão apareceriam mensagens de erro. Leia o tópico e siga as orientações. Se conseguir resolver sozinho, poste aqui a solução. Se não conseguir, poste o que tentou fazer, quais erros apareceram, enfim, os resultados do debug. Abraços Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
LipeLauro 0 Denunciar post Postado Dezembro 22, 2011 Pronto, encontrei o problema, rsrsrsr... Na realidade eu acabei alterando o código e apartir dai o problema surgiu. Como eu queria a rotina também no CNPJ acabei acrescentando o $varCNPJ no código: if(($total == 0) || empty($varCPF)){ ficando da seguinte forma: if(($total == 0) || empty($varCPF) || empty($varCNPJ)){ Então ele começou a deixar duplicar o CPF. Retirei o empty($varCNPJ) e começou a funcionar perfeitamente, deixando cadastrar um CPF na empresa B que já havia sido cadastrado na empresa A e não deixou duplicar o CPF na mesma empresa. O select ficou da seguinte forma: $sql = "SELECT * FROM clientes WHERE cpf = '$varCPF' AND empresas_idempresas = '$empresas_idempresas'"; Abraços :) Compartilhar este post Link para o post Compartilhar em outros sites