2017-09-06 61 views
1

これまでAjaxを使用してGoogleのグラフ(円グラフ)を描画していましたが、グラフは2つの列しか表示されないため、表示できます。円チャートのjson出力を再フォーマットする方法は?

今、私はこのような縦棒グラフを描きたいと思います。

column chart

これは私のSQLクエリです:

$sql = "Select count(application_id) as count, application_status, category_group from mdl_local_jobs_application 
inner join mdl_local_jobs_job on mdl_local_jobs_application.application_jobid = mdl_local_jobs_job.job_id 
left join mdl_local_jobs_category on mdl_local_jobs_job.job_categoryid = mdl_local_jobs_category.category_id 
left join mdl_cohort_members on mdl_local_jobs_application.application_applicantid = mdl_cohort_members.userid 
left join mdl_local_cohortrole on mdl_cohort_members.cohortid = mdl_local_cohortrole.cohortid 
left join mdl_role on mdl_local_cohortrole.roleid = mdl_role.id where shortname = 'graduates' 
group by application_status, category_group"; 

クエリは、この使用してJSON出力にコード化されています

$result_rows = mysql_num_rows($query); 
$row_num = 0; 

//loop fetching the query into json format 
while ($result = mysql_fetch_array($query)) 
{ 
$row_num++; 
if ($row_num == $result_rows){ 
    echo "{\"c\":[{\"v\":\"" . $result['application_status'] . "\",\"f\":null},{\"v\":\"" . $result['category_group'] . "\",\"f\":null},{\"v\":" . $result['count'] . ",\"f\":null}]}"; 
} else { 
    echo "{\"c\":[{\"v\":\"" . $result['application_status'] . "\",\"f\":null},{\"v\":\"" . $result['category_group'] . "\",\"f\":null},{\"v\":" . $result['count'] . ",\"f\":null}]}"; 
} 
} 


echo " ] }"; 

これが出力されます:

{ "cols": [ {"id":"","label":"STATUS","pattern":"","type":"string"}, {"id":"","label":"CATEOGRY","pattern":"","type":"string"}, {"id":"","label":"TOTAL","pattern":"","type":"number"} ], "rows": [ {"c":[{"v":"0","f":null},{"v":"Accounting/Finance","f":null},{"v":2,"f":null}]}{"c":[{"v":"0","f":null},{"v":"Engineering","f":null},{"v":1,"f":null}]} ] } 

ただし、この出力はGoogleのグラフで読み取ることはできません。これがエラーです。

Error: Invalid JSON string: { "cols": [ {"id":"","label":"STATUS","pattern":"","type":"string"}, {"id":"","label":"CATEOGRY","pattern":"","type":"string"}, {"id":"","label":"TOTAL","pattern":"","type":"number"} ], "rows": [ {"c":[{"v":"0","f":null},{"v":"Accounting/Finance","f":null},{"v":2,"f":null}]}{"c":[{"v":"0","f":null},{"v":"Engineering","f":null},{"v":1,"f":null}]} ] } 

私の質問:私は、カラムチャートの出力を得るために、コードを再フォーマットする方法を?

答えて

0

if ($row_num == $result_rows){ 
    echo "{\"c\":[{\"v\":\"" . $result['application_status'] . "\",\"f\":null},{\"v\":\"" . $result['category_group'] . "\",\"f\":null},{\"v\":" . $result['count'] . ",\"f\":null}]},"; // <-- add comma 
} else { 
    echo "{\"c\":[{\"v\":\"" . $result['application_status'] . "\",\"f\":null},{\"v\":\"" . $result['category_group'] . "\",\"f\":null},{\"v\":" . $result['count'] . ",\"f\":null}]},"; // <-- add comma 
} 
+0

おかげで@WHiteHat ...各行の最後にカンマを追加する必要があります。あなたの答えは私の問題の半分を解決しました。 json文字列が正しい形式であるため、エラーはなくなりました。私はなぜコラムではなく、円グラフの形式の違いが円グラフのコンマを持つ必要はないか分からない。ラベルの種類を変更したにもかかわらず、グラフは正しく表示されません。私は別の質問をここに入れました。https://stackoverflow.com/questions/46083389/how-to-make-sql-query-to-get-the-sum-of-specific-columnあなたの知識を共有してください。問題を解決するのに貢献してくれてありがとう。私はすでにあなたの答えを受け入れる。 – joun

関連する問題