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

Select para gráfico de barras empilhadas


Abuu

Pergunta

Boa tarde,

Tenho um dúvida com relação a um trabalho que estou fazendo.

Estou utilizando a biblioteca de gráficos Rgraph para gerar alguns gráficos com informações provenientes do mysql,

Porém para o gráfico de barras empilhadas estou apanhando um pouco.

Minha saida do sql é a seguinte

Ano | Qtde. | Tipo

2000 | 3 | Em Análise

2001 | 1 | Em Aberto

2010 | 1 | Em Análise

2010 | 2 | Em Aberto

2011 | 1 | Em Análise

A saída que a biblioteca mostra como necessária para povoar o gráfico de barras empilhadas seria mais ou menos da sequinte forma [[3],[1],[1],[1,2],[1]].

Ao final o gráfico deverá ficar dessa forma.

| | ~1~ |

_3_ | _1_ | _2_ | _1_

------------------------------------------

2000 | 2001 | 2010 | 2011

Não estou conseguindo formatar no php essa saída do sql poderiam por gentileza me ajudar?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Entendi, bom eu acho que você deveria mandar os dados dessa forma pro Rgraph:

[[3,0],[0,1],[1,2],[1,0]]

Colocando os 0 onde não há valores, pois não teria como o Rgraph saber se o valor passado é do tipo "Em Aberto" ou "Em Análise". Para mandar os dados dessa forma eu pensei em fazer desse jeito:

Assumindo que os dados vindos do banco estão dessa forma:

<?php
$registros[] = array('ano' => 2000, 'qtde' => 3, 'tipo' => 'Em Análise');
$registros[] = array('ano' => 2001, 'qtde' => 1, 'tipo' => 'Em Aberto');
$registros[] = array('ano' => 2010, 'qtde' => 1, 'tipo' => 'Em Análise');
$registros[] = array('ano' => 2010, 'qtde' => 2, 'tipo' => 'Em Aberto');
$registros[] = array('ano' => 2011, 'qtde' => 1, 'tipo' => 'Em Análise');

Esse seria um possível script:

<?php
foreach($registros as $reg) {
	$anos[$reg['ano']][$reg['tipo']] = $reg['qtde'];
}
$labels = '["'.implode('","', array_keys($anos)).'"]';
$dados = '[';
foreach($anos as $tipos) {
	$aberto = isset($tipos['Em Aberto']) ? $tipos['Em Aberto'] : 0;
	$analise = isset($tipos['Em Análise']) ? $tipos['Em Análise'] : 0;
	$dados .= '['.$aberto.','.$analise.'],';
}
$dados .= rtrim($dados, ',').']';

Uma variável armazena a string das labels e a outra armazena os dados.

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

  • 0
while($row = mysql_fetch_assoc($result))
    {
        $data[$row['ano']][] = $row['Total'];
    }
    

    foreach($data as &$year)
    {
        $year = '[' . implode(',', $year) . ']';
    }
    $finalData = '[' . implode(',', $data) . ']';   

Resolvido aqui obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

O foreach

    foreach($data as &$year)
    {
        $year = '[' . implode(',', $year) . ']';
    }

Você pode resumir com:

$year = '["'.implode('","', array_keys($data)).'"]';

O segundo implode funcionou? Porque pra mim ele só funcionava com matrizes de um nível e no caso $data tem dois:

$data armazena índices de vários anos e cada ano armazena mais de um valor.

Mas se deu baum então ta baum

Abraços.

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,5k
×
×
  • Criar Novo...