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


Работа с логами

логи

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

#21 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 27 Январь 2016 - 14:00

Просмотр сообщенияCbCoder (25 Январь 2016 - 09:08) писал:

Выглядеть должна так: вначале вам необходимо обратится запросом к соответствующей таблице (связанной или пользователей), с выборкой по id, равным значению поля. Затем получить нужное поле из нее и подставить в ваше выражение.

я теоретически это понимаю, но не пойму как это реализовать. Можете помочь примером обращения с запросом к связанной/пользователей таблицам с выборкой по id

#22 CbCoder

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

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

Отправлено 27 Январь 2016 - 14:22

Полно примеров на форуме. Поищите по слову USERS_TABLE например.

#23 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 28 Февраль 2016 - 11:46

Вот что сделал:

if($event['is_new_line']==0)
{
$user_data = sql_select_array(USERS_TABLE, "id=".$line['Ответств.']);
$user_fio = $user_data['fio'];
$data['Лог'] = 'Пользователь "'.$user['fio'].'" изменил поле "Ответственный" для клиента № '.$line['№'].' '.$line['Клиент'].' с "'.$event['changed'][$user['fio']]['old'].'" на "'.$line[$user['fio']].'"';
$data['Клиент'] = $ID;
insert_query($data, "История клиента");
}

Поля со старым ответственным и новым пустые. Что не так?

#24 GoGPS

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

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 28 Февраль 2016 - 16:36

Могу ошибаться конечно, но вроде кол-во квадратных скобок несколько больше чем надо.

#25 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 29 Февраль 2016 - 01:05

Просмотр сообщенияGoGPS (28 Февраль 2016 - 16:36) писал:

Могу ошибаться конечно, но вроде кол-во квадратных скобок несколько больше чем надо.

верно подметили, в последней части строки исправил на "'.$user_fio.'"';и всё пошло.
Теперь не записывается старое значение, думаю дело в этой конструкции: "'.$event['changed'][1740]['old'].'"

#26 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 29 Февраль 2016 - 09:06

Просмотр сообщенияbottrop (29 Февраль 2016 - 01:05) писал:

верно подметили, в последней части строки исправил на "'.$user_fio.'"';и всё пошло.
Теперь не записывается старое значение, думаю дело в этой конструкции: "'.$event['changed'][1740]['old'].'"

$event['changed'][$user['fio']]['old'].'" на "'.$line[$user['fio']]
Не совсем понятно где вы такое нашли? Начнем с того, что у вас хранится в поле $line['Ответств.'], тип поля пользователь?

Сообщение отредактировал wondertalik: 29 Февраль 2016 - 09:06


#27 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 29 Февраль 2016 - 11:56

Просмотр сообщенияwondertalik (29 Февраль 2016 - 09:06) писал:

Не совсем понятно где вы такое нашли? Начнем с того, что у вас хранится в поле $line['Ответств.'], тип поля пользователь?

Да, тип поля пользователь. Такое не находил, не знаю как правильно прописать старую запись.

Сообщение отредактировал bottrop: 29 Февраль 2016 - 18:18


#28 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 03 Март 2016 - 19:07

ответ ждать или не надеяться уже? хоть что-то ответьте

#29 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 03 Март 2016 - 19:19

Просмотр сообщенияbottrop (03 Март 2016 - 19:07) писал:

ответ ждать или не надеяться уже? хоть что-то ответьте
Забыл ответить, прошу прощение. Код с телефона написал, проверьте

if($event['is_new_line']==0)
{
	//f1130 - например айди поля $line['Ответств.']
	$fieldId = "1130";

	if(isset($event['changed'][$fieldId])) {

		$result = sql_query("SELECT * FROM ".USERS_TABLE." WHERE `id` = ". intval($event['changed'][$fieldId]['old']));
		$oldUser = sql_fetch_assoc($result);

		$result = sql_query("SELECT * FROM ".USERS_TABLE." WHERE `id` = ". intval($event['changed'][$fieldId]['new']));
		$newUser = sql_fetch_assoc($result);

		$data['Лог'] = 'Пользователь "'.$user['fio'].'" изменил поле "Ответственный" для клиента № '.$line['№'].' '.$line['Клиент'].' с "'.$oldUser['fio'].'" на "'.$newUser['fio'].'"';
		$data['Клиент'] = $ID;
		insert_query($data, "История клиента");
	}

}


#30 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 04 Март 2016 - 15:10

Супер! всё работает. Смотрю на вашу конструкцию, сравниваю с тем что пытался сделать я и понимаю как много ещё нужно постигнуть, чтобы дорасти до вас)))

Теперь по образу делаю для поля связи

if($event['is_new_line']==0)
{
//f1960 - например айди поля $line['Источник']
//data510 - таблица где есть поле $line['Источник']
$fieldId = "1960";

if(isset($event['changed'][$fieldId])) {

$result = data_select_field(510, "id", "status=0 AND f8810='",$line['Источник']. intval($event['changed'][$fieldId]['old']));
$oldUser = sql_fetch_assoc($result);

$result = data_select_field(510, "id", "status=0 AND f8810='",$line['Источник']. intval($event['changed'][$fieldId]['new']));
$newUser = sql_fetch_assoc($result);

$data['Лог'] = 'Пользователь "'.$user['fio'].'" изменил поле "Источник" для клиента № '.$line['№'].' '.$line['Клиент'].' с "'.$oldUser['fio'].'" на "'.$newUser['fio'].'"';
$data['Клиент'] = $ID;
insert_query($data, "История клиента");
}

}

Ругается на
$result = data_select_field(510, "id", "status=0 AND f8810='",$line['Источник']. intval($event['changed'][$fieldId]['old']));

Не пинайте сильно. Подскажите что делаю не так.

#31 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Март 2016 - 16:51

Просмотр сообщенияbottrop (04 Март 2016 - 15:10) писал:

Ругается на
$result = data_select_field(510, "id", "status=0 AND f8810='",$line['Источник']. intval($event['changed'][$fieldId]['old']));
В код не вникал, но вроде с кавычками перемудрили. Открывающая есть, закрывающей нет.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#32 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 09 Март 2016 - 20:51

Просмотр сообщенияandibrag (04 Март 2016 - 16:51) писал:

В код не вникал, но вроде с кавычками перемудрили. Открывающая есть, закрывающей нет.
Вот такая ошибка вылетает:

9: $result = data_select_field(510, "id", "status=0 AND f8810='',$line['Источник']. intval($event['changed'][$fieldId]['old']));
10: $oldUser = sql_fetch_assoc($result);

syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Подскажите на что ругается, где копать?


#33 CbCoder

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

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

Отправлено 10 Март 2016 - 09:11

Вам же сказали - закрывающей кавычки нет. В вашем сообщении этого не видно, т.к. две одинарные кавычки выглядят как одна двойная. Но если вставить в редактор кода, сразу все бросается в глаза:

$result = data_select_field(510, "id", "status=0 AND f8810='',$line['Источник']. intval($event['changed'][$fieldId]['old']));
$oldUser = sql_fetch_assoc($result);


#34 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 10 Март 2016 - 10:05

Увидел, исправил.
Теперь другая проблема: поля "Старого источника" и "Нового" пустые. В чем может быть причина?

#35 CbCoder

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

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

Отправлено 11 Март 2016 - 11:46

А где в вашем коде старый и новый источники? Я вижу только просто "Источник".

#36 Dinak

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

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 03 Август 2017 - 12:32

В Версии 2.0.9 не работет??

$event['changed'][f1056]['old'];


#37 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2017 - 17:24

Просмотр сообщенияDinak (03 Август 2017 - 12:32) писал:

В Версии 2.0.9 не работет??

$event['changed'][f1056]['old'];

Здравствуйте!

Описанный момент в версии 2.0.9 работает корректно.

В документации есть пример вычисления, по которому будет действовать отмена изменений
$line['Название'] = $event['changed']['478']['old'];

т.е. тут:
"Название" - название поля, в котором мы не будем менять значение
478 - ID поля из которого мы подтягиваем значение (заметьте, что просто записывается его ID, а не "f*ID*"). Обычно, это ID поля, в которое мы записываем старое значение.





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

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