Возврат дня недели
#1
Отправлено 29 Апрель 2010 - 10:24
Объясню для чего это нужно. Допустим надо напомнить менеджеру о дне рождении клиента. А этот день рождения будет в воскресенье! Соответственно в этот день менеджера не будет на работе... Соответственно хотелось бы получить запрос: если день и месяц равны текущим И день недели равно воскресенью, то напомнить за 2 дня о дне рождении!
#2
Отправлено 29 Апрель 2010 - 10:42
#3
Отправлено 29 Апрель 2010 - 10:46
#4
Отправлено 29 Апрель 2010 - 10:50
#5
Отправлено 29 Апрель 2010 - 11:12
weekday(`Дата Рождения`)='6' and day(`Дата Рождения`)=day('{текущая дата}') + 1 and month(`Дата Рождения`)=month('{текущая дата}') and `Диспонент`='{текущий}' and `Дата Рождения`!='{пустая дата}'
Что не так делаю?
#6
Отправлено 29 Апрель 2010 - 11:24
Вам нужно к текущей дате прибавить 2 дня и затем проверить два условия: 1) число и месяц этого дня совпадает с днем и месяцем дня рождения; 2) этот день - воскресенье
Т.е.:
1) day(`Дата Рождения`) = day('{текущая дата}' + interval 2 day) AND month(`Дата Рождения`) = month('{текущая дата}' + interval 2 day)
2) weekday('{текущая дата}' + interval 2 day) = 6
#7
Отправлено 29 Апрель 2010 - 11:29
day(`Дата Рождения`)=day('{текущая дата}') + 1 and month(`Дата Рождения`)=month('{текущая дата}')
т.к. на границах месяцев у вас получится некорректная дата (32 мая к примеру). Поэтому дни нужно прибавлять через функцию interval N day, как в примере выше
#8
Отправлено 29 Апрель 2010 - 11:32
#9
Отправлено 11 Апрель 2013 - 00:23
Прописал так $line['День недели'] = $weekday(`Дата`);
Выходит ошибка Fatal error: Function name must be a string
Как правильно создать вычисление?
#10 Гость_Roman_*
Отправлено 11 Апрель 2013 - 07:40
$days = array("Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"); $i = date("w", strtotime($line['Дата'])); $line['День недели'] = $day[$i];
#11
Отправлено 11 Апрель 2013 - 22:29
Но почему-то вычисление не происходит. Тип поля установил текст. Установил вычислять при условии Сохранения в таблице и изменения поля Дата. Но поле остается пустым и ничего не происходит. В чем может быть причина? Версия 1.9.7
#12 Гость_Roman_*
Отправлено 12 Апрель 2013 - 07:27
#13
Отправлено 12 Апрель 2013 - 23:20
#14
Отправлено 13 Июнь 2013 - 05:06
$line['Действительна по'] = $line['Дата выдачи']+ 10;Вычисление не работает. Как правильно сделать вычисление?
#15 Гость_Roman_*
Отправлено 13 Июнь 2013 - 07:35
$line['Действительна по'] = date("Y-m-d H:i:s", strtotime($line['Дата выдачи']) + (60*60*24*10));
#16
Отправлено 13 Июнь 2013 - 09:52
f-jeka (13 Июнь 2013 - 05:06) писал:
Суть в том, что у вас не указано, что такое эти "10" - дней, месяцев, лет? А может и часов/минут/секунд, если это дата со временем? В коде выше дата преобразуется в формат timestamp (дата в секундах), затем прибавляется нужный период в секундах, затем timestamp снова преобразуется в дату. Существуют и другие алгоритмы работы с датой, подробности можно посмотреть в руководстве к PHP.
#17
Отправлено 13 Июнь 2013 - 11:22
#18
Отправлено 16 Ноябрь 2015 - 11:11
Roman (11 Апрель 2013 - 07:40) писал:
$days = array("Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"); $i = date("w", strtotime($line['Дата'])); $line['День недели'] = $day[$i];
А как можно сделать условие в уведомлениях что бы к примеру из 'День недели' забиралось значение и проверялось с текущим днем недели. Ну что бы предположим каждый вторник через каждый час напоминание выводилось.
Или я заморачиваюсь? В календаре не нашел таких возможностей
#19
Отправлено 16 Ноябрь 2015 - 11:33
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных