Jpgraph e mysql

Publicado por Luiz Fernando Postingel Quirino 03/10/2007

[ Hits: 11.202 ]

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

R&OS pdf

video aleatórias no seu site..youtube

Upload

Receber atualização de encomendas do correios em seu e-mail

Calsse eveFile: manipulação de arquivos


  

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