while循环使用谷歌图表

时间:2018-05-27 17:21:08

标签: javascript php html mysql

所以我有这个问题,我从数据库中提取数字,用于页面上的点击。当数据库中只有一个国家时,饼图工作得很好,现在只有少数几个国家,但它从前5名抓起来。它工作正常,但我认为我的while循环搞砸了,我将如何重新格式化以便它起作用? `

数据库查询:

$csel = $odb->query("SELECT country, COUNT(*) AS cnt FROM bots GROUP BY country ORDER BY cnt DESC LIMIT 5");

显示:

     <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([
          ['Country', 'Total Bots'],
          <?php
  while ($c = $csel->fetch())
                                    {
                    $top2 = geoip_country_name_by_id($gi, $c[0]);
                    $top = number_format($c[1]);
                                        echo ("['$top2', '$top']");

  }

我认为这是因为我在回声结束时没有逗号,所以我尝试了,饼图是灰色的并且说“其他”

我想我需要以某种方式创建一个字符串来执行echo所说的内容,并在最后一段数据之前添加逗号。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

<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([
        ['time', 'Price'],
          <?php  while ($r = mysqli_fetch_array($res)) { 
                echo "[' ".$r["timestamp"]." ', ".$r["totalprice"]." ],";
          } ?>  
    ]);

    var options = {
      title: 'My Daily Activities'
    };

    var chart = new google.visualization.PieChart(document.getElementById('piechart'));

    chart.draw(data, options);
  }
</script>