Exemplo Fazer um gráfico a partir de um resultado de um SQL Pessoal, bom dia Alguém tem algum exemplo de como fazer um gráfico a partir de um resultado de um SQL? A quem puder ajudar, agradeço desde já Obrigado....
VC
Exemplo Fazer um gráfico a partir de um resultado de um SQL  
Pessoal, bom dia

Alguém tem algum exemplo de como fazer um gráfico a partir de um resultado de um SQL?

A quem puder ajudar, agradeço desde já

Obrigado.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (6)


MA

Ola Vectra Consultoria, espero que ajude!
 
  1. <?php
  2. class SalesByDayChartView extends TPage
  3. {
  4. function __construct($show_breadcrumb = true)
  5. {
  6. parent::__construct();
  7. //aqui é o arquivo html com o esboço do gráfico
  8. $html = new THtmlRenderer('app/resources/esboco_line_chart.html');
  9. //você precisa passar um array para popular o esboço do gráfico
  10. $data = array();
  11. $data[] = ['Dias', 'Vendas'];
  12. TTransaction::open("conexao"); // abre uma conexão
  13. $conn = TTransaction::get(); // recupera a conexão PDO
  14. //aqui faz a consulta SQL
  15. $result = $conn->query('SELECT count(sales.id) AS count, DATE_FORMAT(sales.created_at, "%Y-%m-%d") as day from sales');
  16. // iterate results
  17. foreach ($result as $row) {
  18. $data[] = [$row['day'], $row['count']];
  19. }
  20. TTransaction::close(); // close transaction
  21. // substitui as variáveis da seção main
  22. $html->enableSection('main', array('data' => json_encode($data),
  23. 'width' => '100%',
  24. 'height' => '300px',
  25. 'title' => 'Vendas por dia',
  26. 'ytitle' => 'Qtd Vendas',
  27. 'xtitle' => 'Dias',
  28. 'uniqid' => uniqid()));
  29. $container = new TVBox;
  30. $container->style = 'width: 100%';
  31. if ($show_breadcrumb) {
  32. $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  33. }
  34. $container->add($html);
  35. parent::add($container);
  36. }
  37. }
  38. ?>


UM modelo do html você encontra aqui neste link abaixo
www.adianti.com.br/framework_files/tutor/app/resources/google_line_chart.html
MA

 
  1. <?php
  2. class SalesByDayChartView extends TPage
  3. {
  4. function __construct($show_breadcrumb = true)
  5. {
  6. parent::__construct();
  7. //aqui é o arquivo html com o esboço do gráfico
  8. $html = new THtmlRenderer('app/resources/esboco_line_chart.html');
  9. //você precisa passar um array para popular o esboço do gráfico
  10. $data = array();
  11. $data[] = ['Dias', 'Vendas'];
  12. TTransaction::open("conexao"); // abre uma conexão
  13. $conn = TTransaction::get(); // recupera a conexão PDO
  14. //aqui faz a consulta SQL
  15. $result = $conn->query('SELECT count(sales.id) AS count, DATE_FORMAT(sales.created_at, "%Y-%m-%d") as day from sales' );
  16. // iterate results
  17. foreach ($result as $row) {
  18. $data[] = [$row['day'], $row['count']];
  19. }
  20. TTransaction::close(); // close transaction
  21. // substitui as variáveis da seção main
  22. $html->enableSection('main', array('data' => json_encode($data),
  23. 'width' => '100%',
  24. 'height' => '300px',
  25. 'title' => 'Vendas por dia',
  26. 'ytitle' => 'Qtd Vendas',
  27. 'xtitle' => 'Dias',
  28. 'uniqid' => uniqid()));
  29. $container = new TVBox;
  30. $container->style = 'width: 100%';
  31. if ($show_breadcrumb) {
  32. $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  33. }
  34. $container->add($html);
  35. parent::add($container);
  36. }
  37. }
  38. ?>
MA

Cara eu estava editando direto no editor do forum e bugou mas aqui está o agrupamento na query
 
  1. <?php
  2. class SalesByDayChartView extends TPage
  3. {
  4. function __construct($show_breadcrumb = true)
  5. {
  6. parent::__construct();
  7. //aqui é o arquivo html com o esboço do gráfico
  8. $html = new THtmlRenderer('app/resources/esboco_line_chart.html');
  9. //você precisa passar um array para popular o esboço do gráfico
  10. $data = array();
  11. $data[] = ['Dias', 'Vendas'];
  12. TTransaction::open("conexao"); // abre uma conexão
  13. $conn = TTransaction::get(); // recupera a conexão PDO
  14. //aqui faz a consulta SQL
  15. $result = $conn->query('SELECT count(sales.id) AS count, DATE_FORMAT(sales.created_at, "%Y-%m-%d") as day from sales' group by day order by day);
  16. // iterate results
  17. foreach ($result as $row) {
  18. $data[] = [$row['day'], $row['count']];
  19. }
  20. TTransaction::close(); // close transaction
  21. // substitui as variáveis da seção main
  22. $html->enableSection('main', array('data' => json_encode($data),
  23. 'width' => '100%',
  24. 'height' => '300px',
  25. 'title' => 'Vendas por dia',
  26. 'ytitle' => 'Qtd Vendas',
  27. 'xtitle' => 'Dias',
  28. 'uniqid' => uniqid()));
  29. $container = new TVBox;
  30. $container->style = 'width: 100%';
  31. if ($show_breadcrumb) {
  32. $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  33. }
  34. $container->add($html);
  35. parent::add($container);
  36. }
  37. }
  38. ?>
VC

Obrigado Marcelo.

Será de grande valia sua resposta.

VC

Marcelo, bom dia.

Como eu faria para executar esse gráfico com este código? só colocar a classe no menu?
MA

Sim adiciona SalesByDayChartView nos programas, depois você adiciona no grupo que deseja ai você coloca no menu e pronto, está feito o controle de acesso, imagino que não seja uma página pública!