Ir para conteúdo

POWERED BY:

Arquivado

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

JorgitoDF

Validar Dados Antes de Salvar no Banco de Dados

Recommended Posts

Boa tarde a todos,

 

Preciso de uma ajuda nesta questão, "Validar Dados em PHP inseridos em um formulário Antes de gravá-los no Banco de Dados".

 

O Código de todas as validações já estão pronto, o que eu não estou conseguindo fazer é o seguinte:

 

Pox exemplo:

 

Caso o campo nome esteja inválido (em branco ou com menos de 5 letras) a mensagem de erro seja impressa ao lado da box input no próprio formulário de cadastro. Porém não quero deixar o código de validação no mesmo arquivo do formulário o cadastro.html, preciso deixa-lo em outro no validação.php

 

Para que caso exista algum erro o usuário seja alertado no próprio formulário de cadastro antes de passar para o servidor e antes de gravar no banco de dados....

 

Alguém pode me ajudar?

 

Desde já agraço.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

para validar por php já vai passar pelo servidor.

 

se quer evitar essa requisição tem que fazer uma validação por javascript. Fica até melhor de fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim mas eu quero fazer a validação em PHP e não em JS...

 

Sim pode passar pelo servidor desde que antes de os dados serem gravados no banco de dados uma mensagem de erro seja impressa na tela do cadastro no formulário cadastro.html

 

Tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

procure por ajax... ou da uma olhada no plugin jvalidate do jquery

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não aconselho você validar dados com JS, pois o usuário pode desativar o JS em seu navegador, você pode enviar os dados do formulário via JS para uma o um código PHP onde é feito a validação e retorna uma mensagem para o JS. Se o usuário desativar o JS no navegador o seu formulário não será enviado.

 

Sobre o envio de dados do formulário via JS leia sobre "submeter formulário com Ajax ou Jquery, existem vários tópicos sobre o assunto.

vou te dar uma ideia, a partir dela você pode melhorar ou adaptar para melhor utilizar.

crie o arquivo para o formulário ele pode ser em PHP ou HTML.(aconselho PHP).

ex:

arquivo formUser.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Submeter Forms via JQuery</title>
<!-- 
Baixe o arquivo do Jquery em http://jquery.com/ e renomeio para jquery.js
salve no mesmo diretorio dos aquivos php se for usar outro diretorio não esqueça de mudar o 'src'
-->
<script type="text/javascript" src="jquery.js"></script>
<!--
Metodo onde vai submeter o formulário utilizando jquery
   Se você ler sobre Ajax vai encontrar scripts que enviam todos os campos do forms de uma vez
   para ter iniciar o Jquery é da uma pouco mais de trabalho mais acho que é mais facil compreender

   OBS: caso você numca utilizou JQuery, uma maneira de trabalhar com forms é a utilização de Id dos campos,
   os ID's devem ser únicos e usar '#' antes do ID. 
-->
<!--Incio da função em Jquery para submeter o forms -->
<script type="text/javascript">
$(document).ready(function(){// ao carregor o arquivo vai carregar a função
$("#enviar").click(function(){// ao click do botão enivar inicia a função 'repare que eu utilizei # mais ID do botão.
	var usuario = $("#usuario").val();//pega o valor do campo usuario e guarda em uma variavel.
	var login = $("#login").val();//pega o valor do campo login e guarda em uma variavel.
	var passwd = $("#passwd").val();//pega o valor do campo senha e guarda em uma variavel.
	$.post("cadUser.php",{usuario: usuario, login: login, passwd:passwd}, function(retorno){//aqui o Jquery envia dos dados via post para o arquivo cadUser.php onde acontecerá as validações, após as validações o arquivo retornará uma mensagem de erro ou ok.
		beforeSend:$("#retorno").html(retorno);//a o Jquery vai receber a resposta e escreve-lá na div retorno.
	});
});
});
</script>
<!-- fim da função -->
</head>
<body>
<h3>Cadastro de Usuário</h3>
<!-- formulario de cadastro de usuario, como a questão aqui não e layout não vou utilizar CSS para melhorar o visual do forms. -->
<div id="forms">
<fieldset>
	<label for="usuario">Usuário</label>
    <input type="text" id="usuario" />
       <br />
	<label for="login">Login</label>
    <input type="text" id="login" />
    <br />
       <label for="passwd">Senha</label>
    <input type="password" id="passwd" />
       <br /><br />
       <input type="button" value="Enviar" id="enviar" />
</fieldset>
</div>
<br />
<br />
<div id="retorno">
</div>
</body>
</html>

vamos criar o arquivo cadUser.php que receberá os dados do formulário.

para iniciar um teste crie o arquivo com o seguinte script.

<?PHP
print_r($_POST);
?>

ao executar o formulário e enviar é para retornar uma array contendo os dados do seu formulário.

 

Sobre a validação de dados se você receber os dados corretamente no arquivo cadUser.php tem varias maneiras de você validar os dados na minha opinião é você ler sobre PHP Orientado a Objetos pois fica facil a reutilização para validar formulários, porem se você não estiver familiarizado com o PHP OO, aperfeiçoe a logica abaixo.

 

arquivo cadUser.php

<?PHP
//inicio verifica se existe dados post
if(isset($_POST)){
	$validar = TRUE;// se todos os campo passar na validação.
	//verifica se existe campo usuario
	if(isset($_POST['usuario'])){
		//Vamos ao exemplo de validação
		$usuario = $_POST['usuario'];
		//validar se o campo é null
		if($usuario == NULL){
			$erro[] = 'o campo usuario é obrigatorio';//Array que recebe a mensagem de erro
			$validar = FALSE;//se o campo for num não passou a validação.
		}	
	}
	if(isset($_POST['login'])){
		//Vamos ao exemplo de validação
		$usuario = $_POST['login'];
		//validar se o campo é null
		if($usuario == NULL){
			$erro[] = 'o campo login é obrigatorio';//Array que recebe a mensagem de erro
			$validar = FALSE;//se o campo for num não passou a validação.
		}	
	}
	//Faça a validações dos outros campos 



	//fim das validação
	if($validar){// Este if vai verificar se é verdadeiro ou falso
		//se for verdadeiro é todos os campo passaram na validação dessa para camada de banco de dados
		//Aqui o seu SQL
	}
	else{// se falhar alguma validação
		foreach ($erro as $erroMsn){
			$msn.=$erroMsn.'<br />';
		}
		echo $msn;
	}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Kennedy do Prado,

 

Ainda não estou tanto familiarizado com jQUERY e Ajax mas noteo que não há tanto mistério no seu código de sugestão, vou implemetar hoje mais tarde depois eu volto aqui para comentar algo se for o caso, muito obrigado.......

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Kennedy do Prado,

 

 

Seu código ficou show, adapetei ao meu das validações e tudo deu certo, porém só mais uma coisa...

 

A função abaixo retorna um array com todos os dados, mas caso eu queira que retorne apenas o dados referente a um único campo que deu erro na validação para q apenas ele seja impresso na div do formulário pois o dado que passou na validação não tem a necessidade de ser impresso....

 

function(retorno){

beforeSend:$("#retorno").html(retorno

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Particularmente, gosto de separar as regras de validação em classes, assim, consigo um reaproveitamento muito maior de códigos, além de poder separar melhor a lógica.

 

O que faço, é criar um executor de uma lista de regras de validação.

Ou seja:

  • Crio as regras
  • Crio o executor
  • Crio a instancia do objeto que será validado
  • Populo com os dados vindos do form
  • Efetuo a validação

 

Como está tudo bem separado, consigo usar cada um de forma isolada, e reaproveitar em várias partes.

 

Um exemplo do que estou falando você pode ver funcionando aqui e baixar os fontes aqui (PHP 5.3+)

 

Trecho onde adiciono e executo a validação neste exemplo:

 

if(!empty($_POST)){
// including files
include 'bean/User.php';
include 'validation/Executor.php';
include 'validation/rules/RequiredEmail.php';
include 'validation/rules/RequiredString.php';

// 1 - creating a new User instance and filling it with proper values
$bean = new bean\User();
$bean->setName($_POST['name']);
$bean->setEmail($_POST['email']);
$bean->setPassword($_POST['password']);

// 2 - creating an executor and adding some rules 
$ruleExec = new validation\Executor();
$ruleExec->addRule(new validation\rules\RequiredString('name','Supply your name'));
$ruleExec->addRule(new validation\rules\RequiredString('password','Supply your password'));
$ruleExec->addRule(new validation\rules\RequiredString('password','Your password must have between 4 and 8 chars', 4, 8));
$ruleExec->addRule(new validation\rules\RequiredEmail('email','Supply a valid e-mail address'));

// 3 - execute the validation
$errors = $ruleExec->validate($bean);

if(empty($errors)){
	// no errors, yeah!
	// do whatever you want, like save in a database :D
}
}

 

Como pode ver, claro e objetivo!

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara no script que eu postei anteriormente retorna mensagem apenas dos campos que não passaram na validação.

 

Se você postar seu código posso de dar uma dica ver o que pose ser melhorado isso se for necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kennedy

 

Tai o meu código de validação:

 

Quero retornar apenas os erros, caso tudo passe na validação os dados serão gravados no bando de dados.

 

  	<?php

		if (!empty($_POST)) {

			if (isset($_POST['uasg'])){
				if (empty($_POST['uasg'])) {
						echo "O campo UASG está vazio!";
						echo "<br/>";
					}
					if (!preg_match("/^[0-9]+$/",$_POST['uasg']) && $_POST['uasg'] == !"" ) {
						echo "O campo UASG só aceita números! <br>";						
						echo "<br/>";
					} else {
						$uasg = $_POST['uasg'];
						echo "<br/>";
					}
				} else {
					echo "O campo 'uasg' não existe na variável $_POST";
			}


			if (isset($_POST['cnpj'])){
				if (empty($_POST['cnpj'])) {
						echo "O campo CNPJ está vazio! <br/>";
						echo "<br/>";
					}
					if (!preg_match("/^[0-9]+$/",$_POST['cnpj']) && $_POST['cnpj'] == !"" ) {
						echo "O campo CNPJ só aceita números! <br>";						
						echo "<br/>";
					} else {
						$cnpj = $_POST['cnpj'];
						echo "<br/>";
					}

				} else {
					echo "O campo 'cnpj' não existe na variável $_POST";
			}		


		} else {
			echo "Não houve submit no formulário";
		} 


		if ($uasg && $cnpj == true){

			include("conexao.php");

			$sql = "INSERT INTO cliente2 (uasg, cnpj) VALUES ('$uasg','$cnpj')";	

			$query = mysql_query($sql) or die ("Houve um erro na gravação dos dados" . mysql_error());

			print "Dados gravados com sucesso";


		}

	?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom fiz algumas alterações, quanto a validação de CNPJ utilizei uma classe que eu já tenho pronta não tente entender como ela valida funciona mais sim como você pode reutiliza a qualquer momento para validar o CNPJ isso é a base de orientação objeto a reutilização do código ao invés de copiar e colar toda vez que você precisa utiliza-lo, bom mais vamos aos códigos

arquivo formulario.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Submeter Forms via JQuery</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#enviar").click(function(){
	$(".msgError").html("");
	$(".msgError").css("display","none");
	var uasg = $("#uasg").val();
	var cnpj = $("#cnpj").val();
	$.post("cadastro.php",{uasg: uasg, cnpj: cnpj}, function(retorno){
		beforeSend:$("#retorno").html(retorno);
	});
});
});
</script>
<style type="text/css">
.msgError{
display:none;
}
</style>
</head>
<body>
<h3>Cadastro</h3>
<div id="forms">
<fieldset>
	<label for="uasg">UASG</label>
    <input type="text" id="uasg" />
       <span class="msgError" id="uasgError">erroUasg</span>
       <br />
	<label for="cnpj">CNPJ</label>
    <input type="text" id="cnpj" />
       <span class="msgError" id="cnpjError">erroCnpj</span>
       <br /><br />
       <input type="button" value="Enviar" id="enviar" />
</fieldset>
</div>
<br />
<br />
<div id="retorno">
</div>
</body>
</html>

Arquivo cadastro.php

<?PHP
require_once 'ValCnpj.php';
if(isset($_POST)){
$status = TRUE;
//Validando UASG
if(isset($_POST['uasg'])){
	$uasg = $_POST['uasg'];
	if(empty($uasg)){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#uasgError").html("* Campo obrigatório.");
					$("#uasgError").css("display","block");
				});
			</script>
		';
	}
	elseif(!is_numeric($uasg)){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#uasgError").html("* O campo UASG só aceita números!.");
					$("#uasgError").css("display","block");
				});
			</script>
		';		
	}
	elseif(strlen($uasg)!=5){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#uasgError").html("* O campo UASG deve ter 5 números!.");
					$("#uasgError").css("display","block");
				});
			</script>
		';		
	}
}
//Validando CNPJ
if(isset($_POST['cnpj'])){
	$cnpj = $_POST['cnpj'];
	if(empty($cnpj)){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#cnpjError").html("* Campo obrigatório.");
					$("#cnpjError").css("display","block");
				});
			</script>
		';
	}
	else{		
		$valCnpj = new ValCnpj($cnpj);
		if(!$valCnpj->status){
			$status = FALSE;
			echo '
				<script type="text/javascript">
					$(document).ready(function() {
						$("#cnpjError").html("* Número de CNPJ inválido!");
						$("#cnpjError").css("display","block");
					});
				</script>
			';
		}
	}
}
//Verifica se os dados passaram na validação
if($status){
	//Faça um SQL de consulta e verifique se o CNPJ ou UASG já não estão cadastrado.
	//Exemplo:
		//Vamos considerar que voce fez a consulta e já exite os CNPJ e UASG
		$sqlUasg = '12345';
		$sqlCnpj = '63410751000104';
	//faça um teste no formulario com esses dados acima
	if(($sqlUasg == $uasg)||($sqlCnpj == $cnpj)){
		echo 'UASG ou CNPJ já cadastrado';
	}
	//Se não existir o CNPJ ou UASG
	else{
		//realiza o insert
		//codigo SQL

		//Altere a variavel "$sqlInsert" entre TRUE e FALSE e veja o resultado no forms
		$sqlInsert = TRUE;
		if($sqlInsert){
			echo 'Registro inserido com sucesso!';
		}
		//Aqui de se SQL falhar
		else{
			echo 'Não foi possivel inserir o registro';
		}
	}
}
}
?>

Arquivo classe ValCnpj.php

<?php
class ValCnpj{
//Variaveis de validação para validações
public $status;
//Variaveis para validação CNPJ
private $cnpj, $i, $rev_cnpj, $multiplier, $multiply, $sum, $rest, $dv1, $dv2, $sub_cnpj, $fake, $check_fake;
//Metodo valida CNPJ
function __construct($cnpj){
	$this->cnpj = $cnpj;
	$this->cnpj = str_replace("/","", str_replace("-","",str_replace(".","",$this->cnpj)));
		$this->cnpj = trim($this->cnpj);
		if(empty($this->cnpj) or strlen($this->cnpj)!=14){
		$this->status = FALSE;
	}
	else{
		 for($this->i = 0; $this->i <= 9; $this->i++) {
				$this->fake = str_pad("", 14, $this->i);
				if($this->cnpj === $this->fake){
					$this->check_fake = 1;
				}
			}
			if($this->check_fake){
				$this->status = FALSE;
		}
			else{			
				$this->rev_cnpj = strrev(substr($this->cnpj, 0, 12));
				for($this->i = 0; $this->i <= 11; $this->i++) {
					$this->i == 0 ? $this->multiplier = 2 : $this->multiplier;
					$this->i == 8 ? $this->multiplier = 2 : $this->multiplier;
					$this->multiply = ($this->rev_cnpj[$this->i] * $this->multiplier);
					$this->sum = $this->sum + $this->multiply;
					$this->multiplier++;
				}
				$this->rest = $this->sum % 11;
				if($this->rest == 0 || $this->rest == 1){
					$this->dv1 = 0;
			}
			else{
					$this->dv1 = 11 - $this->rest;
			}
			$this->sub_cnpj = substr($this->cnpj, 0, 12);
				$this->rev_cnpj = strrev($this->sub_cnpj.$this->dv1);
				unset($this->sum);
				for($this->i = 0; $this->i <= 12; $this->i++){
				$this->i == 0 ? $this->multiplier = 2 : $this->multiplier;
					$this->i == 8 ? $this->multiplier = 2 : $this->multiplier;
					$this->multiply = ($this->rev_cnpj[$this->i] * $this->multiplier);
				$this->sum = $this->sum + $this->multiply;
					$this->multiplier++;
				}
			$this->rest = $this->sum % 11;
				if($this->rest == 0 || $this->rest == 1){
				$this->dv2 = 0;
			}
			else{
				$this->dv2 = 11 - $this->rest;
			}
			if($this->dv1 == $this->cnpj[12] && $this->dv2 == $this->cnpj[13]){
				$this->status = TRUE;
			}
			else{
				$this->status = FALSE;
			}
		}
	}
	return $this;
}
}
?>

Teste e qualquer duvida pergunte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Kennedy quero muito te agradecer pela ajuda, resolveu meu problema, sou iniciante em PHP, cada dia aprendendo mais, valeu mesmo cara.

 

Kennedy, gostaria de tirar mais uma dúvida com você, aproveitando sua boa vontade e disposição....

 

Estou tentado (seguindo a lógica do seu código) verificar se campo de RADIO foi selecionado no formulário... Veja abaixo no arquivo cadastro.php:

 

 

if(isset($_POST)){
       $status = TRUE;


               if(isset($_POST['tipo'] = "Governo")){
		$gov = $_POST['tipo'];
	}
	else {
		echo '
                               <script type="text/javascript">
                                       $(document).ready(function() {
                                               $("#tipoError").html("O campo GOVERNO não existe na variável $_POST!");
                                               $("#tipoError").css("display","block");
                                       });
                               </script>
                       ';          
	}	


No formulário esta assim:

                       <label for="governo">
	           <input type="radio" id="tipo" value="Governo" />
	  	Governo </label>


A function está assim:

$(document).ready(function(){
       $("#Salvar").click(function(){
               $(".msgError").html("");
               $(".msgError").css("display","none");
	var tipo = $("#tipo").val();
               var uasg = $("#uasg").val();
               var cnpj = $("#cnpj").val();
			var razao = $("#razao").val();
               $.post("Cadastro.php",{tipo: tipo, uasg: uasg, cnpj: cnpj}, function(retorno){
                       beforeSend:$("#retorno").html(retorno);
               });
       });
});

 

 

Porém nada é executado nem quando o RADIO é selecionado nem sem estar selecionado...

 

Pode me ajudar nessa também?

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Kennedy, depois de um tempo sumido estou aqui de volta, gostaria de uma ajuda sua mais uma vez se possível...

 

Lembra deste código abaixo que você passou para mim há alguns meses atrás? Gostaria de saber como faço para recuperar um valor passar por uma combobox (select) neste código ai abaixo....

 

Agradeço..

 

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Submeter Forms via JQuery</title>

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$("#enviar").click(function(){

$(".msgError").html("");

$(".msgError").css("display","none");

var uasg = $("#uasg").val();

var cnpj = $("#cnpj").val();

$.post("cadastro.php",{uasg: uasg, cnpj: cnpj}, function(retorno){

beforeSend:$("#retorno").html(retorno);

});

});

});

</script>

<style type="text/css">

.msgError{

display:none;

}

</style>

</head>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usufruir de sessão, na pagina do form (cadastro.php) você teria algo assim:

session_start;
.
.
<form ....>
.
.
.
<input type="text" value="" name="nome" id="nome" /><span><?php echo $_SESSION['nome'];?></span>
.
.
.

</form>

 

e na validação (validacao.php)

 

<?php
session_start;
if($_POST){
  //campo nome vazio
  if($_POST['nome']){
        $_SESSION['nome'] = 'Preencha o campo nome';
        header('Location: cadastro.php'); //direciona o usuario para o formulario
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usufruir de sessão, na pagina do form (cadastro.php) você teria algo assim:

session_start;
.
.
<form ....>
.
.
.
<input type="text" value="" name="nome" id="nome" /><span><?php echo $_SESSION['nome'];?></span>
.
.
.

</form>

 

e na validação (validacao.php)

 

<?php
session_start;
if($_POST){
  //campo nome vazio
  if($_POST['nome'] == ''){
        $_SESSION['nome'] = 'Preencha o campo nome';
        header('Location: cadastro.php'); //direciona o usuario para o formulario
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom fiz algumas alterações, quanto a validação de CNPJ utilizei uma classe que eu já tenho pronta não tente entender como ela valida funciona mais sim como você pode reutiliza a qualquer momento para validar o CNPJ isso é a base de orientação objeto a reutilização do código ao invés de copiar e colar toda vez que você precisa utiliza-lo, bom mais vamos aos códigos

arquivo formulario.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Submeter Forms via JQuery</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#enviar").click(function(){
	$(".msgError").html("");
	$(".msgError").css("display","none");
	var uasg = $("#uasg").val();
	var cnpj = $("#cnpj").val();
	$.post("cadastro.php",{uasg: uasg, cnpj: cnpj}, function(retorno){
		beforeSend:$("#retorno").html(retorno);
	});
});
});
</script>
<style type="text/css">
.msgError{
display:none;
}
</style>
</head>
<body>
<h3>Cadastro</h3>
<div id="forms">
<fieldset>
	<label for="uasg">UASG</label>
    <input type="text" id="uasg" />
       <span class="msgError" id="uasgError">erroUasg</span>
       <br />
	<label for="cnpj">CNPJ</label>
    <input type="text" id="cnpj" />
       <span class="msgError" id="cnpjError">erroCnpj</span>
       <br /><br />
       <input type="button" value="Enviar" id="enviar" />
</fieldset>
</div>
<br />
<br />
<div id="retorno">
</div>
</body>
</html>

Arquivo cadastro.php

<?PHP
require_once 'ValCnpj.php';
if(isset($_POST)){
$status = TRUE;
//Validando UASG
if(isset($_POST['uasg'])){
	$uasg = $_POST['uasg'];
	if(empty($uasg)){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#uasgError").html("* Campo obrigatório.");
					$("#uasgError").css("display","block");
				});
			</script>
		';
	}
	elseif(!is_numeric($uasg)){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#uasgError").html("* O campo UASG só aceita números!.");
					$("#uasgError").css("display","block");
				});
			</script>
		';		
	}
	elseif(strlen($uasg)!=5){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#uasgError").html("* O campo UASG deve ter 5 números!.");
					$("#uasgError").css("display","block");
				});
			</script>
		';		
	}
}
//Validando CNPJ
if(isset($_POST['cnpj'])){
	$cnpj = $_POST['cnpj'];
	if(empty($cnpj)){
		$status = FALSE;
		echo '
			<script type="text/javascript">
				$(document).ready(function() {
					$("#cnpjError").html("* Campo obrigatório.");
					$("#cnpjError").css("display","block");
				});
			</script>
		';
	}
	else{		
		$valCnpj = new ValCnpj($cnpj);
		if(!$valCnpj->status){
			$status = FALSE;
			echo '
				<script type="text/javascript">
					$(document).ready(function() {
						$("#cnpjError").html("* Número de CNPJ inválido!");
						$("#cnpjError").css("display","block");
					});
				</script>
			';
		}
	}
}
//Verifica se os dados passaram na validação
if($status){
	//Faça um SQL de consulta e verifique se o CNPJ ou UASG já não estão cadastrado.
	//Exemplo:
		//Vamos considerar que voce fez a consulta e já exite os CNPJ e UASG
		$sqlUasg = '12345';
		$sqlCnpj = '63410751000104';
	//faça um teste no formulario com esses dados acima
	if(($sqlUasg == $uasg)||($sqlCnpj == $cnpj)){
		echo 'UASG ou CNPJ já cadastrado';
	}
	//Se não existir o CNPJ ou UASG
	else{
		//realiza o insert
		//codigo SQL

		//Altere a variavel "$sqlInsert" entre TRUE e FALSE e veja o resultado no forms
		$sqlInsert = TRUE;
		if($sqlInsert){
			echo 'Registro inserido com sucesso!';
		}
		//Aqui de se SQL falhar
		else{
			echo 'Não foi possivel inserir o registro';
		}
	}
}
}
?>

Arquivo classe ValCnpj.php

<?php
class ValCnpj{
//Variaveis de validação para validações
public $status;
//Variaveis para validação CNPJ
private $cnpj, $i, $rev_cnpj, $multiplier, $multiply, $sum, $rest, $dv1, $dv2, $sub_cnpj, $fake, $check_fake;
//Metodo valida CNPJ
function __construct($cnpj){
	$this->cnpj = $cnpj;
	$this->cnpj = str_replace("/","", str_replace("-","",str_replace(".","",$this->cnpj)));
		$this->cnpj = trim($this->cnpj);
		if(empty($this->cnpj) or strlen($this->cnpj)!=14){
		$this->status = FALSE;
	}
	else{
		 for($this->i = 0; $this->i <= 9; $this->i++) {
				$this->fake = str_pad("", 14, $this->i);
				if($this->cnpj === $this->fake){
					$this->check_fake = 1;
				}
			}
			if($this->check_fake){
				$this->status = FALSE;
		}
			else{			
				$this->rev_cnpj = strrev(substr($this->cnpj, 0, 12));
				for($this->i = 0; $this->i <= 11; $this->i++) {
					$this->i == 0 ? $this->multiplier = 2 : $this->multiplier;
					$this->i == 8 ? $this->multiplier = 2 : $this->multiplier;
					$this->multiply = ($this->rev_cnpj[$this->i] * $this->multiplier);
					$this->sum = $this->sum + $this->multiply;
					$this->multiplier++;
				}
				$this->rest = $this->sum % 11;
				if($this->rest == 0 || $this->rest == 1){
					$this->dv1 = 0;
			}
			else{
					$this->dv1 = 11 - $this->rest;
			}
			$this->sub_cnpj = substr($this->cnpj, 0, 12);
				$this->rev_cnpj = strrev($this->sub_cnpj.$this->dv1);
				unset($this->sum);
				for($this->i = 0; $this->i <= 12; $this->i++){
				$this->i == 0 ? $this->multiplier = 2 : $this->multiplier;
					$this->i == 8 ? $this->multiplier = 2 : $this->multiplier;
					$this->multiply = ($this->rev_cnpj[$this->i] * $this->multiplier);
				$this->sum = $this->sum + $this->multiply;
					$this->multiplier++;
				}
			$this->rest = $this->sum % 11;
				if($this->rest == 0 || $this->rest == 1){
				$this->dv2 = 0;
			}
			else{
				$this->dv2 = 11 - $this->rest;
			}
			if($this->dv1 == $this->cnpj[12] && $this->dv2 == $this->cnpj[13]){
				$this->status = TRUE;
			}
			else{
				$this->status = FALSE;
			}
		}
	}
	return $this;
}
}
?>

Teste e qualquer duvida pergunte.

 

 

 

 

Kennedy,

 

Como eu faço para imprimir a mensagem 'Registro inserido com sucesso!'; no formulario_cadastro.php ?

 

Tentei com $_SESSION porém não deu certo....

 

 

Grato

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.