Ir para conteúdo
Fórum Script Brasil
  • 0

Array dinamico


ClaudioX

Pergunta

Pessoal, estou com um código malgno aki :lol: , seguinte, tentei implementar um array tridimensional, pra ir calculando os valores e ir salvando tudo.. no entanto só salva o primeiro fetch_array do $Dados. O SQL não esta errado (Suponho), porque traz 4 entrada certinhas..

Se alguém conseguir ver o erro, ou uma maneira melhor de fazer isso, seria bom pra caramba!

while ($UN = mysqli_fetch_array($CadaUndNeg))
            {
                
                $Total[$UN['UnidadeNegocioCod']] = array('ValorTotal' => 0);
                while ($Dados = mysqli_fetch_array($CadaLanValido))
                {
    
                    if($Dados['UnidadeNegocioCod'] == $UN['UnidadeNegocioCod'])
                    {
                        // adiciona lancamentos
                        $Total[$UN['UnidadeNegocioCod']]['Lancamentos'][$Dados['LancamentoCod']] = array
                        (
                            'CentroCustoCod' => $Dados['CentroCustoCod'],
                            'LancamentoCod'  => $Dados['LancamentoCod'],
                            'Valor'          => $Dados['Valor']
                        );

                        // soma valor total
                        $Total[$UN['UnidadeNegocioCod']]['ValorTotal'] += $Dados['Valor'];
                        
                    }
                }
                $ReceitaGlobal += $Total[$UN['UnidadeNegocioCod']]['ValorTotal'];
            }

Editado por ClaudioX
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Ele só salva o primeiro (na verdade o último) porque a cada volta do laço ele sobrescreve os dados anteriores... em resumo, você está tentando por N vezes os valores dentro do array, mas sempre com os mesmos índices, e ai ferra tudo... como tem muita gambiarra nem vou mexer nisso, seria interessante também você ver se não dá pra usar apenas uma query, porque do modo como você está fazendo (while dentro de while com duas querys) geralmente só deixa o script mais lento...

Link para o comentário
Compartilhar em outros sites

  • 0

Caaaara não fala que meu código tá com gambiarra heauhueahe

Tipow, estou tentando fazer no SELECT mas o problema é que tenho que somar os valores do campo Valor, e guardar o LancamentoCod deles, mas o GROUP BY, me força a ficar só com o ultimo. Assim, fiz um while para os LancamentosCod, e outro com os valores, tentando no final montar um array com os dados.

Segue a primeira lógica que fiz (anterior ao primeiro post), não tenho experiencia em php :( :

while ($UN = mysqli_fetch_array($CadaUndNeg))
{
    while ($Dados = mysqli_fetch_array($CadaLanValido))
    {
        if($Dados['UnidadeNegocioCod'] == $UN['UnidadeNegocioCod']){
    $Total[$UN] = $Dados['UnidadeNegocioCod']; //Guarda o codigo da UN
    $Total[$UN]['Valor'] += $Dados['Valor'];   //Vai somando os valores
    $Total[$UN]['AreaCod'] = $Dados['AreaCod'];
    $Total[$UN]['CentroCustoCod'] = $Dados['CentroCustoCod'];
    $Total[$UN]['LancamentoCod'] = $Dados['LancamentoCod'];
    $Total[$UN]['AreaCod']['ValorArea'] = $Dados['Valor'];
    $ReceitaGlobal += $Dados['Valor'];
        }
}
}
Esse é o SQL atual, no qual estou tentando não precisar disso ai em cima, mas perco o LancamentoCod, do qual preciso para posteriores UPDATES..:
SELECT u.UnidadeNegocioCod, a.AreaCod, c.CentroCustoCod, SUM( l.Valor ) AS ValorCC
FROM unidade_negocio u, area a, centro_custo c, lancamento l, centro_custo_area cca
WHERE l.DataLancamento >= '2008/01/01'
AND l.DataLancamento <= '2008/01/30'
AND l.TipoLancamento = 'E'
AND l.EmpresaCod =3
AND u.UnidadeNegocioCod = l.UnidadeNegocioCod
AND a.AreaCod = l.AreaCod
AND c.CentroCustoCod = l.CentroCustoCod
AND l.AreaCod = cca.AreaCod
AND l.CentroCustoCod = cca.CentroCustoCod
AND cca.CCRedistribuicao = 'S'
GROUP BY u.UnidadeNegocioCod, a.AreaCod, c.CentroCustoCod

Cara.. alguma ideia, sugestao?

De qualquer forma valeu mesmo pela ajuda!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...