Improving my input and output validation

1

I have the function inserir , and it has input and output validation, it first makes a select with the function count with a where referencing the product code, then it drops in the if($quantidade_db >= $quantidade || mysqli_num_rows($result) == 0) if the amount of the bank is greater or equal amount entered by the user or if mysqli_num_rows == 0 it goes to the insert, if the condition is false, it shows a message on the screen "value exceeds the quantity in stock".

The validation works for the output, but for input, for example, the user registers the product with the input flag twice with the quantity of 50, but again it registers the same product with the input flag but with the quantity of 101, the message "value exceeds the quantity in stock" will appear.

In the input the user must enter the amount he wants, and not fall into else to display the message.

How could I solve this problem, or improve validation?

The code:

<?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";





        $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;
}?>
    
asked by anonymous 31.10.2016 / 16:47

0 answers