Ir para conteúdo

POWERED BY:

Arquivado

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

paulinhovianna

Soma PHP

Recommended Posts

Boa tarde,

 

Tenho a seguinte consulta dentro do meu código php:

 

 

$id = $_GET["id"];
$query = mysql_query ("SELECT * FROM balancete WHERE id_empresa=$id");
while($row = mysql_fetch_array($query)) {
$acesso = $row["acesso"];
if($acesso==40052 || $acesso==40059)
$estoque_inicial = $row["saldo_final"];
Como faço para que a soma da variável estoque_final seja o somatório do acesso igual a 40052 e 40059 mas não quero que a soma seja feita na consulta do banco porque tenho vários if's.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explica melhor isso ae...

 

Não tem nenhuma variável no seu código chamada de estoque_final. Você quer criar uma? Essa variável vai fazer a soma do 40052 + 40059 da coluna acesso? Ou você quer pegar um valor de coluna "saldo_final" e somar apenas os valores que corresponde com a linha 40052 e 40059 da coluna acesso? Foi o que eu consegui imaginar pela sua explicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

a variável $estoque_final será criada apenas para este código, não tenho ela no banco.

 

essa variável quero que pegue o saldo final dos acessos 40052 + 40059

 

Exemplo:

 

Banco

 

ID ACESSO SALDO_FINAL

1 40052 10,00

2 40053 20,00

3 40055 30,00

4 40054 40,00

5 40059 50,00

 

PHP

 

$estoque_final = 60,00

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

a variável $estoque_final será criada apenas para este código, não tenho ela no banco.

 

essa variável quero que pegue o saldo final dos acessos 40052 + 40059

 

Exemplo:

 

Banco

 

ID ACESSO SALDO_FINAL

1 40052 10,00

2 40053 20,00

3 40055 30,00

4 40054 40,00

5 40059 50,00

 

PHP

 

$estoque_final = 60,00

 

acho que vai dar mer.. mais assim pode dar o resultado que espera.

$estoque_inicial = 0;
while($row = mysql_fetch_array($query)) {
$acesso            = $row["acesso"];
        
        if($acesso==40052 || $acesso==40059)
            $estoque_inicial += $row["saldo_final"];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roda isso aqui direto no banco:

SELECT SUM(SALDO_FINAL) AS saldo_final FROM balancete WHERE id_empresa = 10 AND acesso IN (40052, 40059)

troque o 10, pelo ID da empresa q vc deseja somar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php $id = $_GET["id"];
 
$query = mysql_query ("SELECT * FROM balancete WHERE id_empresa=$id");
 
while($row = mysql_fetch_array($query)) {
$acesso            = $row["acesso"];
        
        switch ($acesso){
            case 40052:
            $valor1 = $row["saldo_final"];
            case 40059:
            $valor2 = $row["saldo_final"];
        }
$estoque_final = $valor+$valor2;
echo $estoque_final;
}

?>

Sei que é uma maneira meio nojenta. Afinal, nem sei se vai dar certo.

 

Tenta aí, vai saber né.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho muitos acessos para verificar se for desta forma vai ficar muito extenso, deve ter uma maneira mais simples, usando um IF com OU na verificação, mas obrigado pela dica.

 

Assim eu consegui, mas quero um forma mais direta

 

while($row = mysql_fetch_array($query)) {
$acesso = $row["acesso"];
if($acesso==40052)
$estoque_inicial += $row["saldo_final"];
if($acesso==40051)
$compra_mercadoria += $row["saldo_final"];
if($acesso==40053)
$compra_mercadoria += $row["saldo_final"];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma explicada melhor no que você pretende fazer... Aí fica mais claro achar uma solução.

 

Bom, se você tem muito produto. Eu recomendo que você use o javascript para ir atualizando a página automaticamente, assim enviando o comando a cada x de tempo. Deixe o while pegando o valor de acesso, coloque um if para verificar se o valor for verdadeiro e cria a soma como resultado. Claro que na string if($acesso==?VALOR?) você vai ter que bolar uma maneira de gravar o ultimo valor e criar uma ordem crescente ou decrescente (fica a sua escolha). Se não ele vai ficar "if($acesso==40053)" eternamente.

 

Sei que parece uma solução meio complicada, dependendo do que você realmente precisa, vai dar muito certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero saber se não existe uma forma mais "simples" de fazer a consulta abaixo sem usar tantos IF para uma mesma variável:

 

$id = $_GET["id"];
$m_estoque_inicial="";
$m_compra="";
$m_fretes="";
$m_embalagens="";
$m_emprest_emitidos="";
$query = mysql_query ("SELECT * FROM balancete WHERE id_empresa=$id");
while($row = mysql_fetch_array($query)) {
$acesso = $row["acesso"];
if($acesso==40052)
$m_estoque_inicial += $row["saldo_final"];
if($acesso==40098)
$m_compra += $row["saldo_final"];
if($acesso==40122)
$m_compra += $row["saldo_final"];
if($acesso==40004)
$m_compra += $row["saldo_final"];
if($acesso==40126)
$m_compra += $row["saldo_final"];
if($acesso==40127)
$m_compra += $row["saldo_final"];
if($acesso==40059)
$m_compra += $row["saldo_final"];
if($acesso==40005)
$m_fretes += $row["saldo_final"];
if($acesso==40006)
$m_fretes += $row["saldo_final"];
if($acesso==40012)
$m_embalagens += $row["saldo_final"];
if($acesso==41028)
$m_emprest_emitidos += $row["saldo_final"];
if($acesso==40010)
$m_emprest_emitidos += $row["saldo_final"];
No caso da variável $m_compra por exemplo eu fazer algo do tipo:
if($acesso==40098 || $acesso==40122 || $acesso==40004 || $acesso==40126 || $acesso==40127 || 40059)
$m_compra += $row["saldo_final"];

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Quero saber se não existe uma forma mais "simples" de fazer a consulta abaixo sem usar tantos IF para uma mesma variável:

 

$id = $_GET["id"];
$m_estoque_inicial="";
$m_compra="";
$m_fretes="";
$m_embalagens="";
$m_emprest_emitidos="";
$query = mysql_query ("SELECT * FROM balancete WHERE id_empresa=$id");
while($row = mysql_fetch_array($query)) {
$acesso = $row["acesso"];
if($acesso==40052)
$m_estoque_inicial += $row["saldo_final"];
if($acesso==40098)
$m_compra += $row["saldo_final"];
if($acesso==40122)
$m_compra += $row["saldo_final"];
if($acesso==40004)
$m_compra += $row["saldo_final"];
if($acesso==40126)
$m_compra += $row["saldo_final"];
if($acesso==40127)
$m_compra += $row["saldo_final"];
if($acesso==40059)
$m_compra += $row["saldo_final"];
if($acesso==40005)
$m_fretes += $row["saldo_final"];
if($acesso==40006)
$m_fretes += $row["saldo_final"];
if($acesso==40012)
$m_embalagens += $row["saldo_final"];
if($acesso==41028)
$m_emprest_emitidos += $row["saldo_final"];
if($acesso==40010)
$m_emprest_emitidos += $row["saldo_final"];
No caso da variável $m_compra por exemplo eu fazer algo do tipo:

if($acesso==40098 || $acesso==40122 || $acesso==40004 || $acesso==40126 || $acesso==40127 || 40059)
$m_compra += $row["saldo_final"];

 

cara se para cada registro você coloca um if, então não precisa apenas coloque

while($row = mysql_fetch_array($query)) {
$acesso            = $row["acesso"];
        
            $m_estoque_inicial += $row["saldo_final"];
}

echo $m_estoque_inicial;

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu tenho uns 6 acessos que são para uma variável, depois tenho mais outros 5 ou 6 que são para outra e assim por diante.... queria uma forma de usar como expliquei ali com o "OU" "||"

 

if($acesso==40098 || $acesso==40122 || $acesso==40004 || $acesso==40126 || $acesso==40127 || 40059)
$m_compra += $row["saldo_final"];

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.