Flot Chart из PHP

0

Я пытаюсь иметь карту флота со значениями из базы данных. Как у меня есть это сейчас, на диаграмме показаны только 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>
  • 0
    Возвращает ли запрос правильные результаты при выполнении в БД?
  • 0
    Да. print_r ($count); также отображает правильный результат
Показать ещё 3 комментария
Теги:
flot

2 ответа

0
Лучший ответ

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

На всякий случай, если у кого-то еще есть эта проблема, вот как я получил ее на работу. Во-первых, я изменил дату в инструкции 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 внутри переменной данных следующим образом:

        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

Формат данных не соответствует требованиям Флота. Вам нужно что-то вроде

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

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

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

  • 0
    Большое спасибо за эти ссылки, которые были очень полезны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню