

Вопрос по вычислениям
#1
Отправлено 07 Август 2015 - 14:35
1. на гарантии
2. гарантия истекла
и есть поле "Дата окончания гарантии".
Как сделать так : когда "Дата окончания гарантии" становится меньше текущей даты, значение поля "состояние гарантии" меняется на значение "гарантия истекла".
Благодарю всех откликнувшихся.
#2
Отправлено 11 Август 2015 - 03:30
// Ищем запись, где дата совпадает с текущей. (269 - это номер таблицы, f4681 - это поле даты, подставьте свои значения)
$res1=data_select_field(261,"`id` as ids", "`status`=0 and left(f4681, 10) ='",$dat,"'");
while ($row = sql_fetch_assoc($res1)) // цикл прохода по полученным записям
{
$ids=$row['ids'];
data_update(269, array('status'=>'0', 'f441'=>'гарантия истекла'), "`id`=$ids" ); // f441 - номер поля "состояние гарантии", подставьте свое значение.
}
И весь этот код надо поместить в Cron (Дополнительно-Настройки Cron), скажем, на 3 часа ночи.
В итоге, в 3 часа ночи все записи будут проверяться на истечение гарантии, а совпадающие по дате буду изменены в части поля "состояние гарантии".
Сообщение отредактировал Tony999: 11 Август 2015 - 03:33
https://info.crm-master.info
#3
Отправлено 13 Август 2015 - 14:45
Tony999 (11 Август 2015 - 03:30) писал:
// Ищем запись, где дата совпадает с текущей. (269 - это номер таблицы, f4681 - это поле даты, подставьте свои значения)
$res1=data_select_field(261,"`id` as ids", "`status`=0 and left(f4681, 10) ='",$dat,"'");
while ($row = sql_fetch_assoc($res1)) // цикл прохода по полученным записям
{
$ids=$row['ids'];
data_update(269, array('status'=>'0', 'f441'=>'гарантия истекла'), "`id`=$ids" ); // f441 - номер поля "состояние гарантии", подставьте свое значение.
}
И весь этот код надо поместить в Cron (Дополнительно-Настройки Cron), скажем, на 3 часа ночи.
В итоге, в 3 часа ночи все записи будут проверяться на истечение гарантии, а совпадающие по дате буду изменены в части поля "состояние гарантии".
Спасибо за ответ ! Но указанный код работает не совсем корректно. При выполнении кода прописывает в другие поля (не содержащие данных) какое-то текстовое значение :-(
В выделенной красным строке что означает число "261" ?
Спасибо !
#4
Отправлено 14 Август 2015 - 00:30
https://info.crm-master.info
#5
Отправлено 25 Август 2015 - 10:28
#6
Отправлено 25 Август 2015 - 10:45
// ищем записи, где дата совпадает с текущей (111 - это номер таблицы, f222 - это поле даты, подставьте свои значения) $result = data_select_field(111, "id", "status=0 and left(f222, 10)='",date("Y-m-d"),"'"); while ($row = sql_fetch_assoc($result)) // цикл прохода по полученным записям { // обновляем запись новым значением data_update(111, array('f333'=>'гарантия истекла'), "id=",$row['id']); // f333 - поле "состояние гарантии", подставьте свое значение. }
#7
Отправлено 25 Август 2015 - 11:04
#8
Отправлено 25 Август 2015 - 11:22
#10
Отправлено 25 Август 2015 - 12:09
т.е. данные в строках не изменяются
в cron пишет
Лог задания "Отслеживание гарантии" на время 25.08.2015 11:42:01.
2015-08-25 11:42:01 - OneTime -
2015-08-25 11:29:01 - OneTime -
#11
Отправлено 25 Август 2015 - 13:28
в строке
$result = data_select_field(111, "id", "status=0 and left(f222, 10)='",date("Y-m-d"),"'");
надо использовать `status`
СПАСИБО ВСЕМ !!!
#12
Отправлено 25 Август 2015 - 13:39
Цитата
$result = data_select_field(111, "id", "status=0 and left(f222, 10)='",date("Y-m-d"),"'");
надо использовать `status`
Это не должно никак влиять. Обрамление обратными апострофами нужно только в случае совпадения имени поля с ключевыми словами MySQL, но здесь такого нет (а если бы и было, это привело бы к фатальной ошибке в логе крона, что не видно по вашему сообщению). Так что причина думаю не в этом, скорее всего "заодно" что-то еще исправили.
#13
Отправлено 25 Август 2015 - 14:18
попробовал без апострофов - ок
предполагаю ,что не хотело работать из-за того,что в списке значение "гарантия истекла" начиналось с заглавной буквы
#14
Отправлено 26 Август 2015 - 10:36
#15
Отправлено 26 Август 2015 - 18:02
$result = data_select_field(111, "id", "status=0 and left(f222, 10)<'",date("Y-m-d",mktime(0,0,0,date('n'),date('j'),date('Y')-1)),"'");
#16
Отправлено 27 Август 2015 - 12:09
Спасибо !
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных