Jpgraph e mysql

Publicado por Luiz Fernando Postingel Quirino 03/10/2007

[ Hits: 10.778 ]

Homepage: http://luizfpq.blogspot.com

Download linha.php




Criação de gráfico baseado em leituras no db Mysql.

O exemplo de código abaixo lê o db e plota um gráfico de leituras termais.

  



Esconder código-fonte

No mysql copie o seguinte código:

CREATE TABLE temperatura (
  cod int(5) NOT NULL auto_increment,
  codmod int(5) default NULL,
  data varchar(10) default NULL,
  hora time default NULL,
  temp varchar(10) default NULL,
  PRIMARY KEY  (cod)
) TYPE=MyISAM;

Isso criará a tabela que leremos.

Depois crie o arquivo graf_temp.php com o seguinte código


<?
mysql_connect('localhost','user','senha');
mysql_select_db('leitura');

/*conectamos ao nosso banco de dados,
 e incluiremos os arquivos do jpgraph mude os atribudos dos includes de acordo com suas configurações, faça o mesmo com o mysql_connect e mysql_select_db, para que funcione perfeitamente*/

include ("./src/jpgraph.php");
include ("./src/jpgraph_line.php");

/*o while lê todas as entadas da tabela temperatura
você pode marcar quantas entradas quer ler na tabele pelo if($i == n) determinando o número de seleções
*/

$aux=mysql_query('select * from temperatura order by cod desc ');
$i=0;
             while($lin=mysql_fetch_row($aux))
               {
               $vet = $vet.','.$lin[4];
            $titx = $titx.','.$lin[3];
           $i++;
           
      if($i==12)
      {
       break;
        }
      
      }
      $vet=split(',',$vet);//cria a variavel array que de ve ser recebida pela matriz;
      $matriz=(array_reverse($vet));//inverte as posicões do vetor
      $titx=split(',',$titx);//cria a variavel array que será o título do eixo x;
      $hora=(array_reverse($titx));//inverte as posicões do vetor
      
// Para testar sem banco de dados descomente as linhas abaixo e comente todas as de conexão ao banco
//$matriz = array(2,50,10,3,11,1,6,2,50);
//$hora = array('7:10','7:11','7:00','7:01','7:02','7:03','7:04','7:05','7:06');

// CRIANDO O GRÁFICO
$grafico = new Graph(800,400);
// ESCALA AUTOMATICA 
$grafico->SetScale("textint");

//-------------------CONSTRUINDO AS LINHAS GRÁFICO---------------------//
// JOGA OS DADOS DA MATRIZ E PLOTA EM UM GRAFICO LINEAR
$line = new LinePlot($matriz);
// MOSTRA OS PONTOS (LINHAS)
$line->value->Show();
// MOSTRA COR DA LINHA
$line->value->SetColor("blue");
// SETA FONTE E ESTILO DA FONTE
$line->value->SetFont(FF_FONT1);
//----------------------------------------------------------------------------------//

// ADCIONA AS LINHAS NO GRÁFICO
$grafico->Add($line);

//-----------------------PROPRIEDADES DA IMAGEM--------------------------//
// DEFINE AS MARGENS DA IMAGEM
$grafico->img->SetMargin(40,30,30,30);
// DEFINE O TÍTULO DA IMAGEM
$grafico->title->Set("TEMPERATURA EM GRAUS CELSIUS");
// DEFINE O TÍTULO DO EIXO X
$grafico->xaxis->title->Set("Horário das leituras");
// DEFINE O TÍTULO DO EIXO Y
$grafico->yaxis->title->Set("Temperatura");
//DEFINE OS VALORES NO EIXO X
 $grafico->xaxis->SetTickLabels($hora); 
//---------------------------------------------------------------------------------//

// MOSTRANDO O GRÁFICO NO BROWSER
$grafico->Stroke();
?>


Caso você queira que o gráfico seja plotado em outra página, inclua o arquivo graf_temp.php em seu html como uma imagem da seguinte maneira

<img src="graf_temp.php">

Abraços, e bom proveito...

Scripts recomendados

Função para converter datas

Xajax - FrameWork

Retornar o último dia do Mês

Cron - Classe PHP para cálculo da diferença entre duas datas

Classe para conversões de data/hora em diversos formatos


  

Comentários
[1] Comentário enviado por Muidine em 11/02/2014 - 23:19h

Ola pessoal, usei os scripts mas da erro no mysql_fetsh _dos(), será q devo introduzir ou substituir variaveis $vet e $titix por algo? Stou encravado aqui, estaria grato pela ajuda. Obrigado.

[2] Comentário enviado por Muidine em 11/02/2014 - 23:24h

*queria dizer mysql_fetsh _row().

[3] Comentário enviado por luizfpq em 12/02/2014 - 10:34h

Quando o erro do mysql_fetch_row acontece, provavelmente há um erro na sua query do mysql que faz retornar um resultado vazio. Este é um script bem antigo, mas creio que ainda funcione, confira os parâmetros da conexão com o banco, mysql_connect('SEUSERVIDOR','SEUUSUARIO','SUASENHA');
mysql_select_db('SEUBANCO');
Após esta linha "$aux=mysql_query('select * from temperatura order by cod desc ');", onde você trocará o select pela query que diga respeito a sua tabela correta, coloque um "echo $aux;" escrevendo a variável auxiliar que contém a query, você pode utilizá-la diretamente no banco e encontrar um erro na sua query caso haja.

Espero ter sido útil.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts