[PHP/mySQL] Somatório da quantidade de referencias

AndreVSerafim

Power Member
Boas, tenho uma duvidas, tenho uma duvidas..tenho um contador de stock para fazer e não sei bem como. Pensei em fazer no PHP um contador onde soma o numero de vezes que a referencia aparece e depois da listagem concluída envia para a BD em mySQL a referencia e a quantidade total, tenho a duvida de como fazer o acumular de referencia visto poderem ser 10 referencias ou 100.

Alguém pode ajudar?
 
Sim tenho isto mas algo nao esta bem porque corre o sistema todo sem erros mas nao guarda na BD

HTML:
<html>
    <body>
        <form action="verautomatico.php" method="POST" accept-charset="UTF-8">
          Codigo de Barras: <input type="text" name="codigobarras">
          <input type="submit" value="Submit">
        </form>
</html>

PHP:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$basedados = "armazem";

$codigobarras = $_POST["codigobarras"];
$dia = date ("Y/m/d");

    $conn = mysqli_connect($servername, $username, $password, $basedados);
        if (!$conn) {
            die("Conexão falhou: " . mysqli_connect_error());
        }
    echo "Conexão bem sucedida<br>";
  
    $sql1 = "SELECT codbarras FROM contagem";
        if (mysqli_query($conn, $sql1)) {
            echo "Consulta bem sucedida<br>";
        } else {
            echo "Error: " . $sql1 . "<br>" . mysqli_error($conn);
        }
    $sql2 = "SELECT codbarras FROM produtos";
        if (mysqli_query($conn, $sql2)) {
            echo "Consulta bem sucedida<br>";
        } else {
            echo "Error: " . $sql2 . "<br>" . mysqli_error($conn);
        }
    $nomes = "SELECT nome FROM produtos WHERE codbarras IN ('$codigobarras')";
        if (mysqli_query($conn, $nomes)) {
            echo "Consulta bem sucedida<br>";
        } else {
            echo "Error: " . $nomes . "<br>" . mysqli_error($conn);
        }
    $quantidades = "SELECT quantidade FROM contagem WHERE codbarras IN ('$codigobarras')";
        if (mysqli_query($conn, $quantidades)) {
            echo "Consulta bem sucedida<br>";
        } else {
            echo "Error: " . $quantidades . "<br>" . mysqli_error($conn);
        }
    if (($sql1 == $codigobarras) AND ($sql2 == $codigobarras)) {
        $conta=$quantidades++;
        $total = "UPDATE contagem SET quantidade='$conta' WHERE codbarras='$codigobarras'";
            if (mysqli_query($conn, $total)) {
                echo "Actualização bem sucedida<br>";
            } else {
                echo "Error: " . $total . "<br>" . mysqli_error($conn);
            }
    }
        elseif ($sql2 == $codigobarras) {
            $conta = "INSERT INTO contagem (codbarras, nome, quantidade, dia) VALUES ('$codigobarras', '$nomes', '1', '$dia')";;
        }
            else {
                echo "Produto não existe";
            }
mysqli_close($conn);
?>
 
Esse seu código de stock é no mínimo estranho.

Primeiro, se quiser fazer uma gestão de stock, deverá ter uma tabela armazém, onde insira a referência às compras que faça e a referência às vendas que faz.

Por exemplo, a tabela armazém deve dispor de um campo, onde identifica o produto pelo código de barras, um outro campo onde identifica se a operação é um compra ou uma venda, um outro campo eventualmente com a data, isto numa versão simplificada.

Depois, e só fazer uma ou duas consultas, em que faz a contagem das compras e a contagem das vendas, e depois é só subtrair um resultado ao outro e tem o stock daquele produto naquele momento.

Pode fazer isso pelo php ou pelo sql, mas se desejar o stock de todas as referências, pode utilizar a função do sql, Group By,http://www.w3schools.com/sql/sql_groupby.asp , ao qual pode pode associar a função Count.

Em segundo, no seu código não está a fazer nenhuma contagem, está a verificar se determinado código de barras existe nas tabelas da base de dados, não está a contar quantas vezes ocorre, para isso teria de usar a função mysqli_num_rows(), http://php.net/manual/en/mysqli-result.num-rows.php.

Em terceiro, sempre que faz junções de tabelas, utilize os operadores do sql, Join, http://www.w3schools.com/sql/sql_join_inner.as
 
Back
Topo