![](/img/trans.png)
[英]to select all records from the last month but restricted records in the current month
[英]Select data from current, last, previous month and echo on chart
嗨,我需要顯示3個月(分別)借記的總金額,並將其顯示在“欄目圖表”上。
(我包括了session_start和$ user_id = $ _SESSION ['user_id'])
而且我認為我的$ query2和$ query3是錯誤的,我只想從上個月選擇總和,而不是合並上個月和當前月份。
因此, $query1
=當前月份的總和, $query3
$query2
= last_month的總和, $query3
=最近2個月的$query3
。
$query1 = "SELECT SUM(debit) AS current_debit FROM account WHERE user_id='$user_id' AND MONTH(CURDATE())= MONTH(date)";
$result1 = mysqli_query($link, $query1) or die(mysqli_error($link));
$row = mysqli_fetch_array($result1);
$currentMonth_debit = $row ['current_debit'];
$query2 = "SELECT SUM(debit) AS last_debit FROM account WHERE user_id='$user_id' AND date BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURRENT_DATE";
$result2 = mysqli_query($link, $query2) or die(mysqli_error($link));
$row2 = mysqli_fetch_array($result2);
$lastMonth_debit = $row2 ['last_debit'];
$query3 = "SELECT SUM(debit) AS prev_debit FROM account WHERE user_id='$user_id' AND date BETWEEN CURRENT_DATE - INTERVAL 2 MONTH AND CURRENT_DATE";
$result3 = mysqli_query($link, $query3) or die(mysqli_error($link));
$row3 = mysqli_fetch_array($result3);
$prevMonth_debit = $row3 ['prev_debit'];
之后,如何在Google圖表上顯示$ currentMonth_debit,$ lastMonth_debit,$ prevMonth_debit? 我應該創建一個數組嗎..
$pieData[] = array($row['$currentMonth_debit'], $row['lastMonth_debit'], $row['$prevMonth_debit']);
這是我的Google圖表頁面,
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Month', 'Money Out'],
[<?php echo $pieData ?>],
]);
var options = {
title: 'Total Money Out',
hAxis: {title: 'Month', titleTextStyle: {color: 'red'}}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
</body>
當我運行此代碼時,圖表不會出來。 請幫忙! :(
首先,請為您自己和您的用戶提供幫助,並在查詢中使用參數綁定:
$query1 = "SELECT SUM(debit) AS current_debit FROM account WHERE user_id=? AND MONTH(CURDATE())= MONTH(date)";
$stmt = mysqli_prepare($link, $query1) or die(mysqli_error($link));
mysqli_stmt_bind_param($stmt, 's', $user_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $currentDebit);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);
$query2 = "SELECT SUM(debit) AS last_debit FROM account WHERE user_id=? AND date BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURRENT_DATE";
$stmt = mysqli_prepare($link, $query1) or die(mysqli_error($link));
mysqli_stmt_bind_param($stmt, 's', $user_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $lastDebit);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);
$query3 = "SELECT SUM(debit) AS prev_debit FROM account WHERE user_id=? AND date BETWEEN CURRENT_DATE - INTERVAL 2 MONTH AND CURRENT_DATE";
$stmt = mysqli_prepare($link, $query1) or die(mysqli_error($link));
mysqli_stmt_bind_param($stmt, 's', $user_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $prevDebit);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);
為了正確查詢,您必須准確確定“當前月”,“上個月”和“最近2個月”的含義。
以正確的格式放置數據很容易:
$pieData = array(
array('Month', 'Money Out'),
array('Current Month', $currentMonth),
array('Last Month', $lastMonth),
array('Previous 2 months', $prevMonth)
);
並在您的JavaScript中:
var data = google.visualization.arrayToDataTable(<?php echo json_encode($pieData, JSON_NUMERIC_CHECK); ?>);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.