$datefrom = date("Y", strtotime($line['Дата (от)'])); //Скрипт запускать только на сохранение записи, тк. этот код только проверяет заполненность номера, и если поле заполнено - не срабатывает if (!$line['Номер']) { $sqlQuery = "SELECT max(`f11250`) AS maxNUM FROM `".DATA_TABLE."730` WHERE (`status`'2' AND YEAR(`f8630`)= $datefrom)"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "" . $sqlQuery . "", E_USER_ERROR); $row = mysql_fetch_assoc($result); $line['Номер'] = $row['maxNUM'] + 1; }
По сути, просто заменено сравнение года с текущим, вместо этого берется значение года, указанное в строке "Дата (от)".С префиксами и постфиксами я представляю как быть, тут проблем не должно возникнуть.Заткнулся я вот на чем: в случае смены даты, данный код не сработает, т.к. поле "Номер" уже заполнено.Если, допустим, отключить условие if (!$line['Номер']), и сделать вычисление только при изменении поля, то всё будет более-менее сносно, можно сделать сравнение с текущим максимальным значением номера, и если оно не изменилось - то не изменять значение номер.Однако, если произойдет изменение года, то sqlQuery отработает найдет максимум не по вновь введенному году поля "Дата (от)", а по тому значению поля, которое было до него, т.к. запись в таблицу ещё не сделана. Я догадываюсь, что надо сначала записать новое значение даты, но как это сделать правильно - не представляю, и поэтому прошу помощи.