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


Автоматическое изменение поля в предыдущей записи


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

#1 yuriygrad

    Участник

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

Отправлено 30 Июнь 2013 - 10:17

Доброго утра!
Подскажите, пожалуйста, как составить вычисление, чтобы при добавлении новой записи все предыдущие значения менялись на "В работе/Нет", а последнее принимало значение "В работе/Да"
(поле "В работе" , тип поля список: Да, Нет)

Очень прошу, приведите, пожалуйста хотя-бы небольшой кусочек вычисления. (у меня знания оставляют желать лучшего).
Пример во вложении.
Сейчас приходится предыдущий статус в ручную менять на "В работе/нет".

#2 wondertalik

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

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

Отправлено 30 Июнь 2013 - 12:16

Добавляете вычисление с условием изменения поля ID.

$line['В работе'] = "Да";
$sqlQuery = "SELECT `id` FROM ".DATA_TABLE."86 WHERE `status` = 0 AND `id` != ".intval($line['ID'])." AND `f1313` = ".intval($line['Поле связи']);
$result = sql_query($sqlQuery);


while($row = sql_fetch_assoc($result)) {
  $update_data = array();
  $update_data['В работе'] = "Нет";
  update_query($update_data, "История работы", "`id` = ".intval($row['id']));
}

".DATA_TABLE."86 - вместо 86 поставляете айди таблицы "История работы"
$line['Поле связи'] - вместо "Поле связи подставляете Имя поля связи таблицы "История работы"
f1313 - это айди поля связи "История работы", тоже меняете на то что у вас в кб. Вычисление писал с планшета. Перед использованием сделайте бекап.

Сообщение отредактировал wondertalik: 30 Июнь 2013 - 12:16


#3 yuriygrad

    Участник

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

Отправлено 30 Июнь 2013 - 13:11

$line['В работе'] = "Да";
$sqlQuery = "SELECT `id` FROM ".DATA_TABLE."521 WHERE `status` = 0 AND `id` != ".intval($line['ID'])." AND `f4691` = ".intval($line['Контакт']);
$result = sql_query($sqlQuery);

while($row = sql_fetch_assoc($result)) {
  $update_data = array();
  $update_data['В работе'] = "Нет";
  update_query($update_data, "История работы", "`id` = ".intval($row['id']));
}

Спасибо Вам за ответ!
При добавлении новой записи, предыдущее значение не меняется, то есть остается "Да".
При этом если попробовать добавить запись "Нет,
при сохранении значение изменится на "Да"

Часть структуры базы во вложении

#4 wondertalik

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

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

Отправлено 30 Июнь 2013 - 14:50

Позже проверю. Отпишусь.

#5 wondertalik

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

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

Отправлено 30 Июнь 2013 - 18:31

Цитата

Добавляете вычисление с условием изменения поля ID.

Будьте внимательней - условия вычисления вы не то поставили.

#6 yuriygrad

    Участник

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

Отправлено 30 Июнь 2013 - 20:02

Спасибо Вам за терпение! Но к сожалению не получается.
Возможно, что то я не доглядел. Будет интересно узнать работает ли код у Вас.

#7 wondertalik

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

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

Отправлено 30 Июнь 2013 - 22:15

Просмотр сообщенияyuriygrad (30 Июнь 2013 - 20:02) писал:

Спасибо Вам за терпение! Но к сожалению не получается.
Возможно, что то я не доглядел. Будет интересно узнать работает ли код у Вас.
Пардон действительно не отрабатывает. Раньше подобное срабатывало. Насколько я помню сейчас где-то есть флаг "новая запись или нет". Где хранится не помню. А искать на форуме нет времени. Пусть разработчики ответят. После их ответа уже и решим как вам быть.

Господа разработчики - как отслеживать вычислениями новую запись, добавленную в таблицу?

Сообщение отредактировал wondertalik: 30 Июнь 2013 - 23:22


#8 CbCoder

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

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

Отправлено 01 Июль 2013 - 10:36

Цитата

Господа разработчики - как отслеживать вычислениями новую запись, добавленную в таблицу?

Новую запись здесь отслеживать никакой необходимости нет (к тому же она может быстро стать и не новой), нужно отслеживать последнюю запись, по максимальную номеру ID.

$data = data_table("История работы", "status=0 and `Поле связи`='".$line['Поле связи']."' ORDER BY id DESC");
if ($line['ID']==$data['ID']) $line['В работе'] = "Да"; else $line['В работе'] = "Нет";

Вычисление ставим на отображение поля "В работе". Результат видим после обновления страницы.

#9 wondertalik

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

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

Отправлено 01 Июль 2013 - 10:49

Просмотр сообщенияwondertalik (30 Июнь 2013 - 22:15) писал:

Господа разработчики - как отслеживать вычислениями новую запись, добавленную в таблицу?
Спасибо. И тем не менее хотелось бы получить ответ на этот вопрос.

#10 CbCoder

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

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

Отправлено 01 Июль 2013 - 10:57

Насколько помню, за это отвечает поле "r".





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

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