Flot с json и php


Я создал массив json с помощью php. Это работает, но дает только результат "данных" по первой метке, а не по остальным. Кроме того, он каждый раз начинается с номера. Как я могу это исправить?

    $sql = $site->mysqli->query("SELECT id, title, event_start_date FROM events");
    while($row = $sql->fetch_assoc())   {

        $dataset[] = array('label' => $row['title']);

        $sql2 = $site->mysqli->query("SELECT timestamp, event_id, COUNT(timestamp) AS row_count FROM order_products WHERE event_id = '".$row['id']."' GROUP BY DATE(FROM_UNIXTIME(timestamp))");
        $count2 = $sql2->num_rows;
        while($row2 = $sql2->fetch_assoc())   {

            $dataset['data'][] = array(intval($row2['timestamp'] * 1000), (int)$row2['row_count']);

        }

    }
    $results[]=$dataset;

die(Json_encode($results));

Результат:

    [{"0":{"label":"Label 1"},"data":[[1392894348000,10],                   
        [1392998502000,3],[1393066962000,5],[1393262541000,3],          
        [1393577348000,5],[1393704543000,2],[1393780878000,1],
        [1393882353000,3],"1":{"label":"Label 2"},"2":{"label":"Label 3"}}]
Author: tom, 2015-04-20

1 answers

Вы должны очистить свой $dataset для каждого события:

$sql = $site->mysqli->query("SELECT id, title, event_start_date FROM events");
while($row = $sql->fetch_assoc())   {

    $dataset = array('label' => $row['title'], 'data' => array());

    $sql2 = $site->mysqli->query("SELECT timestamp, event_id, COUNT(timestamp) AS row_count FROM order_products WHERE event_id = '".$row['id']."' GROUP BY DATE(FROM_UNIXTIME(timestamp))");
    $count2 = $sql2->num_rows;
    while($row2 = $sql2->fetch_assoc())   {

        $dataset['data'][] = array(intval($row2['timestamp'] * 1000), (int)$row2['row_count']);

    }
    $results[]=$dataset;
}

die(json_encode($results));
 0
Author: 2kai, 2015-04-20 14:32:50