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


Вычисление update_query


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

#1 TelecomMedia

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

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

Отправлено 02 Февраль 2016 - 12:47

Есть вычисление на сохранение записи:

if ($line['По заявке']['ID'] == '')
{

if ($line['Телефон'])
{ // если есть телефон, ищем по телефону
    $result = data_select_field(931, "id", "status=0 AND f22141='",$line['Телефон'],"'");
    $row = sql_fetch_assoc($result); // если найдено, заполняем массив row
}


//$line['По заявке'] = $row['id'];
$upd_data['По заявке'] = $row['id'];
update_query($upd_data, "Задачи", "id=$ID");
}


$line['Кому'] = $line['По заявке']['Менеджер ОП'];
$line['Контактное лицо'] = $line['По заявке']['Контактное лицо'];
$line['E-mail'] = $line['По заявке']['E-mail'];
$line['Статус сайта'] = $line['По заявке']['Статус'];

Требуется в рамках этого же вычисления подтянуть значения в поля "Кому" / "Контактное лицо" / "E-mail" / "Статус сайта", для этого делаю напрямую запрос в бд обновляя поле "По заявке", но вычисление не срабатывает. Оно срабатывает только при повторном редактировании записи.

#2 CbCoder

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

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

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

Все правильно, оно и не сработает сразу, т.к. в $line['По заявке'] у вас пусто. Прямой запрос тут никак не поможет, т.к. массив $line все равно остается старым. Для оптимального решения лучше разбить вычисления на 2: в первом оставить заполнение $line['По заявке']:

if ($line['По заявке']['ID'] == '')
{
    if ($line['Телефон'])
    { // если есть телефон, ищем по телефону
	    $result = data_select_field(931, "id", "status=0 AND f22141='",$line['Телефон'],"'");
	    $row = sql_fetch_assoc($result); // если найдено, заполняем массив row
    }
    $line['По заявке'] = $row['id'];
}

а во втором, настроенном на изменение поля По заявке, остальное:

$line['Кому'] = $line['По заявке']['Менеджер ОП'];
$line['Контактное лицо'] = $line['По заявке']['Контактное лицо'];
$line['E-mail'] = $line['По заявке']['E-mail'];
$line['Статус сайта'] = $line['По заявке']['Статус'];


#3 TelecomMedia

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

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

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

Спасибо! Точно, что то я сам не догадался

#4 Александр Пономарев

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

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

Отправлено 02 Февраль 2016 - 20:25

А разве для поля типа ссылка правильно работает такое выражение при пустой ссылке?

$line['По заявке']['ID'] == ''
Мне казалось, что это поле в БД числовое и его надо проверять на равенство нулю
$line['По заявке'] == 0

#5 TelecomMedia

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

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

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

Это поле типа связь, такая конструкция работает корректно.

$line['По заявке']





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

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