gpt4 book ai didi

php - 选择当前、上个月、上个月的数据并在图表上回显

转载 作者:行者123 更新时间:2023-11-29 13:15:25 26 4
gpt4 key购买 nike

您好,我需要显示 3 个月(单独)借记的总金额,并将其显示在柱形图上。

(我已包含 session_start 和 $user_id = $_SESSION['user_id'])

而且我认为我的 $query2 和 $query3 是错误的,我只想选择上个月的总和,而不是组合上个月和当月。

因此,$query1 = 当月的 SUM,$query2 = last_month 的 SUM,$query3 = 过去 2 个月的 SUM。

$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']);

这是我的谷歌图表页面,

<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>

当我运行这段代码时,图表没有出来。请帮忙! :(

最佳答案

首先,请帮您自己和您的用户一个忙,并在查询中使用参数绑定(bind):

$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); ?>);

关于php - 选择当前、上个月、上个月的数据并在图表上回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21522423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com