За последние 24 часа нас посетил 16421 программист и 1558 роботов. Сейчас ищут 1833 программиста ...

Вывод за текущий месяц

Тема в разделе "PHP и базы данных", создана пользователем DJTIMOHA, 11 июл 2017.

  1. DJTIMOHA

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

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    В базе есть такие даты:
    14.04.2017
    04.06.2017
    11.06.2017
    10.07.2017
    Мне нужно вывести только за текущий месяц даты из базы.
    Подскажите пожалуйста как реализовать в php 5.3
     
  2. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А тип данных в базе CHAR?
    Если так то:
    PHP:
    1. $d = date('m.Y');
    2. $query = "SELECT * FROM table WHERE xxx LIKE '%$d'"
    Что-то типа того
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Отредактировать даты, записав их в формате, более подходящем для хранения дат.
    И после этого чудесным образом заработают выборки.
     
  4. DJTIMOHA

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

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Дело в том что нужно будет тогда переписывать весь движок, а он весит только на пхп фалах 230mb. Как то бы не очень горю желанием переписывать километры кодов.
    --- Добавлено ---
    Спасибо большое! Помогло.
    У меня ещё вопрос, как мне из списка в той же базе удалить записи прошлого месяца?
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не может быть
     
  6. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @DJTIMOHA, тут по аналогии, только с датами посложнее
    PHP:
    1. $d = date('m.Y', mktime(0, 0, 0, 1, date('n') - 1, date('Y')));
    2. $query = "DELETE FROM table WHERE xxx LIKE '%$d'"
    @igordata, Может этот движок создавал злостный ненавистник западной формы записи даты, несмотря на то что дата в базе хранится в секундах. А размер такой большой из-за того что эти даты приходится обрабатывать.
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я охотно поверю, что там всяких модулей сторонних хоть на 500 мегабайт, плюс фреймворк на двести.

    но чтобы "движок"... нет.
    там код, который работает с датами в бд (туда и обратно) скорее всего встречается в двадцати, даже хоть в ста местах, и его исправить не великое дело. Реально займёт ну час-два работы.

    Другой вопрос, если не охота лезть а вдруг ай боюс боюс. Типа, я лучше окостылю сейчас, а потом пусть другие ебутся. Вот в это я верю.
    --- Добавлено ---
    форма и способ хранения - это разные вещи. Если она хранится именно так, значит она хранится в текстовом поле. А если её хранить в поле правильного типа, то она сможет извлекаться в любой форме.
     
  8. DJTIMOHA

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

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Не удаляет прошлый месяц
     
    #8 DJTIMOHA, 12 июл 2017
    Последнее редактирование: 12 июл 2017
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =)

    слушай, ты хочешь засунуть пятку в анус, чтобы не обкакаться на бегу.
    и кажется, что это сработает, но нет.
     
    #9 igordata, 12 июл 2017
    Последнее редактирование: 12 июл 2017
  10. DJTIMOHA

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

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Плохо вы общаетесь!!!!!
     
  11. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    :D Этож западная манера писать даты - я перепутал месяц и число:
    PHP:
    1. $d = date('m.Y', mktime(0, 0, 0, date('n') - 1, 1, date('Y')));
    А что за ошибка то выпадает?
    Получается удаляло январские записи)
     
  12. DJTIMOHA

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

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Не удаляет так же.
    А код date('n') не должен быть date('m') случайно?
     
  13. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    m - это числовое представление месяца с ведущим 0
    n - это просто числовое представление месяца
    именно 'n'
    Хорошо бы логи SQL посмотреть. Или логи веб-сервера.
     
  14. DJTIMOHA

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

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Все получилось, УРААА! Спасибо вам огромное! Дай Вам бог здоровья и удачи побольше!
     
    Maputo нравится это.