Ir para conteúdo
Fórum Script Brasil
  • 0

Validação De Formulário


frlouzada

Pergunta

Fala galera,

Estou com um probleminha no formulário abaixo. Tenho a função de validação do formulário MM_validateForm() que fiz algumas adaptações para validar CPF e CNPJ. Mas ela só está chamando a função de validar CPF. Mesmo quando o radio button está marcado em CNPJ ele está chamando a função validaCPF, sendo que quando o CNPJ estiver marcado ele deveria chamar a função validaCNPJ.

Alguém poderia me ajudar a identificar qual é o problema?

Código atualizado

<?
include("config.php");

  if($acao == 'cadastra'){
$sql = "SELECT * FROM users where login='$CampoNumero'";

$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

if(mysql_num_rows($resultado)>0) {

while ($linha=mysql_fetch_array($resultado)) {
$CampoNumero = $linha["loginc"];
}
}
if(($CampoNumero == $loginc) && ($CampoNumero != "")){
echo"<script>alert('Este CPF/CNPJ já está cadastrado. Entre com outro CPF/CNPJ');
history.back(-1);</script>";
}else{
    if (${"chkCPF"}=="on"){
        $nome = $_POST['nome'];
        $email = $_POST['email'];
        $ddd = $_POST['ddd'];
        $telefone = $_POST['telefone'];
        $endereco = $_POST['endereco'];
        $cep = $_POST['cep'];
        $cidade = $_POST['cidade'];
        $estado = $_POST['estado'];
        $cpf = $_POST['CampoNumero'];
        $cnpj = '';
        $login = $_POST['CampoNumero'];
        $senha = $_POST['senha'];
        $sql = mysql_query("Insert into users values('$id', '$nome', '$email', '$ddd', '$telefone', '$endereco', '$cep', '$cidade', '$estado', '$cpf', '$cnpj', '$login', '$senha')");

if($sql){
echo "<script>alert('Usuário cadastrado com sucesso.');
location.href='index.php';
</script>
";
} else {
echo "<script>alert('Não foi possível cadastrar usuário.');
history.back(-1);
</script>
";
}

    }else{
        $nome = $_POST['nome'];
        $email = $_POST['email'];
        $ddd = $_POST['ddd'];
        $telefone = $_POST['telefone'];
        $endereco = $_POST['endereco'];
        $cep = $_POST['cep'];
        $cidade = $_POST['cidade'];
        $estado = $_POST['estado'];
        $cpf = '';
        $cnpj = $_POST['CampoNumero'];
        $login = $_POST['CampoNumero'];
        $senha = $_POST['senha'];        
        $sql = mysql_query("Insert into users values('$id', '$nome', '$email', '$ddd', '$telefone', '$endereco', '$cep', '$cidade', '$estado', '$cpf', '$cnpj', '$login', '$senha')");

if($sql){
echo "<script>alert('Usuário cadastrado com sucesso.');
location.href='index.php';
</script>
";
} else {
echo "<script>alert('Não foi possível cadastrar usuário.');
history.back(-1);
</script>
";
}

    }
}
} else {
echo"
<HTML>
<head>
<title>$nsite</title>
</head>
<form action=\"cadastrar.php?acao=cadastra\" method=\"post\" onSubmit=\"MM_validateForm('nome','','R','email','','NisEmail','ddd','','RisNum','telefone','','RisNum','endereco','','R','cep','','RisNum','cidade','','R','estado','','R','CampoNumero','','RisNum','senha','','RinRange6:8');return document.MM_returnValue\">
<table width=\"100%\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr><td class=\"texto\">Nome:&nbsp;</td><td><input class=\"campo\" name=\"nome\" type=\"text\" size=\"30\" maxlength=\"255\"></td></tr>
<tr><td class=\"texto\">E-mail:&nbsp;</td><td><input class=\"campo\" name=\"email\" type=\"text\" size=\"30\" maxlength=\"100\"></td></tr>
<tr><td class=\"texto\">DDD(xx) - Telefone(somente números):&nbsp;</td><td><input class=\"campo\" name=\"ddd\" type=\"text\" size=\"2\" maxlength=\"2\">&nbsp;-&nbsp;<input class=\"campo\" name=\"telefone\" type=\"text\" size=\"15\" maxlength=\"8\"></td></tr>
<tr><td class=\"texto\">Endereço:&nbsp;</td><td><input class=\"campo\" name=\"endereco\" type=\"text\" size=\"30\"></td></tr>
<tr><td class=\"texto\">CEP (Somente números):&nbsp;</td><td><input class=\"campo\" name=\"cep\" type=\"text\" size=\"15\" maxlength=\"8\"></td></tr>
<tr><td class=\"texto\">Cidade:&nbsp;</td><td><input class=\"campo\" name=\"cidade\" type=\"text\" size=\"30\"></td></tr>
<tr><td class=\"texto\">Estado:&nbsp;</td><td><input class=\"campo\" name=\"estado\" type=\"text\" size=\"30\"></td></tr>
<tr><td class=\"texto\"><input type=\"radio\" name=\"chkCPF\" id=\"chkCPF\" value=\"on\" checked>CPF (pessoa física) ou</td></tr>
<tr><td class=\"texto\"><input type=\"radio\" name=\"chkCPF\" id=\"chkCPF\" value=\"off\">CNPJ (pessoa jurídica)</td></tr>
<tr><td class=\"texto\">N&uacute;mero (CPF/CNPJ):</td><td><input class=\"campo\" type=\"text\" name=\"CampoNumero\" id=\"CampoNumero\" size=\"18\" maxlength=\"14\"></td></tr>
<tr><td class=\"texto\">Senha:</td><td><input class=\"campo\" type=\"password\" name=\"senha\" id=\"senha\" size=\"18\" maxlength=\"8\"></td></tr>
<tr><td class=\"texto\"></td><td><input class=\"campo\" name=\"cadastrar\" type=\"submit\" value=\"Cadastrar\"></td></tr>
<tr><td class=\"texto\"></td><td><a href=java script:history.go(-1)>«« Voltar</a></td></tr>
</table>
</HTML>
";
} 
?>
<HTML>
<head>
<script language="JavaScript" type="text/JavaScript">
<!--

             function validaCPF(cpf) {
                 erro = new String;
                 if (cpf.length != 11) erro += "CPF deve conter 11 dígitos numéricos! \n\n";
                 var nonNumbers = /\D/;
                 if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";
                 if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
                         erro += "Numero de CPF invalido!"
               }
               var a = [];
               var b = new Number;
               var c = 11;
               for (i=0; i<11; i++){
                      a[i] = cpf.charAt(i);
                       if (i < 9) b += (a[i] * --c);
               }
               if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
               b = 0;
               c = 11;
               for (y=0; y<10; y++) b += (a[y] * c--);
               if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
               if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
                       erro +="Digito verificador com problema!";
               }
               if (erro.length > 0){
                       return erro;
               }
               return true;
       }


         function validaCNPJ(CNPJ) {
                 erro = new String;
                 if (CNPJ.length != 14) erro += "CNPJ deve conter 14 dígitos numéricos! \n\n";

                 //substituir os caracteres que não são números
               if(document.layers && parseInt(navigator.appVersion) == 4){
                       x = CNPJ.substring(0,2);
                       x += CNPJ.substring (3,6);
                       x += CNPJ.substring (7,10);
                       x += CNPJ.substring (11,14);
                       CNPJ = x;
               } else {
                       CNPJ = CNPJ.replace (".","");
                       CNPJ = CNPJ.replace (".","");
                       CNPJ = CNPJ.replace ("-","");
                       CNPJ = CNPJ.replace ("/","");
               }
               var nonNumbers = /\D/;
               if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! \n\n";
               var a = [];
               var b = new Number;
               var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
               for (i=0; i<12; i++){
                       a[i] = CNPJ.charAt(i);
                       b += a[i] * c[i+1];
 }
               if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
               b = 0;
               for (y=0; y<13; y++) {
                       b += (a[y] * c[y]);
               }
               if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
               if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
                       erro +="Dígito verificador com problema!";
               }
               if (erro.length > 0){
                       return erro;
               } else {
                       return true;
               }

      }

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,que,nm,test,num,min,max;
  var errors='';
  var args=MM_validateForm.arguments;
  var aux=document.getElementById('senha').value;
  var cpfcnpj=document.getElementById('CampoNumero').value;
  var checkcpf=document.getElementById('chkCPF').value;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='O campo '+nm+' requer um endereço de email válido.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='O campo '+nm+' aceita somente números.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (aux.length<min || max<aux.length) errors+='- '+nm+' deve conter no mínimo '+min+' dígitos e no máximo '+max+' dígitos.\n';
    } } } else if (test.charAt(0) == 'R') errors += 'O campo '+nm+' deve ser preenchido.\n'; }
  }  
  if (checkcpf == "on"){ aux = validaCPF(cpfcnpj); if (aux != true) errors += aux; } else {
  aux = validaCNPJ(cpfcnpj); if (aux != true) errors += aux; }
  if (errors) alert('Erro ao preencher o formulário:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->
</script>
</head>
</html>
Desculpem aí pela falta de identação!!! EDIT: Problema resolvido! Problema estava que os botões tipo radio estavam com o mesmo ID. Aqui vai código validando corretamente todos os campos.
<?
####################################
#    Protegendo páginas v. 2.5     #
#  Script desenvolvido por |paes|  #
####################################
include("config.php");

  if($acao == 'cadastra'){
$sql = "SELECT * FROM users where login='$CampoNumero'";

$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

if(mysql_num_rows($resultado)>0) {

while ($linha=mysql_fetch_array($resultado)) {
$CampoNumero = $linha["loginc"];
}
}
if(($CampoNumero == $loginc) && ($CampoNumero != "")){
echo"<script>alert('Este CPF/CNPJ já está cadastrado. Entre com outro CPF/CNPJ');
history.back(-1);</script>";
}else{
    if (${"chkCPF"}=="on"){
        $nome = $_POST['nome'];
        $email = $_POST['email'];
        $ddd = $_POST['ddd'];
        $telefone = $_POST['telefone'];
        $endereco = $_POST['endereco'];
        $cep = $_POST['cep'];
        $cidade = $_POST['cidade'];
        $estado = $_POST['estado'];
        $cpf = $_POST['CampoNumero'];
        $cnpj = '';
        $login = $_POST['CampoNumero'];
        $senha = $_POST['senha'];
        $sql = mysql_query("Insert into users values('$id', '$nome', '$email', '$ddd', '$telefone', '$endereco', '$cep', '$cidade', '$estado', '$cpf', '$cnpj', '$login', '$senha')");

if($sql){
echo "<script>alert('Usuário cadastrado com sucesso.');
location.href='index.php';
</script>
";
} else {
echo "<script>alert('Não foi possível cadastrar usuário.');
history.back(-1);
</script>
";
}

    }else{
        $nome = $_POST['nome'];
        $email = $_POST['email'];
        $ddd = $_POST['ddd'];
        $telefone = $_POST['telefone'];
        $endereco = $_POST['endereco'];
        $cep = $_POST['cep'];
        $cidade = $_POST['cidade'];
        $estado = $_POST['estado'];
        $cpf = '';
        $cnpj = $_POST['CampoNumero'];
        $login = $_POST['CampoNumero'];
        $senha = $_POST['senha'];        
        $sql = mysql_query("Insert into users values('$id', '$nome', '$email', '$ddd', '$telefone', '$endereco', '$cep', '$cidade', '$estado', '$cpf', '$cnpj', '$login', '$senha')");

if($sql){
echo "<script>alert('Usuário cadastrado com sucesso.');
location.href='index.php';
</script>
";
} else {
echo "<script>alert('Não foi possível cadastrar usuário.');
history.back(-1);
</script>
";
}

    }
}
} else {
echo"
<HTML>
<head>
<title>$nsite</title>
</head>
<form action=\"cadastrar.php?acao=cadastra\" method=\"post\" onSubmit=\"MM_validateForm('nome','','R','email','','NisEmail','ddd','','RisNum','telefone','','RisNum','endereco','','R','cep','','RisNum','cidade','','R','estado','','R','CampoNumero','','RisNum','senha','','RinRange6:8');return document.MM_returnValue\">
<table width=\"100%\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr valign=\"top\"><td align=\"center\" colspan=\"2\"><h1>Cadastro de Clientes</h1></td></tr>
<tr><td colspan=\"2\">&nbsp;</td></tr>
<tr><td class=\"texto\">Nome:&nbsp;</td><td><input class=\"campo\" name=\"nome\" type=\"text\" size=\"30\" maxlength=\"255\"></td></tr>
<tr><td class=\"texto\">E-mail:&nbsp;</td><td><input class=\"campo\" name=\"email\" type=\"text\" size=\"30\" maxlength=\"100\"></td></tr>
<tr><td class=\"texto\">DDD(xx) - Telefone(somente números):&nbsp;</td><td><input class=\"campo\" name=\"ddd\" type=\"text\" size=\"2\" maxlength=\"2\">&nbsp;-&nbsp;<input class=\"campo\" name=\"telefone\" type=\"text\" size=\"15\" maxlength=\"8\"></td></tr>
<tr><td class=\"texto\">Endereço:&nbsp;</td><td><input class=\"campo\" name=\"endereco\" type=\"text\" size=\"30\"></td></tr>
<tr><td class=\"texto\">CEP (Somente números):&nbsp;</td><td><input class=\"campo\" name=\"cep\" type=\"text\" size=\"15\" maxlength=\"8\"></td></tr>
<tr><td class=\"texto\">Cidade:&nbsp;</td><td><input class=\"campo\" name=\"cidade\" type=\"text\" size=\"30\"></td></tr>
<tr><td class=\"texto\">Estado:&nbsp;</td><td><input class=\"campo\" name=\"estado\" type=\"text\" size=\"30\"></td></tr>
<tr><td class=\"texto\"><input type=\"radio\" name=\"chkCPF\" id=\"chkCPF\" value=\"on\" checked>CPF (pessoa física) ou</td></tr>
<tr><td class=\"texto\"><input type=\"radio\" name=\"chkCPF\" id=\"chkCNPJ\" value=\"off\">CNPJ (pessoa jurídica)</td></tr>
<tr><td class=\"texto\">N&uacute;mero (CPF/CNPJ):</td><td><input class=\"campo\" type=\"text\" name=\"CampoNumero\" id=\"CampoNumero\" size=\"18\" maxlength=\"14\"></td></tr>
<tr><td class=\"texto\">Senha:</td><td><input class=\"campo\" type=\"password\" name=\"senha\" id=\"senha\" size=\"18\" maxlength=\"8\"></td></tr>
<tr><td class=\"texto\"></td><td><input class=\"campo\" name=\"cadastrar\" type=\"submit\" value=\"Cadastrar\"></td></tr>
<tr><td class=\"texto\"></td><td><a href=java script:history.go(-1)>«« Voltar</a></td></tr>
</table>
</HTML>
";
} 
?>
<HTML>
<head>
<script language="JavaScript" type="text/JavaScript">
<!--

             function validaCPF(cpf) {
                 erro = new String;
                 if (cpf.length != 11) erro += "CPF deve conter 11 dígitos numéricos! \n";
                 var nonNumbers = /\D/;
                 if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n";
                 if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
                         erro += "Numero de CPF invalido!"
               }
               var a = [];
               var b = new Number;
               var c = 11;
               for (i=0; i<11; i++){
                      a[i] = cpf.charAt(i);
                       if (i < 9) b += (a[i] * --c);
               }
               if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
               b = 0;
               c = 11;
               for (y=0; y<10; y++) b += (a[y] * c--);
               if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
               if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
                       erro +="Digito verificador com problema!";
               }
               if (erro.length > 0){
                       return erro;
               }
               return true;
       }


         function validaCNPJ(CNPJ) {
                 erro = new String;
                 if (CNPJ.length != 14) erro += "CNPJ deve conter 14 dígitos numéricos! \n";

                 //substituir os caracteres que não são números
               if(document.layers && parseInt(navigator.appVersion) == 4){
                       x = CNPJ.substring(0,2);
                       x += CNPJ.substring (3,6);
                       x += CNPJ.substring (7,10);
                       x += CNPJ.substring (11,14);
                       CNPJ = x;
               } else {
                       CNPJ = CNPJ.replace (".","");
                       CNPJ = CNPJ.replace (".","");
                       CNPJ = CNPJ.replace ("-","");
                       CNPJ = CNPJ.replace ("/","");
               }
               var nonNumbers = /\D/;
               if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! \n";
               var a = [];
               var b = new Number;
               var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
               for (i=0; i<12; i++){
                       a[i] = CNPJ.charAt(i);
                       b += a[i] * c[i+1];
 }
               if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
               b = 0;
               for (y=0; y<13; y++) {
                       b += (a[y] * c[y]);
               }
               if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
               if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
                       erro +="Dígito verificador com problema!";
               }
               if (erro.length > 0){
                       return erro;
               } else {
                       return true;
               }

      }

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,que,nm,test,num,min,max;
  var errors='';
  var args=MM_validateForm.arguments;
  var aux=document.getElementById('senha').value;
  var cpfcnpj=document.getElementById('CampoNumero').value;
  var checkcpf=document.getElementById('chkCPF');
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='O campo '+nm+' requer um endereço de email válido.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='O campo '+nm+' aceita somente números.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (aux.length<min || max<aux.length) errors+='- '+nm+' deve conter no mínimo '+min+' dígitos e no máximo '+max+' dígitos.\n';
    } } } else if (test.charAt(0) == 'R') errors += 'O campo '+nm+' deve ser preenchido.\n'; }
  }  
  if (checkcpf.checked == true){ aux = validaCPF(cpfcnpj); if (aux != true) errors += aux; } else {
  aux = validaCNPJ(cpfcnpj); if (aux != true) errors += aux; }
  if (errors) alert('Erro ao preencher o formulário:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->
</script>
</head>
</html>

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...