Перейти к содержимому


Ошибка в вычислении


Сообщений в теме: 3

#1 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 16 Апрель 2014 - 12:24

Подскажите, пожалуйста, где ошибка:


if ($line['Дата след.действия'] <= curtime() - interval 1 minute and $line['Дата след.действия'] != '0000-00-00 00:00:00' and $line['Выполнено'] == 'Нет')
{$line['Выполнено'] = 'Просрочено';}
else
{;}


Смысл здесь таков: есть поле "Выполнено" со значениями Да, Нет и Просрочено и поле Дата след. действия. Если Через 1 минуту после того как наступило это время (даты след. действия), поле "Выполнено" не поменялось на "Да", нужно присваивать значение "Просрочено".

Выходит след. ошибка:



1: if ($line['f2791'] <= curtime() - interval 1 minute and $line['f2791'] != '0000-00-00 00:00:00' and $line['f2491'] == 'Нет')
2: {$line['f2491'] = 'Просрочено';}

syntax error, unexpected T_LNUMBER


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Апрель 2014 - 14:08

Во-первых, еще раз повторюсь: конструкция else {;} никакой нагрузки не несет (хотя и ошибки тоже), но лучше не засорять код ей. Просто не вставляйте ее в код.

Во-вторых, ошибка в том что вы зачем-то вставили код на языке SQL в код на языке PHP. Это абсолютно два разных языка. Естественно что у вас вылезла синтаксическая ошибка. Советую почитать документацию по PHP, чтобы хотя бы примерно понимать почему так делать нельзя.

Судя по коду, вы хотели отнять 1 минуту из текущей даты, но взяли для этого фрагмент из кода условия фильтров, хотя там, как уже сказано, применяется язык SQL. Для операций с датами внутри вычислений используете примеры из темы Операции с датами.

#3 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 16 Апрель 2014 - 15:37

Подскажите, пожалуйста, как будет выглядеть мое вычисление на PHP?

Из приведенного примера, к сожалению, ничего не понятно.

Заранее спасибо

Сообщение отредактировал fabrika-r: 16 Апрель 2014 - 15:37


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Апрель 2014 - 15:57

Вот же пример. Заменяете там присвоение на сравнение, strtotime($line['Дата']) (время из поля) на time() (текущее время) и дни на минуту. В итоге получаем:

$line['Дата след.действия'] <= date("Y-m-d H:s:i", time() - 60)

Целиком:

if ($line['Дата след.действия'] <= date("Y-m-d H:s:i", time() - 60) and $line['Дата след.действия'] != '0000-00-00 00:00:00' and $line['Выполнено'] == 'Нет')
{
  $line['Выполнено'] = 'Просрочено';
}






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных