Ir para conteúdo

Arquivado

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

iFull

Problema com ELSE IF

Recommended Posts

Beleza galera? Estou tentando fazer a validação do CPF, mas está dando um erro, não sei se fiz muito certo, depois de retornar a validação ele teria que fazer a busca no BD, e retornando sim ou não fazer outra ação :/

 

A validação do CPF está 100%, problema são nos IF/ELSE mesmo.

 

Mas parece que ta zikado, vou postar o COD.

<?php include 'header.php'; 
if (isset($_SESSION["cliente"]))
{
    ?>
<script>
    document.location.href="carrinho3.php";
</script>
<?php
/*
@autor: Moacir Selínger Fernandes

Qualquer dúvida é só mandar um email
*/
 
// Função que valida o CPF
function validaCPF($cpf)
{	// Verifiva se o número digitado contém todos os digitos
    $cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);
	
	// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
    if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
	{
	return false;
    }
	else
	{   // Calcula os números para verificar se o CPF é verdadeiro
        for ($t = 9; $t < 11; $t++) {
            for ($d = 0, $c = 0; $c < $t; $c++) {
                $d += $cpf{$c} * (($t + 1) - $c);
            }
 
            $d = ((10 * $d) % 11) % 10;
 
            if ($cpf{$c} != $d) {
                return false;
            }
        }
 
        return true;
    }
}
// Verifica se o botão de validação foi acionado
if(isset($_POST['btvalidar']))
	{// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima
	$cpf_enviado = validaCPF($_POST['cpf']);
	// Verifica a resposta da função e exibe na tela
	if($cpf_enviado == true)
		{
    $cpf = $_POST["cpf"];
    $objCliente = new Cliente();
    $retorno = $objCliente->listar("where rcpf ='$cpf'");
    if($retorno)
    {
        $_SESSION["cliente"] = $retorno[0];
     ?>
<script>
    document.location.href="carrinho3.php";
</script>

<?php

    }

    else {
            $mensagem = "Certifique que você digitou um CPF válido, somente números.";
         }
    
    }
    else {
        $mensagem = "";
}
	else if($cpf_enviado == false)
		echo "CPF FALSO";
	}
?>

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a mensagem de erro, habilite as logs, posso estar falando besteira mas creio q se voc use else if() o php espera tbm um else final ...reforço posso estar falando besteira..mas poste a msg de error

 

A mensagem é essa: Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\cpf.php on line 72

Compartilhar este post


Link para o post
Compartilhar em outros sites

você esta dando else...e depois else if..quando deveria ser o contrário

Eu não entendi a lógica,

 

Não seria o correto, porque eu dei IF {se for true=vai executar a busca no bd, ai tem os else's mas não fazem parte desse código? } ai depois vem o elseif ou else if?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} else {
    echo "a is smaller than b";
}
?>

Fonte: http://php.net/manual/pt_BR/control-structures.elseif.php

 

 

Cara, ok. Mas funciona só com a validação. Porque depois que eu adicionei a busca no bd não funciona mais?

 

codigo original é assim:

<?php
/*
@autor: Moacir Selínger Fernandes
@email: hassed@hassed.com
Qualquer dúvida é só mandar um email
*/
 
// Função que valida o CPF
function validaCPF($cpf)
{	// Verifiva se o número digitado contém todos os digitos
    $cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);
	
	// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
    if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
	{
	return false;
    }
	else
	{   // Calcula os números para verificar se o CPF é verdadeiro
        for ($t = 9; $t < 11; $t++) {
            for ($d = 0, $c = 0; $c < $t; $c++) {
                $d += $cpf{$c} * (($t + 1) - $c);
            }
 
            $d = ((10 * $d) % 11) % 10;
 
            if ($cpf{$c} != $d) {
                return false;
            }
        }
 
        return true;
    }
}
// Verifica se o botão de validação foi acionado
if(isset($_POST['btvalidar']))
	{// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima
	$cpf_enviado = validaCPF($_POST['cpf']);
	// Verifica a resposta da função e exibe na tela
	if($cpf_enviado == true)
		echo "CPF VERDADEIRO";
	elseif($cpf_enviado == false)
		echo "CPF FALSO";
	}
?>
<html>
<head>
</head>
<body>
<form action="valida_cpf.php" method="post" name="cpf" id="cpf">
  CPF: 
  <label>
  <input name="cpf" type="text" id="cpf" size="11" maxlength="11">
  </label>
  <label>
  <input name="btvalidar" type="submit" id="btvalidar" value="  Validar  ">
  </label>
</form>
</body>
</html>

E só assim, funciona perfeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, pensa comigo....você no primeiro código lá em cima está validando duas vezes se o cpf é falso...

if(cpf == true){

echo ok;

}

else{

echo 'logicamente, vai exibir essa msg se o cpf for falso';

}

else if(cpf == falso de novo??){

echo Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\cpf.php on line 72.'<br>';

echo "Não gostei disso, é errado!";

}

 

 

o que você quer é uma tratativa de erro, como no exemplo do usuário usar caracteres que não sejam números...coloque tudo no else:

 

if($cpf) {

echo 'cpf ok';

}else{

echo 'cpf inválido, entre apenas com números, preencha o cpf de forma corrida e sem caracteres';

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, pensa comigo....você no primeiro código lá em cima está validando duas vezes se o cpf é falso...

if(cpf == true){

echo ok;

}

else{

echo 'logicamente, vai exibir essa msg se o cpf for falso';

}

else if(cpf == falso de novo??){

echo Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\cpf.php on line 72.'<br>';

echo "Não gostei disso, é errado!";

}

 

 

o que você quer é uma tratativa de erro, como no exemplo do usuário usar caracteres que não sejam números...coloque tudo no else:

 

if($cpf) {

echo 'cpf ok';

}else{

echo 'cpf inválido, entre apenas com números, preencha o cpf de forma corrida e sem caracteres';

}

 

Ok, vou fazer isso, obrigado pela sua atenção amigão! Te dou um retorno se consegui aqui blz? 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.