Clipper On Line • Ver Tópico - PHP: exibir gráfico com dados obtidos de uma tabela MySQL

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor cjp » 14 Abr 2020 10:57

Verdade, que vacilo! Muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor cjp » 15 Abr 2020 00:48

Desculpe, mas vou precisar incomodar novamente.
Neste outro código:

$sql = "SELECT dtcotacao,cotacao FROM acoes where codigo='".$cd."' and compvenda=0";
$rs=mysql_query($sql);


$dthoje = date('Y')."-".date('m')."-".date('d');
$dt = date('Y-m-d', strtotime("-120 days",strtotime($dthoje)));
$dtult = $dt;

       echo "<br>";
       echo "<br>";
$rs=mysql_query($sql);

$obj = "['2020-01-01', '0'],";
if (mysql_num_rows($rs)==0)
{
   $obj.="['Nenhuma data', 0],";
}
else
{
   while ($l = mysql_fetch_array($rs))
   {

      if($l['dtcotacao']>$dtult OR $l['dtcotacao']==$dt)
       {
        $obj.="['".$l['dtcotacao']."',".$l['cotacao']."],";
        $dtult = date('Y-m-d', strtotime("+15 days",strtotime($l['data'])));
      }
   }
}
$obj = "[".substr($obj,0,strlen($obj)-1)."]";

echo $obj;



Vejo dois problemas:

1) não está aparecendo o gráfico, talvez porque o número de dados esteja muito grande (o que leva ao segundo problema);

2) o $obj está assim:

[['2020-01-01', '0'],['2019-12-17',29.41],['2019-12-17',29.77],['2019-12-19',30.54],['2019-12-20',30.10],['2019-12-22',30.26],['2019-12-23',30.19],['2019-12-26',30.62],['2019-12-26',30.80],['2019-12-28',30.52],['2019-12-30',30.52],['2020-01-01',30.18],['2020-01-03',30.70],['2020-01-03',30.93],['2020-01-05',30.45],['2020-01-06',30.90],['2020-01-08',30.69],['2020-01-10',30.40],['2020-01-10',30.38],['2020-01-12',30.27],['2020-01-13',30.26],['2020-01-14',29.90],['2020-01-16',29.65],['2020-01-18',29.85],['2020-01-20',29.95],['2020-01-22',29.62],['2020-01-22',29.51],['2020-01-22',29.56],['2020-01-22',29.43],['2020-01-22',29.43],['2020-01-22',29.49],['2020-01-23',29.29],['2020-01-23',29.29],['2020-01-23',28.95],['2020-01-23',29.42],['2020-01-23',29.42],['2020-01-23',29.48],['2020-01-23',29.60],['2020-01-24',29.60],['2020-01-24',29.60],['2020-01-24',29.58],['2020-01-24',29.26],['2020-01-24',29.38],['2020-01-24',29.30],['2020-01-25',29.30],['2020-01-26',29.30],['2020-01-27',28.26],['2020-01-27',28.32],['2020-01-27',28.19],['2020-01-27',28.15],['2020-01-27',28.03],['2020-01-28',28.03],['2020-01-28',28.72],['2020-01-28',28.71],['2020-01-28',28.76],['2020-01-28',28.79],['2020-01-28',28.84],['2020-01-28',29.01],['2020-01-28',28.80],['2020-01-29',28.80],['2020-01-29',28.89],['2020-01-29',28.83],['2020-01-29',28.91],['2020-01-29',28.85],['2020-01-30',28.85],['2020-01-30',28.35],['2020-01-30',28.39],['2020-01-30',28.47],['2020-01-30',28.94],['2020-01-31',28.94],['2020-01-31',28.94],['2020-01-31',28.94],['2020-01-31',28.48],['2020-01-31',28.46],['2020-01-31',28.39],['2020-01-31',28.46],['2020-02-01',28.45],['2020-02-01',28.45],['2020-02-02',28.45],['2020-02-03',28.45],['2020-02-03',28.45],['2020-02-03',28.45],['2020-02-03',28.56],['2020-02-03',28.60],['2020-02-03',28.43],['2020-02-03',28.45],['2020-02-03',28.27],['2020-02-03',28.27],['2020-02-03',28.18],['2020-02-03',28.18],['2020-02-04',28.18],['2020-02-04',28.65],['2020-02-04',28.71],['2020-02-04',28.68],['2020-02-04',29.01],['2020-02-04',28.90],['2020-02-04',28.78],['2020-02-05',28.63],['2020-02-05',28.63],['2020-02-05',29.10],['2020-02-05',28.87],['2020-02-05',28.88],['2020-02-05',28.70],['2020-02-05',28.67],['2020-02-05',28.39],['2020-02-06',28.39],['2020-02-06',28.68],['2020-02-06',29.32],['2020-02-06',29.28],['2020-02-06',28.76],['2020-02-06',28.96],['2020-02-06',29.18],['2020-02-06',29.18],['2020-02-06',29.18],['2020-02-07',29.18],['2020-02-07',28.94],['2020-02-07',29.13],['2020-02-07',29.24],['2020-02-07',29.09],['2020-02-07',28.93],['2020-02-07',28.93],['2020-02-07',28.93],['2020-02-08',28.93],['2020-02-09',28.93],['2020-02-10',28.93],['2020-02-10',28.93],['2020-02-10',28.90],['2020-02-10',28.70],['2020-02-10',28.83],['2020-02-10',29.02],['2020-02-10',29.00],['2020-02-10',29.13],['2020-02-10',29.13],['2020-02-11',29.13],['2020-02-11',29.32],['2020-02-11',29.48],['2020-02-11',29.50],['2020-02-11',29.56],['2020-02-12',29.48],['2020-02-12',29.84],['2020-02-12',29.85],['2020-02-12',30.07],['2020-02-12',30.07],['2020-02-12',30.18],['2020-02-12',30.15],['2020-02-12',30.13],['2020-02-12',30.13],['2020-02-13',30.13],['2020-02-13',30.02],['2020-02-13',29.91],['2020-02-13',29.72],['2020-02-13',29.72],['2020-02-14',29.72],['2020-02-14',29.72],['2020-02-14',29.91],['2020-02-14',29.91],['2020-02-16',29.42],['2020-02-18',29.36],['2020-02-20',30.55],['2020-02-22',29.14],['2020-02-24',29.14],['2020-02-24',29.14],['2020-02-26',29.14],['2020-02-26',26.26],['2020-02-26',26.27],['2020-02-28',25.30],['2020-03-01',25.34],['2020-03-02',26.64],['2020-03-02',26.64],['2020-03-02',26.62],['2020-03-02',26.31],['2020-03-02',26.40],['2020-03-02',26.43],['2020-03-02',26.53],['2020-03-02',26.53],['2020-03-02',26.53],['2020-03-02',26.53],['2020-03-03',26.53],['2020-03-03',26.53],['2020-03-03',26.53],['2020-03-03',26.62],['2020-03-03',26.60],['2020-03-03',27.10],['2020-03-03',26.36],['2020-03-03',26.23],['2020-03-03',25.94],['2020-03-03',26.12],['2020-03-03',26.05],['2020-03-03',26.05],['2020-03-03',26.05],['2020-03-04',26.05],['2020-03-04',26.05],['2020-03-04',26.68],['2020-03-04',26.66],['2020-03-04',26.55],['2020-03-04',26.33],['2020-03-04',26.59],['2020-03-04',26.66],['2020-03-04',26.66],['2020-03-04',26.73],['2020-03-04',26.79],['2020-03-04',26.86],['2020-03-04',26.89],['2020-03-04',26.89],['2020-03-04',26.89],['2020-03-04',26.89],['2020-03-04',26.89],['2020-03-05',26.89],['2020-03-05',26.89],['2020-03-05',26.89],['2020-03-05',26.55],['2020-03-05',26.51],['2020-03-05',26.40],['2020-03-05',26.16],['2020-03-05',26.08],['2020-03-05',25.94],['2020-03-05',25.27],['2020-03-05',25.29],['2020-03-07',22.83],['2020-03-09',22.83],['2020-03-09',18.01],['2020-03-09',15.92],['2020-03-10',17.63],['2020-03-11',16.76],['2020-03-13',13.60],['2020-03-15',15.40],['2020-03-17',13.09],['2020-03-19',11.29],['2020-03-19',11.42],['2020-03-19',12.89],['2020-03-20',13.27],['2020-03-23',11.57],['2020-03-25',13.58],['2020-03-26',14.06],['2020-03-31',13.80],['2020-03-31',13.90],['2020-04-01',14.25],['2020-04-02',15.17],['2020-04-02',15.68],['2020-04-04',15.34],['2020-04-06',15.72],['2020-04-08',16.40],['2020-04-09',16.76],['2020-04-11',16.82],['2020-04-13',16.73],['2020-04-14',16.72]]


Veja que ele não está pulando corretamente os 15 dias. Gostaria de entender o que estou fazendo errado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor ANDRIL » 17 Abr 2020 09:36

Não entendi o que voce esta tentando montar, veja:

if($l['dtcotacao']>$dtult OR $l['dtcotacao']==$dt)
{
$obj.="['".$l['dtcotacao']."',".$l['cotacao']."],";
$dtult = date('Y-m-d', strtotime("+15 days",strtotime($l['data']))); #--de onde veio este campo???
}


mude para
$dtult = date('Y-m-d', strtotime("+15 days",strtotime($dtult)));

e veja se dá o resultado esperado.

A grande quantidade de dados passada ao gráfico pode ser sim um dos motivos pelo qual não é exibido. Consulte sobre os limites do gráfico no manual.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor cjp » 17 Abr 2020 11:45

A ideia é pegar dados de 15 em 15 dias, para fazer um gráfico enxuto.
Vi que realmente estava errada a linha
$dtult = date('Y-m-d', strtotime("+15 days",strtotime($l['data'])));

porque é pra ser dtcotacao no lugar de data.
Fiz assim:
$sql = "SELECT dtcotacao,cotacao FROM acoes where codigo='".$cd."' and compvenda=0";
$rs=mysql_query($sql);


$dthoje = date('Y')."-".date('m')."-".date('d');
$dt = date('Y-m-d', strtotime("-120 days",strtotime($dthoje)));
$dtult = $dt;

       echo "<br>";
       echo "<br>";
$rs=mysql_query($sql);

$obj = "['2020-01-01', '0'],";
if (mysql_num_rows($rs)==0)
{
   $obj.="['Nenhuma data', 0],";
}
else
{
   while ($l = mysql_fetch_array($rs))
   {

      if($l['dtcotacao']>$dtult OR $l['dtcotacao']==$dt)
       {
        $obj.="['".$l['dtcotacao']."',".$l['cotacao']."],";
        $dtult = date('Y-m-d', strtotime("+15 days",strtotime($l['dtcotacao'])));
      }
   }
}
$obj = "[".substr($obj,0,strlen($obj)-1)."]";

echo $obj;



Os dados agora aparecem corretos em $obj:

[['2020-01-01', '0'],['2019-12-19',30.54],['2020-01-05',30.45],['2020-01-22',29.62],['2020-02-07',29.18],['2020-02-24',29.14],['2020-03-11',16.76],['2020-03-31',13.80],['2020-04-16',15.68]]


Mas estranhamente, ainda assim o gráfico não aparece.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor ANDRIL » 17 Abr 2020 16:12

Se não aparece deve ser algo na parte do código do javascritp. Testei este $obj aqui e montou o gráfico.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor cjp » 17 Abr 2020 17:20

Mas eu não mexi em nada no código java (nem saberia mexer). Veja:

  <html>
  <head>
    <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(<? echo( $obj ) ?>);
        var options = {
          title: 'Cotações de '<? echo( $cd ) ?>,
          curveType: 'function',
        };

        var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="curve_chart" style="width: 900px; height: 500px"></div>
  </body>
</html>



Esse mesmo código funciona nas outras páginas que eu fiz.

Aí funcionou exatamente assim como está no meu?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor ANDRIL » 17 Abr 2020 18:05

Isso pode ser o problema, esta colocando uma string fora das aspas simples.
cjp escreveu: title: 'Cotações de '<? echo( $cd ) ?>,


tente
title: 'Cotações de <? echo( $cd ) ?> ',
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

PHP: exibir gráfico com dados obtidos de uma tabela MySQL

Mensagempor cjp » 18 Abr 2020 01:07

De fato, assim funcionou.
Muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Anterior



Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 17 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro