yunusreimbaew
@yunusreimbaew

Как отобразить различный текст в зависимости от времени добавления данных в БД?

Я хотел сделать так, если продукт добавлен сегодня, то отображается «Сегодня», а если вчера, то «ВЧЕРА».
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 3
Adamos
@Adamos
$DATEPOSTED = date("Y m d", strtotime("-1 day"));
Но в результате этого конкретного кода по очевидным причинам всегда будет "Вчера".
Ответ написан
Комментировать
erge
@erge
Примус починяю
для MySQL смотрите функции работы с датами и CASE WHEN
DATETIME приводите к DATE и через CASE WHEN определяете

SELECT
    id,
    dt,
    CASE DATE(dt)
      WHEN CURDATE() THEN 'Сегодня'
      WHEN CURDATE() + INTERVAL -1 DAY THEN 'Вчера'
      ELSE 'Ранее'
    END AS when_day
  FROM items
;


см. пример

для PHP аналогично, смотрите switch case и DateTime для работы объектом, который представляет дату и / или время и методы для манипуляции с ними.

$now = new DateTime();  // текущая дата
  switch ($DATEPOSTED) { // в формате Y m d
    case $now->format("Y m d"):
        echo "сегодня";
        break;
    case ((clone $now)->modify("yesterday"))->format('Y m d'):
        echo "вчера";
        break;
    default:
        echo "ранее";
  }


PS: здесь (clone $now) я клонирую $now, чтобы не изменять основную переменную, если обернуть в функцию то это не обязательно, см. пример ниже.

см. полный пример

UPDATE:
касательно кода в стилистике автора
$DATEPOSTED = strtotime("-1 day");
здесь вчерашний день задается неверно!
во-первых, strtotime - Преобразует текстовое представление даты на английском языке в метку времени Unix
во-вторых, время Unix (timestamp) не совпадает с форматом заданным выше и в $now - Y m d, поэтому сравнивать их некорректно, необходимо приводить дату к одному формату Y m d
$DATEPOSTED = date('Y m d', strtotime(' -1 day'));
далее по условию, если необходимо просто сравнивать с сегодня и что не сегодня то это вчера, то условие вообще банальное:
if ($now == $DATEPOSTED) {
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
У нас есть код "DATEPOSTED" из базы данных
Допустим...

$DATEPOSTED = date("Y m d");
Теперь у нас нету DATEPOSTED из базы данных (
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы