У нас купленная лицензия, но служба поддержки (а есть ли она вообще?) систематически отмахивается от решения вопроса, поэтому надежда только на CbCoder и форумчан...
Продолжаю тему с типичной проблемой - необоснованно не хочет работать вычисление. Подробнее:
В таблице Семёрки имею набор полей: М1, М-2, М-3, М-4, М-5, М-6, М-7 (поля связи) по событию заполнения только всех должно срабатывать вычисление (вычисление на изменение, поле связь, висит на поле М-7), создающее в этой же таблице две записи с указанными полями, обновляющее записи в таблице Участники по указанным полям, а затем удаляющее эту (исходную) запись.
//Как только последнее поле М-7 будет заполнено, срабатывает вычисление... if(($line['М-1']['ID'] !== 0) && ($line['М-2']['ID'] !== 0) && ($line['М-3']['ID'] !== 0) && ($line['М-4']['ID'] !== 0) && ($line['М-5']['ID'] !== 0) && ($line['М-6']['ID'] !== 0) && ($line['М-7']['ID'] !== 0)) { //Присваиваемые поля - типичны поля связи с той же таблицей... //Создаём первую новую матрицу-семёрку в той же таблице и пишем в неё данные левого крыла старой матрицы $data = Array(); $matr_l['f4550'] = $line['М-2'];//полем связи по логину присваиваем ID создателя матрицы полю связи по ID... $matr_l['f4570'] = $line['М-2'];//2-е место ставим на первое $matr_l['f4580'] = $line['М-4'];//4-е место ставим на второе $matr_l['f4590'] = $line['М-5'];//5-е место ставим на третье $matr_l['f4720'] = $line['Тип программы'];//присваиваем ID Программы $matr_l['ID'] = data_insert(320, EVENTS_ENABLE, $matr_l); //Создаём вторую новую матрицу-семёрку в той же таблице и пишем в неё данные правого крыла старой матрицы $data = Array(); $matr_r['f4550'] = $line['М-3'];//присваиваем ID создателя матрицы $matr_r['f4570'] = $line['М-3'];//3-е место ставим на первое $matr_r['f4580'] = $line['М-6'];//6-е место ставим на второе $matr_r['f4590'] = $line['М-7'];//7-е место ставим на третье $matr_r['f4720'] = $line['Тип программы'];//присваиваем ID Программы $matr_r['ID'] = data_insert(320, EVENTS_ENABLE, $matr_r); //Переписываем поля М-?, IDТ-?, IDC-? Участников левого крыла //Первый Участник $data = Array(); //Обновляем поля М-? и IDС-? в записи 1-го Участника if($line['Тип программы'] == 1) { $data['f4730'] = 1; $data['f4930'] = 0; $data['f5020'] = $matr_l['ID']; } elseif($line['Тип программы'] == 2) { $data['f4740'] = 1; $data['f4940'] = 0; $data['f5030'] = $matr_l['ID']; } elseif($line['Тип программы'] == 3) { $data['f4750'] = 1; $data['f4950'] = 0; $data['f5040'] = $matr_l['ID']; } elseif($line['Тип программы'] == 4) { $data['f4760'] = 1; $data['f4960'] = 0; $data['f5050'] = $matr_l['ID']; } elseif($line['Тип программы'] == 5) { $data['f4770'] = 1; $data['f4970'] = 0; $data['f5060'] = $matr_l['ID']; } elseif($line['Тип программы'] == 6) { $data['f4780'] = 1; $data['f5070'] = $matr_l['ID']; } elseif($line['Тип программы'] == 7) { $data['f4790'] = 1; $data['f5080'] = $matr_l['ID']; } data_update(42, EVENTS_ENABLE, $data, "`id`='", $line['М-2'], "'"); //Для краткости урежем остальной, повторяющийся для других участников, код... //******************************************************************************************************* //******************************************************************************************************* //******************************************************************************************************* //удаляем поделившуюся матрицу таблицы Семёрки data_delete(320, EVENTS_ENABLE, "`id`='", $line['ID'], "'"); }
но на выходе получаю ошибку и создаётся очень много пустых записей в Таблице Семёрки. Рекурсивный вызов отменял - не помогает.
#27389 Не обновляется поле связи
Отправлено от Как это сделать
в 04 Март 2015 - 19:34 inНужно с помощью данных одного участника таблицы обновлять поле связи П-1 другого участника этой же таблицы.
Пытаюсь реализовать это следующим образом:
Через условие (когда поле БТ-1 = 1), по значению поля Логин спонсора одного участника нахожу в таблице запись по логину с таким же значением и значению поля БТ-1 = 1 (это поле f4320),
формирую массив полей этой записи. Затем, исходя из двух условий пытаюсь обновить поле П-1 исходного участника.
Данное вычисление висит на поле БТ-1 и настроено на изменение значения этого поля.
Ничего не выходит, такое ощущение что вычисление вовсе не срабатывает...
if($line['БТ-1'] == 1) { //условие выбора места в трёхместке //Проверяем, где стоит спонсор //Выбираем в таблице массив полей записи спонсора $sponsor = data_select_array(42, "status=0 AND f4320=1 AND f1470='",$line['Логин спонсора'],"'"); $row_sp = sql_fetch_assoc($sponsor); //копируем его данные в массив //в каком месте матрицы стоит спонсор if($row_sp['П-1']['ID'] == 1) {//если спонсор стоит тут //обновляем связанное поле новым значением data_update(42, array('f4730' => 2), "id=", $line['ID']); } if($row_sp['П-1']['ID'] == 2) {//а если тут //то обновляем связанное поле data_update(42, array('f4730' => 3), "id=", $line['ID']); } }
Наверняка я ге то ошибся. Помогите пожалуйста настроить правильно...