Jump to content
degloriocg

Pegar dados da tabela para usar grafico chart.js

Recommended Posts

Bom dia, estou há duas semanas tentando fazer com que o gráfico chart.js pegue os dados do banco de dados e exiba em tempo real.

Segue meu banco de dados.

 CREATE TABLE `tab_clientes` (
      `id` int(11) NOT NULL,
      `data_nascimento` date DEFAULT NULL,
      `line` varchar(220) NOT NULL,
      `model` varchar(220) NOT NULL,
      `wo` varchar(220) NOT NULL,
      `tool` varchar(220) NOT NULL,
      `detection_point` varchar(220) NOT NULL,
      `defect_content` varchar(220) NOT NULL,
      `causes` varchar(220) NOT NULL,
      `owner` varchar(220) NOT NULL,
      `qty` varchar(220) NOT NULL,
      `ppm` varchar(220) NOT NULL,
      `action` varchar(220) NOT NULL,
      `symptom` varchar(220) NOT NULL,
      `status` varchar(10) DEFAULT NULL,
      `foto` varchar(200) DEFAULT NULL,
      `data_cadastro` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `data_alteracao` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

A coluna Symptom ele da resposta Leakage ou Function, gostaria de contabilizar cada um e dar o resultado por semana( Por exemplo, da primeira semana de dezembro, teve 5 resultados Leakage, na segunda, 3 e assim por diante, dentro de cada mes.

tentei assim... porém não consigo dividir os dias da semana em relação a data selecionada.

 

	<?php
    // Consultar dados
    $dados = array();

    $sql = "SELECT symptom, COUNT(*) as data_nascimento FROM tab_clientes WHERE data_nascimento BETWEEN '2018-11-28' AND '2018-11-29' GROUP BY symptom";
    $pdo = new PDO('mysql:host=localhost;dbname=db_blog', 'root', '');
    $stmt = $pdo->query($sql);
    while ($obj = $stmt->fetchObject()) {
        switch ($obj->symptom) {
        case 'Leakage':
            $dados['Leakage'] = $obj->data_nascimento;
            break;
        case 'Function':
            $dados['Function'] = $obj->data_nascimento;
            break;
        }
    }?>
        <script>
          var ctx = document.getElementById("myChart");
          var myChart = new Chart(ctx, {
            type: 'line',
            data: {
              labels: ["Semana1", "Semana2", "Semana3", "Semana4", "Semana5"], <!--//Visto que o mes tem 5 semanas. -->
              datasets: [{
    			label: "Leakeage",
                data: [<?php echo $dados['Leakage']?>, <?php echo $dados['Leakage']?>, <?php echo $dados['Leakage']?>, <?php echo $dados['Leakage']?>, <?php echo $dados['Leakage']?>, <?php echo $dados['Leakage']?>, <?php echo $dados['Leakage']?>],
                lineTension: 0,
                backgroundColor: 'transparent',
                borderColor: '#007bff',
                borderWidth: 4,
                pointBackgroundColor: '#007bff'
              },{
    			label: "Function",
                data: [<?php echo $dados['Function']?>, <?php echo $dados['Function']?>, <?php echo $dados['Function']?>, <?php echo $dados['Function']?>, <?php echo $dados['Function']?>],
                lineTension: 0,
                backgroundColor: 'transparent',
                borderColor: '#7bff00',
                borderWidth: 4,
                pointBackgroundColor: '#7bff00'
              }]
            },
            options: {
              scales: {
                yAxes: [{
                  ticks: {
                    beginAtZero: false
                  }
                }]
              },
              legend: {
                display: false,
              }
            }
          });
        </script>

Se alguém puder me ajudar. Agradeço muito!!!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Thalles Rangel
      Galera, fiz um crud o professor até explica como funciona cada, mas ele não ensina a criar um botão que chama uma função que apaga, como seria feito? algum exemplo?
      link do projeto: https://www.guj.com.br/t/botao-para-alterar-em-php/385691
      tudo funciona, a inserção, a pesquisa, agora falta o botão de editar e o botão de excluir (não sei colocar isso) alguém em dá um help?
    • By Thalles Rangel
      Galera, fiz um crud o professor até explica como funciona cada, mas ele não ensina a criar um botão que chama uma função que apaga, como seria feito? algum exemplo?
      link do projeto: https://www.guj.com.br/t/botao-para-alterar-em-php/385691
      tudo funciona, a inserção, a pesquisa, agora falta o botão de editar e o botão de excluir (não sei colocar isso) alguém em dá um help?
    • By Thalles Rangel
      Galera, fiz um crud o professor até explica como funciona cada, mas ele não ensina a criar um botão que chama uma função que apaga, como seria feito? algum exemplo?
      link do projeto: https://www.guj.com.br/t/botao-para-alterar-em-php/385691
      tudo funciona, a inserção, a pesquisa, agora falta o botão de editar e o botão de excluir (não sei colocar isso) alguém em dá um help?
    • By Thalles Rangel
      Galera, fiz um curd o professor até explica como funciona cada, mas ele não ensina a criar um botão que chama uma função que apaga, como seria feito? algum exemplo?
      link do projeto: https://www.guj.com.br/t/botao-para-alterar-em-php/385691
      tudo funciona, a inserção, a pesquisa, agora falta o botão de editar e o botão de excluir (não sei colocar isso) alguém em dá um help?
    • By gilcasaoutlook
      Senhores.
      Gostaria de Executar uma StoredProcedure em MySql
      e o resultado retornar em um DataTable.
      mas o retorno do DataTable não está dando certo.
      Tenho uma conexão com o mysql:
      public class Conexao
              private MySqlConnection conexao = null;
              private DataTable dt;
              private MySqlDataAdapter da;
              private MySqlCommandBuilder cb;
              private MySqlDataReader dr;
              private MySqlParameter[] pms;
              string StrConexao = "server=" + ConfigurationManager.AppSettings["server_name"] + ";" +
                                            "dataBase=" + ConfigurationManager.AppSettings["data_base"] + ";" +
                                            "port=" + ConfigurationManager.AppSettings["port_number"] + ";" +
                                            "User Id=root;" +
                                            "password=root";
              // Metodo conectar no banco.
              public MySqlConnection AbrirConexao()
              {
                  try
                  {
                      conexao = new MySqlConnection(StrConexao);
                      conexao.Open();
                      return conexao;
                  }
                  catch (Exception erro)
                  {
                      throw erro;
                  }
              }
      }
      Conexão está funcionando porque utilizo ela em outro recurso.
      Tenho uma Stored Procedure em MySql:
      CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_seleciona_pessoa`()
      BEGIN
          
          select id, nome from pessoa;
          
      END
      Tenho uma função que retorna um DataTable:
       public DataTable RetDataTableStoredProc()
      {
                      MySqlCommand cmd = new MySqlCommand();
                      AbrirConexao();
                      cmd.Connection = conexao;
                      cmd.CommandType = CommandType.StoredProcedure;
                      cmd.CommandText = StoredProc;
                      dr = cmd.ExecuteReader();
                      dt.Load(dr);
                      return dt;
      }                
      O comando dr = cmd.ExecuteReader(); passa sem dar erro
      mas quando executo as duas linhas abaixo:
                      
                      dt.Load(dr);
                      return dt;
      e não retorna um DataTable.
      Conto com vossa ajuda.
      Att.
      Gilberto Rezende               
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.