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


Удаление в связанной таблице


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

#1 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 10 Июль 2014 - 10:20

Удаление в две стороны:
1. Есть список задач, в нем указаны поля связи к разным типам задач (аукцион, запрос котировок и др).
http://take.ms/VwGLI
При переносе в удаленные - удалять связанную запись, при восстановлении-восстанаваливать из соответствующих таблиц
if ($event['type']=='restore')
if ($event['type']=='delete')


2. При удалении отдельной записи в связанной таблице-удалять из списка задач (связь по полю номер)

МОжет кто сталкивался?((

#2 CbCoder

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

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

Отправлено 10 Июль 2014 - 13:43

Вроде простейшая задача на обновление полей связанной таблицы. В чем сложность то возникает?

#3 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 10 Июль 2014 - 13:45

if  ($line['Аукцион']['raw']!=0)
{
$line['Аукцион']['Статус записи']=2;
}
Получилось)Ступила)

Сообщение отредактировал Dinara: 10 Июль 2014 - 13:51


#4 CbCoder

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

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

Отправлено 10 Июль 2014 - 13:53

Ну вот видите, ничего сложного ;) Умеете же

#5 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 10 Июль 2014 - 16:00

а в обратку вот так неправильно получается?
$update_data['f18971'] = 2;
data_update(1071,EVENTS_ENABLE,$update_data, "f19031='",$line['ID'],"'");


#6 CbCoder

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

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

Отправлено 10 Июль 2014 - 16:58

А что такое "$update_data['f18971'] = 2" ? Вам же просто обнулить надо поле связи, как я понял, причем тут цифра 2 ?

#7 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

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

нет,тоже чтобы удалилась связанная строка

#8 CbCoder

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

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

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

Еще придерусь немного:

"f19031='",$line['ID'],"'"

Если в условие запроса помещаете числовое значение (а $line['ID'] - это число естественно), то никаких кавычек быть не должно:

"f19031=",$line['ID']

Ошибки это не вызовет, но неверно с точки зрения логики и безопасности. Кавычки ставятся только для текстовых значений.

#9 CbCoder

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

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

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

Просмотр сообщенияDinara (10 Июль 2014 - 17:00) писал:

нет,тоже чтобы удалилась связанная строка

Какая связанная строка? Это же код на событие удаления этой связанной строки, как я понял, т.е. она уже удалена вами, а не в коде. И код должен при этом самом удалении просто убрать ссылку на нее из таблицы на скриншоте, т.е. обнулить поле связи. Я все верно понял, или что-то не так?

#10 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

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

Таблица1=список всех видов таблиц(таблица2,таблица3 и другие). Когда удаляем из таблицы1 какую-либо строку-удаляется эта строка из связанной таблицы (таблицы3, к примеру).
А вот как сделать чтобы когда удалили из таблицы2 строку-чтобы она удалилась из списка таблицы1, вот..

#11 CbCoder

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

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

Отправлено 11 Июль 2014 - 09:15

И все-таки: что значит "чтобы она удалилась из списка таблицы1"? У вас же в таблице 1, как я понял из скриншота, стоят ссылки на строки в таблице 2? Тогда задача состоит в том, чтобы эту ссылку убрать, т.е. сделать поле связи пустым. Это и реализуется занесением в поле связи значения "0". А у вас почему то заносится "2" (причем не понятно, в какое поле, должно быть поле связи, т.е. f19031 получается). В остальном код верный.

#12 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 14 Июль 2014 - 10:07

Смотрите, когда создается в таблице аукциона запись-копируется минимум ее информации в список задач, или например создается запись в таблице открытые конкурсы. Когда удаляем строку в таблице аукциона-эта запись из списка должна удалиться,не только ссылка на аукцион,но и сама строка..Так понятнее?

#13 CbCoder

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

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

Отправлено 14 Июль 2014 - 10:45

Да, это теперь понятно. Но по прежнему непонятно, что это за поле такое "f18971", в которое вы заносите 2? Если вы хотели отправить запись в корзину, то менять надо поле Статус записи, а его внутреннее имя - status:

$update_data['status'] = 2;
data_update(1071, EVENTS_ENABLE, $update_data, "f19031=",$line['ID']);


#14 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 14 Июль 2014 - 17:57

точно,status просто..спасибо!





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

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