Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
PauloR19

Como melhorar minha validação de entrada e saída

Recommended Posts

Tenho a função inserir, e nela tem uma validação de entrada e saída, primeiro ela faz um select com a função count com um where referenciando o código do produto, depois ela cai na condição if($quantidade_db >= $quantidade || mysqli_num_rows($result) == 0) se a quantidade do banco for maior ou igual quantidade inserida pelo usuário ou se mysqli_num_rows == 0 ela vai para a inserção, se a condição for falsa, mostra uma mensagem na tela "valor ultrapassa a quantidade em estoque".

 

A validação funciona para a saída, mas para entrada, por exemplo, o usuário cadastra o produto com a flag de entrada duas vezes com a quantidade de 50, mas novamente ele cadastra o mesmo produto com a flag de entrada mas com a quantidade de 101, a vai aparecer a mensagem "valor ultrapassa a quantidade em estoque".

 

Na entrada o usuário deve digitar a quantidade que ele quiser, e não cair no else para exibir a mensagem.

Como eu poderia resolver esse problema, ou melhorar a validação?

 

O código:

<?php

require_once('./base_de_dados/connect_bd.php');

	
	
	function inserir(){
		//Conectando com o banco de dados
		$dbc = conexao();
		
		$retorno = array();
		
		$erros = array();
		$admin;
		$produto;
		$registro;
		$quantidade;
		
		
		
		
		//função empty verifica se não tem registro inserido

		if($_POST['produto'] == ""){
			$erros[] = 'O campo codigo administrador é obrigatório!';
			
		}else{
			$produto = $_POST['produto'];
			
		}
		
		if($_POST['admin'] == ""){
			$erros[] = 'O campo codigo produto é obrigatório $teste!';
			
		}else{
			$admin = $_POST['admin'];
			
		}
		
		if($_POST['registro'] == ""){
			$erros[] = 'O campo Registro é obrigatório!';
			
		}else{
			$registro = $_POST['registro'];
			
		}
		

		if(empty($_POST['quantidade'])){
			$erros[] = 'O campo quantidade é obrigatório!';
			
		}else{
			$quantidade = $_POST['quantidade'];
			
		}
		

		   if(empty($erros)){
			   
	  $query = "select SUM(ret.quantidade) AS quantidade,
				ret.nome_produto,
				ret.id_produto
				from(SELECT 
				SUM(p.quantidade) AS QUANTIDADE, 
					p.tipo_registro, 
					p.id_produto, 
					c.nome AS nome_produto, 
					c.imagem
					FROM estoque p JOIN administrador u 
							   ON u.id_admin = p.id_admin 
							   JOIN cadastro_produtos c 
							   ON c.id_produto = p.id_produto
							   WHERE p.tipo_registro = 'entrada'
							   
							   GROUP BY 				
							   p.tipo_registro, 
							   p.id_produto, 
							   c.nome, 
							   c.imagem 
							   UNION
							   SELECT 
							   -SUM(p.quantidade) AS QUANTIDADE, 
							   p.tipo_registro, 
							   p.id_produto, 
							   c.nome AS nome_produto, 
							   c.imagem 
							   FROM estoque p JOIN administrador u 
							   ON u.id_admin = p.id_admin 
							   JOIN cadastro_produtos c 
							   ON c.id_produto = p.id_produto
							   WHERE p.tipo_registro = 'saida'
							   
							   GROUP BY 				
							   p.tipo_registro, 
							   p.id_produto, 
							   c.nome, 
							   c.imagem)ret
                               WHERE ret.id_produto = $produto
                               group by ret.nome_produto,
                               ret.id_produto";
															
				

echo $query;				
															
			$result = @mysqli_query($dbc, $query);
			
			$row = mysqli_fetch_array($result);
			
			$quantidade_db = $row['quantidade'];
		
			   
			 if($quantidade_db >= $quantidade || mysqli_num_rows($result) == 0){
			   
			//inserir no banco de dados
			$query = "INSERT INTO estoque(id_estoque, quantidade, tipo_registro, id_admin, id_produto, dt_movimentacao) VALUES (NULL, $quantidade,'$registro', '$admin' ,'$produto',CURRENT_TIMESTAMP)";
			
			$result = @mysqli_query($dbc, $query);
			echo "$query";
			
			
			if($result){
				$retorno[] = 'Cadastro realizado com sucesso!';
				
			}else{
				$erros[] = 'Ocorreu algum erro ao cadastrar o estoque!';
			}
			/** if($quantidade_db <= $quantidade || mysqli_num_rows($result) <= 0){
			   
			//inserir no banco de dados
			$query = "INSERT INTO estoque(id_estoque, quantidade, tipo_registro, id_admin, id_produto, dt_movimentacao) VALUES (NULL, $quantidade,'$registro', '$admin' ,'$produto',CURRENT_TIMESTAMP)";
			
			$result = @mysqli_query($dbc, $query);
			echo "$query";
			
			
			if($result){
				$retorno[] = 'Cadastro realizado com sucesso!';
				
			}else{
				$erros[] = 'Ocorreu algum erro ao cadastrar o estoque!';
			}
			
			
		}else{
			
			//erro estoque
			echo"<script>alert('Primeiro Digite a entrada'); history.go(-1)</script>";
		}
				**/
			
		}else{
			
			//erro estoque
			echo"<script>alert('Valor Ultrapassa a quantidade em estoque'); history.go(-1)</script>";
		}
			
			
		}else{
			
			$retorno = $erros;
			
		}
		
		return $retorno;
	}

		
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×