Создал новый тип материала "Персоналии". Там присутствует поле "День рождения". Есть какой-либо способ выдавать в блоке список этих самых персоналий, чей день рождения приходится +/- 2дня от текущего?
$sql="SELECT id, bday, DATE_FORMAT(bday,\"%e\") as bdd, DATE_FORMAT(bday,\"%c\") as bdm, sname, fname, mname "; $sql.="FROM {personal_table} WHERE (nowork='0') "; $sql.="AND ( DATE_FORMAT(bday,\"%c\")*100+DATE_FORMAT(bday,\"%e\") >= '$start_date' ) "; $sql.="AND ( DATE_FORMAT(bday,\"%c\")*100+DATE_FORMAT(bday,\"%e\") < '$end_date' ) "; $sql.="ORDER BY DATE_FORMAT(bday,\"%c\")*100+DATE_FORMAT(bday,\"%e\") ";
Правда дальше надо ручками прописать в блоке, то что хочется видеть.
У меня этот кривой код работает уже много лет, почти с момента начала изучения мной sql.
Да... походу дела проще написать скрипт на perl-е, который будет готовить текст (по крону) и его уже вставлять в блок
Вывод как делать? SQL запрос я знаю какой надо написать (я его выше указал). Как данные по этому sql получить и вопрос как вывести эти данные? //PHP не знаю.
Хотя,... вытаскивание данных по крону кажется наилучшим вариантом (незачем каждый раз эти данные тянуть...). А скрипт писать тогда мне все равно в Перле, так что наверное так и поступлю.
Комментарии
views + cck?
там есть возможность делать поле типа date, а во views с помощью ключевого слова now задать промежуток.
Не получается В фильтре добавил:
Day: менее now+2day
Day: больше now
Выводит все...
И походу задать нужное мне условие не получится. Как там два фильтра объединить?
Мне бы получить данные по запросу
SELECT vid, nid, field_fio_value, field_bithday_0_value, DAYOFYEAR( now( ) ) - DAYOFYEAR( `field_bithday_0_value` ) afd
FROM content_type_person
WHERE DAYOFYEAR( now( ) ) - DAYOFYEAR( `field_bithday_0_value` ) <3
AND DAYOFYEAR( now( ) ) - DAYOFYEAR( `field_bithday_0_value` ) > -3
ORDER BY afd DESC
LIMIT 0 , 30
и вывести... Но вот php не знаю....
есть такой модуль даже специальный) - Birthday - http://drupal.org/project/birthdays
Он тока с профилями работает. Ставил, с моими Персоналиями ни в какую работать не захотел.
Использовать аргументы. Получать дату, записывать, прибавлять 3600*24*2, записывать в другую переменную. Добавлять в фильтр.
Еще бы знать куда что писать в этих аргументах. Там же ничего не понятно.
Может это спасет
$end_date=date("nd",mktime(0, 0, 0, date("m") , date("d")+7, date("Y")));
$sql="SELECT id, bday, DATE_FORMAT(bday,\"%e\") as bdd, DATE_FORMAT(bday,\"%c\") as bdm, sname, fname, mname ";
$sql.="FROM {personal_table} WHERE (nowork='0') ";
$sql.="AND ( DATE_FORMAT(bday,\"%c\")*100+DATE_FORMAT(bday,\"%e\") >= '$start_date' ) ";
$sql.="AND ( DATE_FORMAT(bday,\"%c\")*100+DATE_FORMAT(bday,\"%e\") < '$end_date' ) ";
$sql.="ORDER BY DATE_FORMAT(bday,\"%c\")*100+DATE_FORMAT(bday,\"%e\") ";
Правда дальше надо ручками прописать в блоке, то что хочется видеть.
У меня этот кривой код работает уже много лет, почти с момента начала изучения мной sql.
Да... походу дела проще написать скрипт на perl-е, который будет готовить текст (по крону) и его уже вставлять в блок
Вывод как делать? SQL запрос я знаю какой надо написать (я его выше указал). Как данные по этому sql получить и вопрос как вывести эти данные? //PHP не знаю.
Хотя,... вытаскивание данных по крону кажется наилучшим вариантом (незачем каждый раз эти данные тянуть...). А скрипт писать тогда мне все равно в Перле, так что наверное так и поступлю.