Flot Chart из PHP - PullRequest
       10

Flot Chart из PHP

0 голосов
/ 20 сентября 2018

Я пытаюсь получить диаграмму с плавающей точкой со значениями из базы данных.Насколько я понимаю, на графике только 1 точка данных.Как я могу получить его, чтобы построить остальные данные из массива?Я пытаюсь построить общее количество агентов, которые были введены на каждую дату. var data2 будет для потерянных агентов

    <?php

  foreach($mysqli->query('SELECT COUNT(*), agent_date_entered, agent_id 
  FROM agents GROUP BY agent_date_entered 
  ORDER BY agent_date_entered') as $row) {

    $count[] = $row['COUNT(*)'];
    $agent[] = $row['agent_id'];
    $date[] = $row['agent_date_entered'];

  }

?>

  <script>

  var data,data1,options,chart;
  var data1 = [ <?php echo json_encode($count); ?>, <?php echo json_encode($date); ?> ];
  var data2 = [  ];

  data = [{ data:data1, label:"Agents Gained", lines:{show:true}, points:{show:true}}
        ,{ data:data2, label:"Agents Lost", lines:{show:true}, points:{show:true}}];
  options = {legend:{position:"nw"}};
  $(document).ready(function(){
    chart = $.plot($("#placeholder"),data,options);
  });

  </script>

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

С помощью ссылок в одном из комментариев на Формат данных и Данные временных рядов я нашел ответ, который искал.

На случай, если у кого-то еще возникнет эта проблема, вот как я заставил ее работать.Сначала я изменил дату в выражении sql следующим образом: (UNIX_TIMESTAMP(agent_date_depart)*1000) AS date.Затем я закодировал его, установив переменную $depart = json_encode(floatval($row['date']));.Чтобы сделать так, чтобы это не было большим числом на оси x и отображалось как дата, я установил ось x следующим образом: xaxis: {mode: "time", timeformat: "%Y/%m/%d"},.Вы даже можете установить формат даты во всплывающей подсказке, используя tooltipOpts следующим образом:

    tooltipOpts: {
        content: function (label, x, y) {
            var date = new Date(+x);
            var tooltip = '<h4>' + label + '</h4><ul>';
            tooltip += '<li>Date ' + date.toLocaleDateString() + '</li>';
            tooltip += '<li>Total Count: ' + y + '</li></ul>';
            return tooltip;
        },

Самый простой способ, который я нашел, чтобы получить данные для отображения внутри диаграммы, я поместил выражение sql внутри переменной data, какэто:

        var d2 = [

<?php

         $sql = "SELECT COUNT(agent_id), (UNIX_TIMESTAMP(agent_date_depart)*1000) AS date FROM agents
          WHERE agent_date_depart BETWEEN '$bdatecy' AND '$edatecy'
          GROUP BY agent_date_depart ";
          $result = mysqli_query($mysqli, $sql);
           while ($row = mysqli_fetch_assoc($result)) {

    $agent = $row['COUNT(agent_id)'];
    $depart = json_encode(floatval($row['date']));

    echo "[".$depart.", ".$agent."],";
  }

?>

  ];

Надеюсь, это поможет, и я хотел бы еще раз поблагодарить вас за эти ссылки.

0 голосов
/ 24 сентября 2018

Ваш формат данных не тот, который требуется Flot.Вам нужно что-то вроде

[[1, 1533081600000], [1, 1535932800000]]

(или [[1533081600000, 1], [1535932800000, 1]], если вы хотите, чтобы даты на оси х).
Числа, подобные 1535932800000, являются временными метками JavaScript.Вам также понадобится опция mode: 'time' на оси со значениями даты / времени.

Для получения дополнительной информации см. Документацию под Формат данных и Данные временных рядов .

...