Jump to content


Photo

Gráfico


  • Faça o login para participar
10 replies to this topic

#1 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 21/07/2009, 15:38

Galera. É o seguinte:
Naqueles arrays la embaixo são os dias do mês. É que eu nao coloquei o segundo termo de cada array, mas o segundo termo é para ser o total de consultas, como está mostrado ae no Select. O total de consultas que cada cliente teve no dia. Eu quero por o total de consultas, respectivo ao dia.
Porém, nao posso jogar valores fixos neles. Tenho que pegar do banco. Só que como eu faço para jogar no segundo termo do array, cada total respectivo ao dia ? E as vezes tem dias que nao possui consultas. Então deve ficar como zero.
Não consegui fazer.
Alguém entendeu, ajuda ??

[codebox]
$sql = "select relacionamentos.nome, day(data) as dia, count(lancamento_consulta_codigo) as total,
convert(varchar,data,103) as data from lancamentos_consultas inner join
relacionamentos on relacionamentos.relacionamento_codigo = lancamentos_consultas.relacionamento_codigo
where relacionamentos.relacionamento_codigo = $id and month(data) = $mes and year(data) = $ano
group by day(data),convert(varchar,data,103),relacionamentos.nome";

$exe_sql = mssql_query($sql);
$linhas = mssql_num_rows($exe_sql);

while($lin_sql = mssql_fetch_array($exe_sql))
{
$arr[] = $lin_sql['total'];
$foo[] = $lin_sql['dia'];
}
foreach($arr as $rs)
{
// echo $rs;
}

$dias = array(array(1),array(2),array(3),array(4),
array(5),array(6),array(7),
array(8),array(9),array(10),array(11),
array(12),array(13),array(14),array(15),array(16),array(17),
array(18),array(19),array(20),array(21),
array(22),array(23),array(24),array(25),array(26),array(27),
array(28),array(29),array(30),array(31));


[/codebox]
// no array(1) por exemplo, 1 é o dia, eu quero assim array(1,total_de_consultas), o segundo termo. Porém pegado do banco. Nao quero por fixo, da muito trabalho ter que fazer mais de 60 IF's para cada dia.
Acho que um While, um For, um ForEach me ajudava. Mas nao estou sabendo desenvolver.
Obdg

VLWW!

Edição feita por: DeeK, 21/07/2009, 17:40.


#2 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 21/07/2009, 19:36

Amigo, boa noite.
Tudo bom?

Não sei se entendi muito bem mas...
Porque não joga em ordem com apenas um termo no array.
Se você adicionar em ordem no array você terá as consultas no array e o dia será key + 1.
Posição 0 do array são as consultas do dia 1.

Abraços
Mateus Antunes
MBASistemas

#3 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 22/07/2009, 08:36

Amigo, boa noite.
Tudo bom?

Não sei se entendi muito bem mas...
Porque não joga em ordem com apenas um termo no array.
Se você adicionar em ordem no array você terá as consultas no array e o dia será key + 1.
Posição 0 do array são as consultas do dia 1.

Abraços



Como eu faço isso ??
Nao manjo muito de array =\

#4 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 22/07/2009, 23:17

Opa...
Boa noite...

Tenta isso aqui e veja o resultado:

[codebox]

$linhas = mssql_num_rows($exe_sql);

while($lin_sql = mssql_fetch_array($exe_sql))
{
$arr[] = Array($lin_sql['total'],$lin_sql['dia']);
}

[/codebox]

Assim você está fazendo um array multi dimensional!
Acho que pode resolver...

Qualquer coisa, se não der, posta ai!
Abraços amigo

(Se tiver tempo, acessa meu site de humor nerd: www.wngb.com.br WHEN NERDS GO BAD)
Mateus Antunes
MBASistemas

#5 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 23/07/2009, 14:47

MBA, muito obrigado pela ajuda. Eu fiz assim
[codebox]
$arr = array();

for($x=0;$x<30;$x++)
{
$arr[$x] = 0;
}

while($rs_sql = mssql_fetch_array($exe_sql))
{
$arr[$rs_sql['dia']] = $rs_sql['total']; // eu modifiquei aqui
}

$dias = array($arr);

#Instancia o objeto e setando o tamanho do grafico na tela
$plot = new PHPlot(1000,500);
#Tipo de borda, consulte a documentacao para ver opcoes
$plot->SetImageBorderType('plain');
#Tipo de grafico, nesse caso barras, existem diversos(pizza...)
$plot->SetPlotType('bars');
#Tipo de dados, nesse caso texto que esta no array
$plot->SetDataType('text-data');
#Setando os valores com os dados do array
$plot->SetDataValues($dias);
#Titulo do grafico
$plot->SetTitle('Quantidade de Lançamentos do Relacionamento '.$nome);
[/codebox]

Porém ele monta o gráfico certinho, mas não aparece os numeros la embaixo no grafico.
Veja no anexo. La embaixo aparece 0. Preciso modificar alguma coisa no array, para invés de aparecer 0, aparecer os dias de 1 a 31. Nao to conseguindo.
Se tiver alguma ideia. Obrigado!

Attached Files



#6 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 23/07/2009, 23:36

Em que padrão você precisa para montar o gráfico?
Mateus Antunes
MBASistemas

#7 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 24/07/2009, 15:42

Em que padrão você precisa para montar o gráfico?


Ahh em nenhum padrao. Um grafico de barras normal sabe.
Mas eu preciso que os dias apareçam la embaixo.
Na onde está 0.

#8 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 26/07/2009, 15:39

Você está montando o gráfico com alguma lib?
Mateus Antunes
MBASistemas

#9 ThalesWeb

ThalesWeb

    Veterano

  • Usuários
  • 1435 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 26/07/2009, 17:37

MBA, ele está usando o PHPlot.
Thales Santos

#10 MBA

MBA

    24 Horas

  • Usuários
  • 412 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte
  • Interesses:Desenvolvimento WEB

Posted 27/07/2009, 13:11

Obrigado Thales!

Deek, tente assim :

[codebox]
while($rs_sql = mssql_fetch_array($exe_sql)){
$arr[] = Array($rs_sql['dia'],$rs_sql['total']);
}

[/codebox]

Posta ai depois o resultado para o pessoal!
(No fim da tudo certo!)

Abraços

Edição feita por: MBA, 27/07/2009, 13:12.

Mateus Antunes
MBASistemas

#11 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 28/07/2009, 09:11

Obrigado Thales!

Deek, tente assim :

while($rs_sql = mssql_fetch_array($exe_sql)){  $arr[] = Array($rs_sql['dia'],$rs_sql['total']);}

Posta ai depois o resultado para o pessoal!
(No fim da tudo certo!)

Abraços


Mano

Eu consegui, mas desta forma.

$ex_data = array();	if($mes == 01 || $mes == 03 || $mes == 05 || $mes == 07 || $mes == 08 || $mes == 10 || $mes == 12)	{			$dias = array('','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');	}	elseif($mes == 04 || $mes == 06 || $mes == 09 || $mes == 11)	{		$dias = array('','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');	}	else	{		$dias = array('','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28');	}		for($x=1;$x<=count($dias)-1;$x++)	{		$achou = false;		for($pt=0;$pt<$linhas;$pt++)		{			if($x == mssql_result($exe_sql,$pt,'dia'))			{						array_push($ex_data,array($dias[$x],mssql_result($exe_sql,$pt,'total')));				$achou = true;			}		}		if($achou == false)		{			array_push($ex_data,array($dias[$x],0));		}		}

Obrigado a todos que me ajudaram. xD!




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq