Вычисление статуса клиента?

Рейтинг: 1Ответов: 1Опубликовано: 18.02.2023

Подскажите, пожалуйста, как реализовать систему подсчета последних заказов клиентов? Получаю последние оплаченные заказы клиента (только дату) за последний год

$row= $mysqli->query("SELECT `date` FROM `orders` WHERE `date` >= '2022-02-12 00:00:00' AND `email` = '$email' AND `paid` = 1 ORDER BY `date` DESC");

Еще вопрос как корректно получать данные за последний год?

Полученные данные нужно перебрать (возможно через switch) Всего 5 статусов: Новый, Бронза, Серебро, Золото, Платина

  1. Платина — количество найденных заявок за последние 30 дней >= 50 (если да, то останавливаемся, переменной $status присваиваем "platina")
  2. Золото — количество найденных заявок за последние 30 дней >= 30 (тоже самое, $status="gold")
  3. Серебро — количество найденных заявок за последние 90 дней >= 30 ($status="silver")
  4. Бронза — количество найденных заявок за последний год >= 2 ($status="bronze")
  5. Новый — количество найденных заявок за последний год = 1 ($status="new")

Надеюсь, я понятно выразился что мне требуется:) помогите, пожалуйста

Ответы

▲ 0

Пожалуйста, опишите ваш вопрос более детально. Если вам нужно искать данные с датами, которые входят в диапазон от (сегодня минус год) до сегодня, просто сформируйте такую же дату, что и сегодняшнюю, только на один год меньше и по ней ищите:

$timestamp = time() - 86400 * 365; // 86400 - секунд в сутках
$date = date("Y-m-d", $timestamp) . " 00:00:00"; // должно получиться что-то типа 2022-02-18 00:00:00

$row = $mysqli->query("SELECT `date` FROM `orders` WHERE `date` >= '$date' AND `email` = '$email' AND `paid` = 1 ORDER BY `date` DESC");

Про второй вопрос непонятно. Если вам нужно перебрать полученные записи, то делается это вот так:


$query = $mysqli->query("SELECT `date` FROM `orders` WHERE `date` >= '$date' AND `email` = '$email' AND `paid` = 1 ORDER BY `date` DESC");
while ($row = $query->fetch_array()) {
    // здесь $row - одна запись из результата запроса
}