Ir para conteúdo

POWERED BY:

Arquivado

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

LipeLauro

[Resolvido] Mensagem de erro!

Recommended Posts

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

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

if($varCPF == ""){
 exit;
}

 

so n sei da onde vem o $varCPF

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

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

$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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.