Ir para conteúdo

POWERED BY:

Arquivado

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

Elton Pereira

Gráfico PHPLOT

Recommended Posts

Bom dia pessoal ,

 

estou gerando um gráfico com a classe PHPLOT PHP + BD , o que ta pegando é o seguinte, preciso gerar um ARRAY dinâmico trazendo o resultado da minha Query. por exemplo :

 

 

Esses dados : Psicologia Jurídica,Técnicas do Exame,Atuação Profissional eles não podem está setado tem que ta vindo de query , ai fiz o seguinte código:

 

$SQL_LEG = mssql_query("SELECT DISTINCT NOME_DISC 
		FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
		WHERE CODIGO = '9001135'");
$ln = mssql_num_rows($SQL_LEG); 		

$dataL = array();
for($cont=0; $cont < $ln; $cont++){
$dataL[] = mssql_fetch_row($SQL_LEG);
}

 

Estático: $plot->SetLegend(array('Psicologia Jurídica','Técnicas do Exame','Atuação Profissional'));

Dinâmico(Não Funciona): $plot->SetLegend(array($dataL));

 

 

 

 

OBS: Alguem poderia me AJUDAR ? Valeu Pessoal !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo

<?php
	include 'conecta_banco.php';
	include 'phplot/phplot-5.0.4/phplot.php';
	
	$query 			= "select count(versao) as tversao from atualizacao";
	$exe_query 		= mssql_query($query);
	$total_versao	= mssql_result($exe_query,0,'tversao');
	
	$tipo = $_GET['tipo'];
	$campo = $_GET['campo'];
	
#incluindo a classe. verifique se diretorio e versao sao iguais, altere se precisar
	$func = "select funcionarios.funcionario, atualizacao.funcionario_codigo, count(atualizacao.funcionario_codigo) as nfunc from atualizacao inner join funcionarios on atualizacao.funcionario_codigo = funcionarios.funcionario_codigo
group by atualizacao.funcionario_codigo,funcionarios.funcionario order by $campo $tipo";
	$exe_func 	= mssql_query($func);
	$num_linhas = mssql_num_rows($exe_func);
	
	$arr = array();
	$foo = array();
	$foo[] = "Totais";
    while ($rs = mssql_fetch_assoc($exe_func))
    {
        $arr[] = $rs['funcionario'];
        $foo[] = ($rs['nfunc'] / $total_versao) * 100;
    }
	
	$data =  array($foo);   
	
	#Instancia o objeto e setando o tamanho do grafico na tela
	$plot = new PHPlot(700,250);
	#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($data);
	#Titulo do grafico
	$plot->SetTitle('Percentual de Atualizações por Programador');
	#Posição da legenda na imagem
	#$plot->SetLegendPixels(0,25);
	# Legenda, nesse caso serao tres pq o array possui 3 valores que serao apresentados
	foreach($arr as $value)
	{	
		$plot->SetLegend($value);		
	}
	# Metodos utilizados para marcar labes, necessario mas nao se aplica neste ex. (manual) :
	$plot->SetXTickLabelPos('none');
	$plot->SetXTickPos('none');
	#Gera o grafico na tela
	$plot->DrawGraph();
?>

Tenta entender... qqr coisa pergunta... não se preocupe com as minhas querys que estao ae... tenta implementar.

Se você nao entender... posta ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão Valeu pela força

 

eu conseguir listar as Disciplinas com o foreach mas o que ta pegando é GERAR O GRÁFICO, não estou conseguindo montar o Array certo!

 

Mostrar o código vÊ se você consegue entender. segue abaixo:

 

<?php
# PHPlot Example: Simple line graph
require_once 'phplot.php';

include_once("../classes/Conexao.php");

$conexao = new ConexaoMssql("localhost","teste","teste","bd");

$Codigo = "9000851";

$sqlQuestao = mssql_query(" SELECT distinct questao 
							FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
							WHERE CODIGO = '".$Codigo."'
							order by questao ");
$data   = array();
$Array  = array();

while($DadosQuestao = mssql_fetch_array($sqlQuestao)){
		
		
		$sqlDisci   = " SELECT DISTINCT DISCIPLINA 
					    FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
						WHERE CODIGO   = '".$Codigo."'  ";
		$rsDisc       = mssql_query($sqlDisci);
		
		while($DadodDisc = mssql_fetch_array($rsDisc)){		
		
				$sqlQuestao2 = " SELECT Media 
							     FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
							 	 WHERE CODIGO   = '".$Codigo."'
							 	 AND QUESTAO    = '".$DadosQuestao[0]."' 
							 	 AND DISCIPLINA = '".$DadodDisc[0]."' " ;
				
				
				$rsQuestao   = mssql_query($sqlQuestao2);							 
				$ArrayMedia  = mssql_fetch_array($rsQuestao);				
				#Problema está aqui !
				$Array[0]     = $DadosQuestao[0];
				$Array[1]     = $ArrayMedia[0];
				
				$data[]  	  = array($Array[0],$Array[1]);
				
				#echo "<pre>";
				#print_r($ArrayMedia);

				
		
		#print_r($data);
		}
		
		

}
#Instancia o objeto e setando o tamanho do grafico na tela
$plot = new PHPlot(800,600);
#Tipo de borda, consulte a documentacao
$plot->SetImageBorderType('PLAIN');
#Tipo de grafico, nesse caso barras, existem diversos(pizza…)
//bars, stackedbars, lines, linepoints, area, points, pie, thinbarline, squared, stackedarea',
$plot->SetPlotType('LINES');
#Tipo de dados, nesse caso texto que esta no array
$plot->SetDataType('text-data');
#Setando os valores com os dados do array
$plot->SetDataValues($data);
#Titulo do grafico
$plot->SetTitle("Média do Docente por itens em Disciplinas 20101");
#Legenda, nesse caso serao tres pq o array possui 3 valores que serao apresentados


$SQL_LEG = mssql_query("SELECT DISTINCT NOME_DISC 
						FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
						WHERE CODIGO  = '".$Codigo."' ");
$dataL 	 = array();

while($x = mssql_fetch_array($SQL_LEG)){	 	 
	   	  
	   $dataL[] = $x['NOME_DISC'];

}
#echo "<pre>";
#print_r($dataL);

foreach($dataL as $value){
$plot->SetLegend($value);
}

//$plot->SetLegendStyle('right', 'right','');
#Utilizados p/ marcar labels, necessario mas nao se aplica neste ex. (manual) :
$plot->SetXTickLabelPos('none');
$plot->SetXTickPos('none');
//formato da imagem
$plot->SetFileFormat('jpg');
#Gera o grafico na tela
$plot->DrawGraph();

Compartilhar este post


Link para o post
Compartilhar em outros sites

É pq eu pego Média de cada disciplina de acordo com cada questão. Eu fiz um Estático FUNCIONA LEGAL Segue o Código:

 

 

<?php
# PHPlot Example: Simple line graph
require_once 'phplot.php';

include_once("../classes/Conexao.php");


$sqlQuestao = mssql_query(" SELECT distinct questao 
						FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
						WHERE CODIGO = '9000851'
						order by questao ");
$data = array();

while($DadosQuestao = mssql_fetch_array($sqlQuestao)){			

	/*
	$sqlDisci   = " SELECT DISTINCT DISCIPLINA 
				      FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
					  WHERE CODIGO   = '9000851'
					  AND QUESTAO    = '".$DadosQuestao[0]."' ";
	$rsDisc       = mssql_query($sqlDisci);

	while($DadodDisc = mssql_fetch_array($rsDisc)){
	*/
	$sqlQuestao2 = " SELECT Media 
					 FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
		 		     WHERE CODIGO   = '9000851'
					 AND QUESTAO    = '".$DadosQuestao[0]."' 
					 AND DISCIPLINA = 'CJU011' " ;

	#echo "<pre>";
	#print_r($sqlQuestao2);

	$rsQuestao   = mssql_query($sqlQuestao2);							 
	$Array2      = mssql_fetch_array($rsQuestao);

	$sqlQuestao3 = " SELECT Media 
					 FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
		 		     WHERE CODIGO   = '9000851'
					 AND QUESTAO    = '".$DadosQuestao[0]."' 
					 AND DISCIPLINA = 'PSC028' " ;
	$rsQuestao3   = mssql_query($sqlQuestao3);							 
	$Array3       = mssql_fetch_array($rsQuestao3);

	$sqlQuestao4 = " SELECT Media 
					 FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
		 		     WHERE CODIGO   = '9000851'
					 AND QUESTAO    = '".$DadosQuestao[0]."' 
					 AND DISCIPLINA = 'PSC036' " ;
	$rsQuestao4   = mssql_query($sqlQuestao4);							 
	$Array4       = mssql_fetch_array($rsQuestao4);


	$Array   	 = array();

	$Array[0] 	 = $DadosQuestao[0];
	$Array[1] 	 = $Array2[0];	
	$Array[2] 	 = $Array3[0];	
	$Array[3] 	 = $Array4[0];	


	$data[]  	 = array($Array[0],$Array[1],$Array[2],$Array[3]);



}
#echo "<pre>";
#print_r($data);


#Instancia o objeto e setando o tamanho do grafico na tela
$plot = new PHPlot(800,600);
#Tipo de borda, consulte a documentacao
$plot->SetImageBorderType('PLAIN');
#Tipo de grafico, nesse caso barras, existem diversos(pizza…)
//bars, stackedbars, lines, linepoints, area, points, pie, thinbarline, squared, stackedarea',
$plot->SetPlotType('LINES');
#Tipo de dados, nesse caso texto que esta no array
$plot->SetDataType('text-data');
#Setando os valores com os dados do array
$plot->SetDataValues($data);
#Titulo do grafico
$plot->SetTitle("Média do Docente por itens em Disciplinas 20101");
#Legenda, nesse caso serao tres pq o array possui 3 valores que serao apresentados


$SQL_LEG = mssql_query("SELECT DISTINCT NOME_DISC 
					FROM IE_VW_AV_DOC_GERAL_ITENS_DISC_ATL
					WHERE CODIGO  = '9000851'");
$dataL 	 = array();

while($x = mssql_fetch_array($SQL_LEG)){	 	 

   $dataL[] = $x['NOME_DISC'];

}
#echo "<pre>";
#print_r($dataL);

foreach($dataL as $value){
$plot->SetLegend($value);
}

//$plot->SetLegendStyle('right', 'right','');
#Utilizados p/ marcar labels, necessario mas nao se aplica neste ex. (manual) :
$plot->SetXTickLabelPos('none');
$plot->SetXTickPos('none');
//formato da imagem
$plot->SetFileFormat('jpg');
#Gera o grafico na tela
$plot->DrawGraph();

?>



 

 

MAS ESTOU PRECISANDO QUE AS DISCIPLINAS SEJAM DINAMICAS ENTENDEU ?

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.