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 Jefferson andre
      Boa tarde, por favor me ajudem com uma situacao que nao sei como proceder em linguagens web
       
      Tenho dois forms na mesma tela, ao selecionar o cliente e clicar no botao buscar dados, as informacoes que eu pegar no mysql vao "abastecer" os campos do segundo formulario, e entao enviadas para a inclusao utilizando um outro botao no final da pagina.
       
      Nao sei como atualizar as informacoes desses campos na tela, e que posteriormente serao enviados para o banco de dados incluindo as novas informacoes.
       
      Agradeço sugestoes sobre a tela enviada.

    • By AndersonWS
      Tenho um código que aparentemente estaria certo porém ele "trava" e  não mostra os resultados.
      Creio que o problema está na parte de "buscar" o json apenas.
      Segue o código:
      <style>.carregando{color:#666;display:none;}</style> <div class="col-md-7"> <label for="empreendimento">Escolha o empreendimento</label> <select name="empreendimento" class="form-control" required="" id="empreendimento"> <option value="">-- Escolha um empreendimento --</option> <?php $sqlVs = "SELECT `id`,`nm` FROM `empreend` WHERE `dis`='1' ORDER BY `nm` ASC"; $queryVs = mysqli_query($link, $sqlVs); $total = mysqli_num_rows($queryVs); if ($total > 0){ while($r = mysqli_fetch_array($queryVs)){ $id = $r['id']; $nm = $r['nm']; echo '<option value="'.$id.'">'.$nm.'</option>'; } } else { echo '<option value="0">Não há empreendimentos disponíveis</option>'; } ?> </select> </div> <div class="col-md-5"> <label for="unidades">Unidade</label> <span class="carregando">Aguarde, carregando...</span> <select name="unidades" id="unidades" class="form-control" required=""> <option value="">-- Escolha uma unidade --</option> </select> </div> <script src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load('jquery', '1.3'); </script> <script type="text/javascript"> $(function(){ $('#empreendimento').change(function(){ if( $(this).val() ) { $('#unidades').hide(); $('.carregando').show(); $.getJSON('ajax/busca_emp.php?search=',{empreendimento: $(this).val(), ajax: 'true'}, function(j){ var options = '<option value=""></option>'; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].id + '">' + j[i].nm + '</option>'; } $('#unidades').html(options).show(); $('.carregando').hide(); }); } else { $('#unidades').html('<option value="">– Escolha um empreendimento –</option>'); } }); }); </script> if(!empty($_GET["search"])) { $empreendimento = trim($_GET["search"]); $empreendimento = mysqli_real_escape_string($link, $empreendimento); $unidades = array(); $sqlVs = "SELECT `id`,`nm` FROM `empreendimento` WHERE `id`='$empreendimento' ORDER BY `nm` ASC"; $queryVs = mysqli_query($link, $sqlVs); $total = mysqli_num_rows($queryVs); if ($total > 0){ while($r = mysqli_fetch_array($queryVs)){ $unidades[] = array( 'id' => $r['id'], 'nm' => $r['nm'], ); } } echo( json_encode( $unidades ) ); } else { echo 'vazio'; } Ele trava e fica apenas mostrando:
      Aguarde, carregando...
       
      Olhei o json e ele está recuperando:
      [{"id":"1","nm":"Condominio"}]
    • By quimera
      Estou com um problema, os registro entram no banco de dados dinamicamente, e neste caso algumas postagens pode enviar valores que já existem na tabela/coluna específica.
      Ex.: 
      UPDATE `tableoperator` SET `coluna`= '1' WHERE id = '1' o Registro no banco de dados está assim:
      id | coluna | data 1       1     2020-01-01 Simplesmente não atualiza se a coluna já tiver o valor.
      Alguém pode ajudar, nunca havia me deparado com isto
    • By Jefferson andre
      Ola, alguem pode me ajudar a preencher corretamente o campo de razao social do cliente por favor. 
       
      Na tabela o campo id esta preenchendo corretamente
       
      Obrigado pela ajuda
       
      <label for="inputNome">Cliente</label> <br> <?php require_once('conexao_dbo.php'); $filtro_clientes = $arquivo->prepare("SELECT id, razao,deletado, ativo, id_empresa FROM clientes WHERE deletado=0 AND id_empresa='$id_empresa' ORDER BY ativo,razao"); $filtro_clientes->execute(); $filtro_cliente_atual = $filtro_clientes->fetch(); //print_r($filtro_clientes); ?> <select class="custom-select col-md-12" required name="id_cliente" id="id_cliente" required name="cliente"> <option value='<?php echo $filtro_cliente_atual['id'];?>' selected> <?php echo $filtro_cliente_atual['razao'];?> </option> <?php while ($clientes = $filtro_clientes->fetch()) {?> <option value="<?php echo $clientes['id'] ?>"><?php echo $clientes['razao'];?> </option> <?php } ?> </select>  
    • By adomingo10
      Pessoal
      Sou iniciante e estou com dúvida no erro de variável indefinida, a conexão do BD funciona, em outra página do projeto os dados são listados corretamente. Nesse código abaixo, já testei de tudo e aparecem dois códigos de erro. 
      O objetivo desse código é listar dentro do html os dados da tabela do BD, exemplo:  vou deixar fixo um registro da categoria no topo da página. 
       
      Código: <!-- CONTROLLER --> <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Buscar extends CI_Controller { public $data = array(); public function __construct(){ parent::__construct(); $this->load->model('menus_model'); $this->data['base_url'] = base_url(); $this->data['menus'] = $this->menus_model->getMenus(); $this->data['menu_ativo'] = ''; $this->data['header'] = $this->load->view('frontend/includes/header.php', $this->data, true); $this->data['navigation'] = $this->load->view('frontend/includes/navigation.php', $this->data, true); $this->data['footer'] = $this->load->view('frontend/includes/footer.php', $this->data, true); } public function index() { //page title $this->data['title'] = 'Buscar'; //template buscar $this->data['body'] = $this->load->view('frontend/pages/buscar.php', $this->data, true); //default template $this->load->view('frontend/templates/default.php', $this->data); } public function search_category(){ $this->load->model("Buscar_model"); $lista = $this->Buscar_model->BuscarCategory(); $dados = array("categories" => $lista); $this->load->view('frontend/pages/buscar.php', $dados); } } // MODEL // <?php class Buscar_model extends CI_Model{ public function getBuscar( $keyword=null ){ if($keyword){ $this->db->like('client_name', $keyword); $this->db->or_like('category_name', $keyword); $this->db->or_like('client_description', $keyword); $this->db->or_like('city_name', $keyword); $this->db->where('client_active', 1); } return $this->db->get("base_clie_total")->result_array(); } public function BuscarCategory(){ return $this->db->get("categories")->result_array(); } } // VIEW // <body> <section class="hero is-info"> <div class="hero-head"> <header class="nav"> <div class="container"> <div class="nav-left"> <a class="nav-item logo" href="<?= $base_url ?>"> <img src="<?= $base_url ?>assets/img/blank.png" alt="Site"> </a> </div> <div class="nav-right nav-menu"> <?= $navigation ?> </div> </div> </header> </div> </section> <section class="section"> <div class="container"> <h2 class="title">Buscar</h2> <?php foreach ($lista as $categ) : ?> <? $categ ['category_name'] ?> <?php endforeach ?> /*/    ERRO 1: /*/
          A PHP Error was encountered
      Severity: Notice
      Message: Undefined variable: lista
      Filename: pages/buscar.php
      Line Number: 26
      Backtrace:
      File: D:\BF\SITE\application\views\frontend\pages\buscar.php
      Line: 26
      Function: _error_handler
      File: D:\BF\SITE\application\controllers\Buscar.php
      Line: 30
      Function: view
      File: D:\BF\SITE\index.php
      Line: 322
      Function: require_once

      /*/    ERRO 2: /*/

      A PHP Error was encountered
      Severity: Warning
      Message: Invalid argument supplied for foreach()
      Filename: pages/buscar.php
      Line Number: 26
      Backtrace:
      File: D:\BF\SITE\application\views\frontend\pages\buscar.php
      Line: 26
      Function: _error_handler
      File: D:\BF\SITE\application\controllers\Buscar.php
      Line: 30
      Function: view
      File: D:\BF\SITE\index.php
      Line: 322
      Function: require_once
×

Important Information

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