Olá, alguem poderia me da uma força com graficos php e mysql?

Pessoal eu estudo javascript a uns 3 meses e comecei com o php tbm, tenho um web site de cardapio online e estou tentando criar um grafico para meu site, de linhas com 2 linhas: "pedidos finalizados / pedidos cancelados ". Por dia e por mês talvez, mas até agr eu não consegui sozinho. :sleepy: :sob:

eu até consegui criar um relatorio com filtro com data inicial e data final

consegui add o filtro pesquisando na internet tbm kkk

mas estou quebrando tanto a cabeça para fazer esse grafico :sob:

Por favor alguem poderia me dar uma luz de como começar?

Nessa imagem contem o filtro que mencionei acima, e tbm as imagens da minha database.

o status do pedido finalizado é “2”
o status do pedido cancelado é “3”

Sua dificuldade está no sql ou no processamento dos dados para exibição? O que esse gráfico precisa exibir? Qual coluna determina o status?

Se é totalizar o valor por situação, você pode conseguir o que precisa com sum(), adicionando a condição no where. Algo como (supondo que statusp é o status do pedido):

select sum(v_pedido) as total_situacao where (statusp = 2 or statusp = 3) group by statusp;

Adicionando os outros filtros conforme necessário.

Se não é isso, explique melhor o resultado que deseja obter.

Abraço.

minha dficuldade esta sendo puxar os dados do sql para exibir em forma de grafico.

gostaria de exibir um grafico dos pedidos feitos por dia.

a coluna determina o status é a: status.
o valor total do pedido por pedido esta em: v_pedido.

gostaria que esse grafico fosse independente dos filtros que consegui fazer sabe.

quero que ele mostre o grafico de pedidos feitos por dia no qual mostraria os 30/31 dias do mês.

mais ou menos como esse da imagem
mas somente com os pedidos finalizados por dia, mostrando os dias do mes todo

muitissimo obrigado pela atenção :blush:

é muito complicado ajudar a fazer do zero, você precisa trazer duvidas e desenvolver tudo fica bem complicado.

poxa :sob: :sob:

Se você se esforçar e começar a implementar e trazer aqui as duvidas fica mais fácil ajudar, ninguém aqui vai disponibilizar a fazer do zero, agora pouco ajudei um rapaz, mas, praticamente ele colocou todo o código e eu decifrei a duvida, mas, o que você colocou e passou para nós que ainda não implementou nada!

entendi, vou começar e conforme minhas duvidas forem surgindo venho aqui hehehe. :grinning:

obgado pela atenção

1 curtida

Fiz um exemplo ate onde eu começo a me atrapalha ok? kkk

	<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">
          google.charts.load('current', {'packages':['corechart']});
          google.charts.setOnLoadCallback(drawChart);
    
          function drawChart() {
            var data = google.visualization.arrayToDataTable([
              ['MÊS', 'PEDIDOS'],
              
              <?php
              $servername = "localhost";
              $database = "brdelivery_delivery";
              $username = "brdelivery_delivery";
              $password = "deusefiel1020";
              
              $conexao = mysqli_connect($servername, $username, $password, $database);
              
              $sql = "SELECT * FROM pedidos WHERE 1=1 AND (data_hora) AND rel_estabelecimentos_id = '$eid'";
              $buscar = mysqli_query($conexao,$sql);
              
              while ($dados = mysqli_fetch_array($buscar)) {
                  $pedidostotais = $dados['v_pedido'];
                  $mes = $dados['data_hora'];
                  
              ?>
              
              ['<?php echo $mes ?>', <?php echo $pedidostotais ?>],
              <?php }?>
            ]);
    
            var options = {
              title: 'Company Performance', 
              legend:'none'
            };
    
            var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
        
		<div id="chart_div" style="width: 100%; height: 300px;"></div>

usei um auxilio do google chart, dai o grafico sai dessa forma

mas foi eu quem colocou todo o php

me enrolo nessa parte, ali encima mostra total de 170 pedidos que é o certo no total total kk…

dai o grafico mostra 104 mas por horario acho kkk e tbm nao mostra por dia e sim por horario e para no dia 25

o grafico nao esta acompanhando o filtro e tudo bem deve ser dessa forma mesmo. mas esses 170 pedidos totais que mostra ali no filtro, deveria estar sendo divididos nos dias que foram feitos nao?

nessa parte ja to quebrando a cabeça ja uns dias kkk :partying_face:

eu estudo sozinho pelo Youtube kkk por isso essas duvidas inuteis kk

Não são dúvidas inúteis, mas como disse o Dragoon, te explicar tudo o que precisa ser feito pode tomar mais tempo do que o pessoal aqui está disposto à gastar ajudando.

Eu não manjo desses gráficos do google, então não tenho como ajudar na implementação exata (e eu teria que aprender a usar só pra te explicar, o que me tomaria muito tempo). Mas vamos ver como podemos ajudar.

Você precisa separar seu problema em 2 partes:

  1. trazer os dados necessários do banco de dados (e somente os necessários);
  2. exibir esses dados no gráfico preenchendo o array;

Resolva essas duas partes independentemente e só depois tente juntar tudo.

Por exemplo, você diz que ver um gráfico separado por dia. Então a primeira coisa é: como fazer uma consulta sql (select) que soma os os dados separando por dia?

Pra somar os dados, você usa sum(), como já sugeri. Pra separar por dia, você precisa fazer um agrupamento (group by). Como sua coluna de data é do tipo datetime (e não somente date), você precisa separar a parte da data da parte da hora, usando a função date() na coluna. Então, uma consulta que soma todos os pedidos separando por dia seria algo como:

select sum(v_pedido) as total_do_dia, date(data_hora) as dia from pedidos group by date(data_hora)

Execute e valide essa consulta na sua ferramenta de banco de dados (phpmyadmin) antes de tentar rodá-la no seu código php. Você terá 2 colunas, com as informações que precisa.

Agora é o caso de usar essa consulta no php e gerar o gráfico, similar ao que você já fez. Note que as colunas tem alias, então chame as colunas $dados['dia '] e $dados[‘total_do_dia’], em vez de $dados[‘v_pedido’] e $dados[‘data_hora’].

Estudar por conta e usando Youtube não é problema, mas recomendo não tentar programar por “tentativa e erro” , mudando valores arbitrariamente até obter o resultado que quer. Isso raramente funciona, e consome muito mais tempo que uma solução pensada.

Abraço.

2 curtidas

obgdo, vou seguir o conselho e parar de ficar na tentativa e erro e aprender mesmo, agradeço mt sua atenção e a de todos com minha duvida vlwwww.