私は、MySQL、PHP、Fusion Chartsを使用して折れ線グラフを作成し、2016年に毎月請求された金額を追跡します。 InvoiceAmount(Decimal型)とInvoiceDate(DateTime型)です。JSONの値を月単位で合計してFusion Chartsグラフ
私の目標は、グラフのX軸をInvoiceDateからの月(Jan、Feb、Marなど)の日付とし、Y軸をInvoiceAmountからの金額とすることです。私は、それが融合チャートで読めるようにするためにJSON形式に私のMySQLのデータを変換することによって始まった:あなたのよう
[
{
"label": "January",
"value": "11361.00"
},
{
"label": "December",
"value": "1164.40"
},
{
"label": "February",
"value": "166.80"
},
{
"label": "July",
"value": "5088.00"
},
{
"label": "January",
"value": "214.50"
},
{
"label": "June",
"value": "620.40"
},
{
"label": "July",
"value": "5250.00"
},
{
"label": "March",
"value": "3425.00"
},
{
"label": "January",
"value": "3790.00"
},
{
"label": "February",
"value": "1909.80"
},
{
"label": "January",
"value": "1780.00"
},
{
"label": "January",
"value": "3060.00"
},
{
"label": "January",
"value": "2680.00"
},
{
"label": "February",
"value": "604.80"
}
]
など
:
//the SQL query to be executed
$query = "SELECT DATE_FORMAT(InvoiceDate, '%M') AS InvoiceMonth, InvoiceAmount FROM Estimates WHERE InvoiceDate IS NOT NULL AND YEAR(InvoiceDate) = 2016 AND InvoiceAmount IS NOT NULL AND InvoiceAmount > 0";
//storing the result of the executed query
$result = $conn->query($query);
//initialize the array to store the processed data
$jsonArray = array();
//check if there is any data returned by the SQL Query
if ($result->num_rows > 0) {
//Converting the results into an associative array
while($row = $result->fetch_assoc()) {
$jsonArrayItem = array();
$jsonArrayItem['label'] = $row['InvoiceMonth'];
$jsonArrayItem['value'] = $row['InvoiceAmount'];
//append the above created object into the main array.
array_push($jsonArray, $jsonArrayItem);
}
}
//Closing the connection to DB
$conn->close();
//set the response content type as JSON
header('Content-type: application/json');
//output the return value of json encode using the echo function.
echo json_encode($jsonArray, JSON_PRETTY_PRINT);
これは、このようにJSONを出力します同じ月が付いているいくつかの値があります。現在、1月、2月、3月などの全体的な月次値を作成するために、特定の月の値すべてを一緒に追加する必要がある場合、折れ線グラフはこれらのラベル/値の各ペアを1つの別個のインスタンスとして扱います。 。
は値に取り付けられた月をチェックして、一緒に同じ月からすべての値を追加します、私はPHPやMySQLで使用できる機能はありますか?この問題に取り組む最善の方法を教えてください。ご協力ありがとうございました。
これは完璧に機能しました。ありがとうございました!クエリのこの部分は:YEAR(InvoiceDate)= 2016'は2016年の値を取得するだけでは機能しませんか? @trincot – Liz
はい、そうですが、毎年それを変更しようとしていますか?また、2017年の早い時期に2017年にコードを変更した場合は、2017月のみを取得することができます。これは1月だけかもしれませんか?最新の12か月を表示することは興味深い選択肢でしょうか? – trincot
これは非常に真実であり、長期的には持続可能ではありません。あなたは別の勧告をしていますか? – Liz