Получить статистику и показать ее на графике - PHP / HighCharts - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть таблица под названием «дорожки», она выглядит так:

  1. ID
  2. имя
  3. 1008 * URL *
  4. 1010 * хитов *

У меня круговые диаграммы, из старших, код выглядит так:

 var chart;
$(document).ready(function() {
   chart = new Highcharts.Chart({
      chart: {
         renderTo: 'chart',
         plotBackgroundColor: null,
         plotBorderWidth: null,
         plotShadow: false
      },
      title: {
         text: 'Where users came from, total'
      },
      tooltip: {
         formatter: function() {
            return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
         }
      },
      plotOptions: {
         pie: {
            allowPointSelect: true,
            cursor: 'pointer',
            dataLabels: {
               enabled: false
            },
            showInLegend: true
         }
      },
      credits: {
        enabled: false
      },
       series: [{
         type: 'pie',
         name: 'Browser share',
         data: [
            ['Firefox.com',   45.0],
            ['Default.com',       26.8],
            ['MSN',       12.8],
            ['Google.com',    8.5],
            ['Yahoo.com',     6.2],
            ['Others',   0.7]
         ]
      }]
   });
});

У меня вопрос, как я могу получить данные из таблицы «дорожки» (попадания) и (имя) и вывести их на круговую диаграмму, как:

'имя', 'хиты'

И, наконец, преобразовать число попаданий в%.

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011
 series: [{
         type: 'pie',
         name: 'Browser share',
         data: [
         <?php

         $sql = 'select sum(hits) from tracks';
         $result = mysql_query($sql);
         $row = mysql_fetch_row($result);
         $totalHits = $row[0];

         $sql = 'select name, hits from tracks order by hits desc';
         $result = mysql_query($sql);

         $i = 0;
         $totalOther = 0;
         $maxSlices = 5;
         $minPercent = 10;

         while ($row = mysql_fetch_row($result))
         {
            $percent = row[1] / $totalHits * 100;

            if (++$i <= $maxSlices && $percent >= $minPercent)
            {
                echo json_encode($row);
            }
            else
            {
                $totalOther += $row[1];
            }
         }
         if ( $totalOther > 0 ) echo json_encode(array('Other', $totalOther));
         ?>
         ]
      }]

если вы хотите обновить его через ajax ...

...
series: [{
         type: 'pie',
         name: 'Browser share',
         data: getData(function(result) {return result;}),
...

и

function getData(setDataCallback)
{
    $.getJSON('file.php', args, function(result)  {  // use of jquery for clarity.
        setDataCallback(result);
    });
}

в php, вы должны создать новый файл ('file.php') с кодом, показанным в первом блоке кода;

0 голосов
/ 19 сентября 2011

Самый простой способ - запросить данные из mySql, а затем отсортировать их так же, как

[
        ['Firefox.com',   45.0],
        ['Default.com',       26.8],
        ['MSN',       12.8],
        ['Google.com',    8.5],
        ['Yahoo.com',     6.2],
        ['Others',   0.7]
     ]

Требуется, если вы хотите, чтобы график отображался только при загрузке страницы.Вы также можете использовать JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...