Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NeyViana

[Resolvido] Gráfico em PHP com MYSQL

Recommended Posts

É a primeira vez que escrevo em um fórum ainda mais em algo que não domino, então estou aqui para pedir a ajuda de como posso colocar esse php que deveria mostrar um gráfico aparecer o gráfico, pois ao executar o php não exibe nada fica uma tela em branco. O select funciona me retorna duas colunas(DATA e SOMA), sendo a DATA com os dias do mês de 1 a 31 e a SOMA é o total de registros efetuados no dia segue um exemplo abaixo:

DATA | SOMA

    1          52

    2          35

    3          49

 

Segue o conteúdo do arquivo que estou executando:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Teste de Gráfico</title>
<?php 
$dia = array();
$total = array();
$cor = array();
$cor[0] = "#0000CD";
$cor[1] = "#FF1493";
$cor[2] = "#7FFFD4";
$cor[3] = "#FF0000";

$mysqli = new mysqli("localhost", "root", "", "dados");
$select = $mysqli->query("SELECT DAY(dt) AS 'DATA', COUNT(*) AS 'SOMA' FROM dbtickets WHERE MONTH(dt) = 3 AND YEAR(DT) = 2018 GROUP BY DAY(dt)");
$row = $select->num_rows;
if($row){
    while($get = $select->fetch_array()){
        $coluna1 = $get['DATA'];
        $coluna2 = $get['SOMA'];
        array_push($total, $coluna2);
        array_push($dia, $coluna1);
    }
}
?>
<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([
            ["Dia", "Total", { role: "style" } ],
            <?php
            for($i = 0; $i < count($dia); $i++){ ?>
            ['<?php echo $dia[$i] ?>', <?php echo $total[$i] ?>, '<?php echo $cor[$i] ?>'],
            <?php
            }
            ?>
          ]);

          var view = new google.visualization.DataView(data);
                view.setColumns([0, 1,
                    { calc: "stringify",
                    sourceColumn: 1,
                    type: "string",
                    role: "annotation" },
                    2]);

          var options = {
            title: "GRAFIO DE CHAMADOS POR DIA MARÇO - 2018",
            width: 600,
            height: 400,
            bar: {groupWidth: "95%"},
            legend: { position: "none" },
          };
          var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values"));
          chart.draw(view, options);
      }
      </script>
    <div id="columnchart_values" style="width: 900px; height: 300px;"></div>
</head>
<body>
    <div id="chart_div"></div>
</body>
</html>

 

Desde já agradeço a ajuda!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ative a exibição de erros, conforme informado no seguinte tópico:

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como citei no meu primeiro post sou leigo no assunto, mas ativei a exibição dos erros conforme seu auxilio e mesmo assim continua aparecendo uma tela em branco a não ser que eu tenha colocado no local errado, porem pesquisei e obtive a informação que deve colocar acima do php em questão e foi onde coloquei.

 

Pesquisando mais um pouco, consegui que apareça o resultado do select, agora falta montar o gráfico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será preciso alterar no php.ini então. Você tem acesso as configurações do servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte.

 

  • Crie um arquivo e adicione apenas o seguinte código nele:
<?php
echo php_ini_loaded_file();
  • Acesse ele pelo navegador. Deve aparecer um caminho de arquivo. Esse arquivo é o php.ini;
  • Acesse o php.ini e altere os seguintes valores:
error_reporting = E_ALL // Define quais tipos de erro serão exibidos. E_ALL = Todos

log_errors = On // Define se os erros irão para o log
  
html_errors = On // Define se os erros utilizarão formatação HTML (específico para funções terceiras)
  
display_errors = On // Define se os erros serão exibidos para o usuário (Produção = Off e Desenvolvimento = On)
  • Após alterá-las, reinicie o apache;
  • Teste novamente seu código para verificar a existência de erros.

 

Essas propriedades não estarão juntas e muito menos na mesma ordem. Tome cuidade, pois, elas aparecerão mais de uma vez (pois, aparecem em comentários também). Quando, no inicío da linha possuir um ponto e vírgula (;) ou sustenido (#), significa que a linha está comentada e ela não é interpretada. Dessa forma, pesquise o próximo valor. Caso for até final do arquivo e alguma propriedade não está em uso, você pode descomentá-la para ser utilizada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criei o arquivo teste.php e coloquei o conteúdo conforme informado e apareceu o caminho do php.ini, abrindo o arquivo pesquisei a localização de cada item que você citou e todos estão iguais, porem não sei se muda algo pq estão sem o espaço entre o = 

 

Em seguida parei e iniciei o apache e executei o código e aparece exatamente igual a ultima vez q mexi nele exibe apenas o resultado do select

Compartilhar este post


Link para o post
Compartilhar em outros sites
53 minutos atrás, NeyViana disse:

[...] exibe apenas o resultado do select

 

Como assim? Mostre-me como fica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A alteração que fiz para exibir o resultado do select foi que inclui o  printf("%s %s <br>", $row[0], $row[1]);

Exibe o conteudo abaixo:

1 52 
2 28 
5 39 
6 44 
7 40 
8 34 
9 40 
12 43 
13 39 
14 46 
15 44 
16 44 
19 49 
20 39 
21 37 
22 48 
23 34 
26 32 
27 51 
28 51 
29 44

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vá no navegador e aperte CTRL + SHIFT + J. Deve exibir o console e, em consequência, os erros do JavaScript.

 

Caso não aparecer nenhum. Aperte CTRL + U e cole aqui o HTML que foi gerado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 52 <br>2 28 <br>5 39 <br>6 44 <br>7 40 <br>8 34 <br>9 40 <br>12 43 <br>13 39 <br>14 46 <br>15 44 <br>16 44 <br>19 49 <br>20 39 <br>21 37 <br>22 48 <br>23 34 <br>26 32 <br>27 51 <br>28 51 <br>29 44 <br>

<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([

["Dia", "Total", { role: "style" } ],

['1', 52, '#ff3300'],

['2', 28, '<br />

<b>Notice</b>: Undefined offset: 1 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['5', 39, '<br />

<b>Notice</b>: Undefined offset: 2 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['6', 44, '<br />

<b>Notice</b>: Undefined offset: 3 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['7', 40, '<br />

<b>Notice</b>: Undefined offset: 4 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['8', 34, '<br />

<b>Notice</b>: Undefined offset: 5 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['9', 40, '<br />

<b>Notice</b>: Undefined offset: 6 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['12', 43, '<br />

<b>Notice</b>: Undefined offset: 7 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['13', 39, '<br />

<b>Notice</b>: Undefined offset: 8 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['14', 46, '<br />

<b>Notice</b>: Undefined offset: 9 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['15', 44, '<br />

<b>Notice</b>: Undefined offset: 10 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['16', 44, '<br />

<b>Notice</b>: Undefined offset: 11 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['19', 49, '<br />

<b>Notice</b>: Undefined offset: 12 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['20', 39, '<br />

<b>Notice</b>: Undefined offset: 13 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['21', 37, '<br />

<b>Notice</b>: Undefined offset: 14 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['22', 48, '<br />

<b>Notice</b>: Undefined offset: 15 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['23', 34, '<br />

<b>Notice</b>: Undefined offset: 16 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['26', 32, '<br />

<b>Notice</b>: Undefined offset: 17 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['27', 51, '<br />

<b>Notice</b>: Undefined offset: 18 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['28', 51, '<br />

<b>Notice</b>: Undefined offset: 19 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

['29', 44, '<br />

<b>Notice</b>: Undefined offset: 20 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><br />

'],

]);



var view = new google.visualization.DataView(data);

view.setColumns([0, 1,

{ calc: "integer",

sourceColumn: 1,

type: "int",

role: "annotation" },

2]);



var options = {

title: "GRAFICO DE CHAMADOS POR DIA MARÇO - 2018",

width: 600,

height: 400,

bar: {groupWidth: "95%"},

legend: { position: "none" },

};

var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values"));

chart.draw(view, options);

}



</script>

<div id="columnchart_values" style="width: 900px; height: 300px;"></div>

<body>

<div id="chart_div"></div>

</body>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja que o código javascript estava mascarando os erros:

Citar

<b>Notice</b>: Undefined offset: 1 in <b>E:\xampp\htdocs\Tickets\monitor\manutencao\5.php</b> on line <b>27</b><b

 

A partir do 0, não há mais nada na variável $cor. Corrija isso e deve resolver seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicionei mais algumas cores e ficou assim:

$cor = array();
$cor[0] = '#ff3300';
$cor[1] = "#FF1493";
$cor[2] = "#7FFFD4";
$cor[3] = "#FF0000";
$i = 0;

Salvei e executei e continua exibindo a mesma coisa só o select

Se eu tirar o printf que esta abaixo do while não exibe nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicione diretamente neste trecho de código

['<?php echo $dia[$i] ?>', <?php echo $total[$i] ?>, '#0000CD']

E, então, a variável $cor pode ser removida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito!!!

Gabriel, muuuuuito obrigado mesmo de coração antes de publicar aqui no fórum estava tentando fazer esse gráfico a uns 20 dias como não domino essa área estava pesquisando e vendo videos mas nada estava me dando um caminho.

Agradeço mais uma vez pela sua paciência e ajuda.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.