Существует таблица "history", в ней есть столбцы "time" (в нем храниться время добавления записи в базу в формате 2021-11-30 00:00:00) и Profit. Я написал вот такой код:
header('Content-Type: application/json');
date_default_timezone_set('Europe/Moscow');
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
$query = "SELECT `time`, `Profit` FROM `history` WHERE `type` = 1";
$result = $mysqli->query($query);
while ($record = $result->fetch_row()){
$date0 = date('d.m.Y', time());
$date1 = new DateTime('-1 days');
$date2 = new DateTime('-2 days');
$date3 = new DateTime('-3 days');
$date4 = new DateTime('-4 days');
$date5 = new DateTime('-5 days');
$date6 = new DateTime('-6 days');
if ($date0 == date('d.m.Y', strtotime($record[0]))){
$day = $date0;
$profit = $profit + $record[1];
continue;
} elseif ($date1->format('d.m.Y') == date('d.m.Y', strtotime($record[0]))) {
$day1 = $date1->format('d.m.Y');
$profit1 = $profit1 + $record[1];
continue;
} elseif ($date2->format('d.m.Y') == date('d.m.Y', strtotime($record[0]))) {
$day2 = $date2->format('d.m.Y');
$profit2 = $profit2 + $record[1];
continue;
} elseif ($date3->format('d.m.Y') == date('d.m.Y', strtotime($record[0]))) {
$day3 = $date3->format('d.m.Y');
$profit3 = $profit3 + $record[1];
continue;
} elseif ($date4->format('d.m.Y') == date('d.m.Y', strtotime($record[0]))) {
$day4 = $date4->format('d.m.Y');
$profit4 = $profit4 + $record[1];
continue;
} elseif ($date5->format('d.m.Y') == date('d.m.Y', strtotime($record[0]))) {
$day5 = $date5->format('d.m.Y');
$profit5 = $profit5 + $record[1];
continue;
} elseif ($date6->format('d.m.Y') == date('d.m.Y', strtotime($record[0]))) {
$day6 = $date6->format('d.m.Y');
$profit6 = $profit6 + $record[1];
continue;
}
}
$all[] = array('time' => isset($day) ? $day : '0', 'Profit' => isset($profit) ? $profit : '0');
$all[] = array('time' => isset($day1) ? $day1 : '0', 'Profit' => isset($profit1) ? $profit1 : '0');
$all[] = array('time' => isset($day2) ? $day2 : '0', 'Profit' => isset($profit2) ? $profit2 : '0');
$all[] = array('time' => isset($day3) ? $day3 : '0', 'Profit' => isset($profit3) ? $profit3 : '0');
$all[] = array('time' => isset($day4) ? $day4 : '0', 'Profit' => isset($profit4) ? $profit4 : '0');
$all[] = array('time' => isset($day5) ? $day5 : '0', 'Profit' => isset($profit5) ? $profit5 : '0');
$all[] = array('time' => isset($day6) ? $day6 : '0', 'Profit' => isset($profit6) ? $profit6 : '0');
$mysqli->close();
echo json_encode($all);
То есть, получаем профиты за 7 дней.
В результате получаем:
[{"time":"30.11.2021","Profit":10},{"time":"29.11.2021","Profit":26},{"time":"28.11.2021","Profit":12},{"time":"27.11.2021","Profit":10},{"time":"26.11.2021","Profit":13},{"time":"25.11.2021","Profit":13},{"time":"24.11.2021","Profit":13}]
Работает все именно так как мне нужно. Потом из этих данных я строю столбчатую диаграмму. Но мне кажется, что сам скрипт получения данных из базы написан немного не правильно (хоть все и работает). Повелитель опытом, как бы Вы сделали?