簡體   English   中英

從當前,上個月,上個月選擇數據並在圖表上回顯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM