За последние 24 часа нас посетили 22811 программистов и 1273 робота. Сейчас ищут 780 программистов ...

Как преобразовать дату в цикле в нормальный вид?

Тема в разделе "PHP для новичков", создана пользователем Евгений Порощай, 22 янв 2021.

  1. Евгений Порощай

    С нами с:
    19 янв 2021
    Сообщения:
    12
    Симпатии:
    0
    Делаю SELECT из базы и помещаю в переменную: (Дни рождения сотрудников в следующем месяце)

    $result = $mysqli->query('SELECT NAME, LAST_NAME, PERSONAL_BIRTHDAY FROM b_user
    WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));'); // запрос на выборку

    $title .= '<b>Уважаемые Коллеги! </b><br /> <p>В следующем месяце отмечают свой день рождения:</b><br /></p>';
    while($row = $result->fetch_assoc())// получаем все строки в цикле по одной
    {
    $message .= '<p><b>'.$row['NAME']. ' '.$row['LAST_NAME'].'</b>, Дата рождения: '.$row['PERSONAL_BIRTHDAY'].'</p>';// выводим данные
    }

    Данные выводятся в таком формате:

    Денис Федотов, Дата рождения: 1991-02-14

    Дмитрий Силкин, Дата рождения: 1984-02-19

    Роман Гельвельчук, Дата рождения: 1991-02-26

    Александр Сердюков, Дата рождения: 1990-02-17

    Как преобразовать дату в '14 февраля 1991' в этом цикле. Или хотя бы в '14 February 1991'

    Всю голову сломал.


    Если добавляю формат даты непосредственно в SELECT:

    SELECT NAME, LAST_NAME, DATE_FORMAT(PERSONAL_BIRTHDAY, ('%d %M %Y')) FROM b_user
    WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));

    То PHP воспринимает грависы SELECT(а), как разрыв строки и ругается. Замена грависа на двойные кавычки не помогает
     
    #1 Евгений Порощай, 22 янв 2021
    Последнее редактирование: 22 янв 2021
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    google - mysql DATE_FORMAT
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    А что, про экранирование апострофов и кавычек не читаем? Есть специальная комбинация в php:
    PHP:
    1. echo '\'' . "\"";
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    P.S. M – это сокращенное название месяца, F – полное.
     
  6. Евгений Порощай

    С нами с:
    19 янв 2021
    Сообщения:
    12
    Симпатии:
    0
    Можете носом ткунь, в то место, куда его ставить?
     
  7. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    $mysqli->query("SELECT
     
  8. Евгений Порощай

    С нами с:
    19 янв 2021
    Сообщения:
    12
    Симпатии:
    0
    Только с одной стороны? С двух сторон когда поставил двойные - он мне вообще ничего не вывел.
    --- Добавлено ---
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);// включаем сообщения об ошибках
    $mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name); // коннект с сервером бд

    $mysqli->set_charset("utf8mb4"); // задаем кодировку

    $result = $mysqli->query("SELECT NAME, LAST_NAME, DATE_FORMAT(PERSONAL_BIRTHDAY, ('%d %M %Y')) FROM b_user
    WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));"); // запрос на выборку
    $count = mysqli_num_rows($result); // количество строк в запросе
    $title .= '<b>Уважаемые Коллеги! </b><br /> <p>В следующем месяце отмечают свой день рождения:</b><br /></p>';
    while($row = $result->fetch_assoc())// получаем все строки в цикле по одной
    {

    $message .= '<p><b>'.$row['NAME']. ' '.$row['LAST_NAME'].'</b>, Дата рождения: '.$row['PERSONAL_BIRTHDAY'].'</p>';// выводим данные
    }


    обернул SELECT в двойные кавычки - вывод в столбце PERSONAL_BIRTHDAY - пустой
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
  10. Евгений Порощай

    С нами с:
    19 янв 2021
    Сообщения:
    12
    Симпатии:
    0
    Поставил тут:
    $result = $mysqli->query('SELECT NAME, LAST_NAME, DATE_FORMAT(PERSONAL_BIRTHDAY, (\'%d %M %Y\')) FROM b_user
    WHERE MONTH(PERSONAL_BIRTHDAY) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));'); // запрос на выборку


    Вывод такой:

    В следующем месяце отмечают свой день рождения:

    Денис Федотов, Дата рождения:

    Дмитрий Силкин, Дата рождения:

    Роман Гельвельчук, Дата рождения:

    Александр Сердюков, Дата рождения:


    Сама дата не отображается теперь
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Ф-цию представления религия не позволяет использовать? Каждый раз при необходимости изменить формат даты будете лезть в текст запроса? Хотя с показанным кодом не мудрено :(
    --- Добавлено ---
    В запросе используйте либо дефолтный формат даты, либо unixtime. Нефиг в нем что-то форматировать под вывод для пользователя.
     
  12. Евгений Порощай

    С нами с:
    19 янв 2021
    Сообщения:
    12
    Симпатии:
    0
    спасибо что отправили к GOOGLE. не внимательно прочитал. DATE_FORMAT создает новое поле. А я указывал старое. Теперь всё работает. Буду работать над кодом. Спасибо за помощь ВСЕМ! Не судите строго, третий день изучаю PHP самостоятельно.
     
  13. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    К чему цитирование моих слов? Я вас в гугл не посылал, а четко ответил на вопрос
    ;)
    --- Добавлено ---
    Если вы не понимаете даваемые вам ответы, не стесняйтесь переспрашивать. Игнор из-за непонимания – дебилизм. Удачи!
     
    #13 miketomlin, 22 янв 2021
    Последнее редактирование: 22 янв 2021
  14. php8guru

    php8guru Новичок

    С нами с:
    24 янв 2021
    Сообщения:
    14
    Симпатии:
    1
    Почитайте про класс DateTime ему можно скармливать вашу дату и с помощью метода format получать нужную