Страница 1 из 1

Использование FROM_UNIXTIME(field_742, "%y") в Пользовательской функции выдает ошибку

Добавлено: 15 май 2023, 15:14
Lexxor2011
Всем привет!!
пытаюсь сделать пользовательскую функцию:
function doc_num($prefix, $num_field, $date_field, $entity_id)
{
$year = date("y",[$date_field]);
$max_date_query=db_query('select max(field_'.$date_field.') as max_date from app_entity_'.$entity_id.' where FROM_UNIXTIME(field_'.$date_field.', "%y")='.$year);
if($max_date_arr = db_fetch_array($max_date_query)){
$max_date = $max_date_arr['max_date'];
}
....
Выдает ошибку:
Database Error: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
Query: select max(field_742) as max_date from app_entity_49 where FROM_UNIXTIME(field_742, "%y")=
Page: /index.php?module=dashboard/ajax_request&field_id=925&item_id=0
#0 includes/functions/database.php(87): mysqli_query(Object(mysqli), 'select max(fiel...')
#1 includes/classes/custom_php.php(22) : eval()'d code(4): db_query('select max(fiel...')
#2 modules/dashboard/actions/ajax_request.php(109) : eval()'d code(20): doc_num('IEOF-', 430, 742, 49)
#3 modules/dashboard/actions/ajax_request.php(109): eval()
#4 index.php(20): require('/home/users/i/i...')
#5 {main}
Не могу понять, что не так.. Возможно "%y" в FROM_UNIXTIME(field_'.$date_field.', "%y") нужно как-то по другому прописывать.. Но пробовал по всякому и так \"\%y\" и так \'%y\' и \'\%y\', все равно ошибку выдает.

Re: Использование FROM_UNIXTIME(field_742, "%y") в Пользовательской функции выдает ошибку

Добавлено: 15 май 2023, 18:35
Fait

Код: Выделить всё

function doc_num($prefix, $num_field, $date_field, $entity_id)
{
$year = date("y",$date_field);
$max_date_query=db_query('select max(field_'.$date_field.') as max_date from app_entity_'.$entity_id.' where FROM_UNIXTIME(field_'.$date_field.', "%y")='.$year);
if($max_date_arr = db_fetch_array($max_date_query)){
$max_date = $max_date_arr['max_date'];
}
Попробуйте

P.S.: С FROM_UNIXTIME у вас всё в порядке)

Re: Использование FROM_UNIXTIME(field_742, "%y") в Пользовательской функции выдает ошибку

Добавлено: 15 май 2023, 18:40
Fait
А, погодите, в эту функцию придётся передавать 2 переменных с датой.
В одной id поля, а в другой значение даты, которое нужно для $year = date("y",$date_field);

Код: Выделить всё

function doc_num($prefix, $num_field, $date_field, $date_val, $entity_id)
{
$year = date("y",$date_val);
$max_date_query=db_query('select max(field_'.$date_field.') as max_date from app_entity_'.$entity_id.' where FROM_UNIXTIME(field_'.$date_field.', "%y")='.$year);
if($max_date_arr = db_fetch_array($max_date_query)){
$max_date = $max_date_arr['max_date'];
}

Re: Использование FROM_UNIXTIME(field_742, "%y") в Пользовательской функции выдает ошибку

Добавлено: 16 май 2023, 04:57
Lexxor2011
Поскольку дата в поле формы [$date_field] может меняться, мне нужно чтобы в функцию передавалась дата из этого поля при его изменении и на ее основании рассчитывался год, для сравнения затем его с данными в SQL запросе.
Поэтому я использую конструкцию:
$year = date("y",[$date_field]); чтобы передать только номер поля в функцию.
Но как я понял, функция не понимает, что должна обработать данные из поля формы, например если $date_field=742, то из поля [742].
Либо нужно как-то по другому написать это выражение..

Re: Использование FROM_UNIXTIME(field_742, "%y") в Пользовательской функции выдает ошибку

Добавлено: 16 май 2023, 05:32
Lexxor2011
Fait писал(а): 15 май 2023, 18:40 А, погодите, в эту функцию придётся передавать 2 переменных с датой.
В одной id поля, а в другой значение даты, которое нужно для $year = date("y",$date_field);
Похоже, Вы правы, придется передавать дополнительную дату в функцию, как дату, а не как ссылку на поле!
Спасибо!