2017-12-19 36 views
1

C3.jsを使用して棒グラフを作成しようとしていますが、データはPHP経由でmySQL databaseにプルされ、JS as JSONに返されました。私はできませんよ、C3、D3ネストされたJSONデータのグラフ

{ 
    "BRACELET": { 
     "category": "BRACELET", 
     "total_purchased": 26 
    }, 
    "SALESMAT": { 
     "category": "SALESMAT", 
     "total_purchased": 4 
    }, 
    "TOPPING": { 
     "category": "TOPPING", 
     "total_purchased": 48 
    } 
} 

しかし: PHPコードは、ソートされた列を検索し、{category:name, total_purchased:value}

$category_data_sql = "SELECT `category`, `total_purchased` FROM `item` ORDER BY `category`"; 
$category_data_result = $mysqli->query($category_data_sql); 

$data = array(); 
$key = 0; 
foreach ($category_data_result as $item) { 
    $key = $item['category']; 
    if (!array_key_exists($key, $data)) { 
     $data[$key] = array(    
      'category' => $item['category'], 
      'total_purchased' => $item['total_purchased'], 
     ); 

    } else { 
     $data[$key]['total_purchased'] = $data[$key]['total_purchased'] + $item['total_purchased']; 

    } 

    $key++; 
} 
print_r(json_encode($data)); 

結果のJSON出力の配列で終わるために一緒に、関連する列のすべてを追加していますこのデータをグラフに表示します。 以下のコードは正常に動作し、すべてが期待通りに表示されます。

var json_data = (<?php echo json_encode($data); ?>); 
    var chart = c3.generate({ 
     bindto: '#chart', 
     data: { 
      x: 'category',       
      json: [ 
        { 
         "category": "BRACELET", 
         "total_purchased": 26 
        }, 
        { 
         "category": "SALESMAT", 
         "total_purchased": 4 
        }, 
        { 
         "category": "TOPPING", 
         "total_purchased": 48 
        }, 
        { 
         "category": "NECKLACE", 
         "total_purchased": 29 
        } 
      ], 
      type: 'bar', 
      keys: { 
       x: 'category', 
       value: [ "total_purchased" ] 
      } 
     }, 
     axis: { 
      x: { 
       type: "category" 
      } 
     }, 

     bar: { 
      space: 0.25 
     } 
    }); 

しかし、私は変数json_dataを使用するか、私は手動で結果のJSONデータにコピーした場合、私は、コンソールでエラーなしで空白のテーブルを得れば。 ご協力いただければ幸いです。 事前に感謝、コリン。

答えて

1

あなたは数値型にあなたの配列を変換するために、array_values()を使用することができます。

$json_data = json_encode(array_values($data)); 
関連する問題