За последние 24 часа нас посетили 19046 программистов и 1628 роботов. Сейчас ищут 927 программистов ...

ближайшие дни рождения

Тема в разделе "PHP для новичков", создана пользователем Dmtq, 22 янв 2015.

  1. Dmtq

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

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    покурив гугль не очень разобрался с сортировкой массивов

    есть база. есть date формата 1999-05-06
    читаю:
    Код (Text):
    1.  
    2. $sql="SELECT * FROM persons ORDER BY birth";
    3. //думаю order здесь вообще не нужен
    4. $res=mysql_query($sql);
    5. while ($allpersons=mysql_fetch_array($res))
    6. {
    7. print $allpersons["birth"];
    8. print $allpersons["name"];
    9. }
    как, черт побери, отсечь год и сортировать только месяц и дату (ну и лимитировать количество 5-ю записями)?
    результат должен выглядеть примерно так:
    23.06 - ФИО
    26.07 - ФИО
    Подскажите.
    Спасибо.
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    пойти почитать мануал по функциям мускула. там можно дергать месяц-день. черт побери.
    пойти почитать мануал по синтаксису выборки в мускуле. там можно делать лимит и офсет. черт побери.
     
  3. Dmtq

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

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    спасибо, черт побери )
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    не понял при чем тут массивы :( ты чего гуглил-то, автор? черт тебя побери.

    Добавлено немного спустя:
    подсказка: гуглить "mysql upcoming birthdays"
    тыц
     
  5. Dmtq

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

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    спасибо. помогло.
    вот решение мне подошедшее:
    SELECT name, DATE_FORMAT(birth,'%d %b') AS birth from persons
    WHERE DATE_ADD(birth, INTERVAL YEAR(CURDATE())-YEAR(birth) + IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(birth),1,0) YEAR)
    BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 14 DAY)
    ORDER BY MONTH(birth), DAYOFMONTH(birth)