PHP: exibir gráfico com dados obtidos de uma tabela MySQL
Moderador: Moderadores
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
Verdade, que vacilo! Muito obrigado.
Inacio de Carvalho Neto
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
Desculpe, mas vou precisar incomodar novamente.
Neste outro código:
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:
Neste outro código:
Código: Selecionar todos
$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;
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:
Veja que ele não está pulando corretamente os 15 dias. Gostaria de entender o que estou fazendo errado.[['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]]
Inacio de Carvalho Neto
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
Não entendi o que voce esta tentando montar, veja:
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.
mude paraif($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???
}
e veja se dá o resultado esperado.$dtult = date('Y-m-d', strtotime("+15 days",strtotime($dtult)));
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
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
A ideia é pegar dados de 15 em 15 dias, para fazer um gráfico enxuto.
Vi que realmente estava errada a linha
Fiz assim:
Os dados agora aparecem corretos em $obj:
Vi que realmente estava errada a linha
porque é pra ser dtcotacao no lugar de data.$dtult = date('Y-m-d', strtotime("+15 days",strtotime($l['data'])));
Fiz assim:
Código: Selecionar todos
$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;
Mas estranhamente, ainda assim o gráfico não aparece.[['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]]
Inacio de Carvalho Neto
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
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
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
Mas eu não mexi em nada no código java (nem saberia mexer). Veja:
Esse mesmo código funciona nas outras páginas que eu fiz.
Aí funcionou exatamente assim como está no meu?
Código: Selecionar todos
<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>
Aí funcionou exatamente assim como está no meu?
Inacio de Carvalho Neto
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
Isso pode ser o problema, esta colocando uma string fora das aspas simples.
tentecjp escreveu: title: 'Cotações de '<? echo( $cd ) ?>,
title: 'Cotações de <? echo( $cd ) ?> ',
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
PHP: exibir gráfico com dados obtidos de uma tabela MySQL
De fato, assim funcionou.
Muito obrigado.
Muito obrigado.
Inacio de Carvalho Neto

