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


Публикации zakoss

12 публикаций создано zakoss (учитываются публикации только с 29-Март 23)


#27530 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 14 Март 2015 - 06:18 in Как это сделать

Просмотр сообщенияmaksn (13 Март 2015 - 21:57) писал:

Да не об этом речь. Я просто не люблю, когда меня считают за идиота и не понимаю, зачем нужен был весь этот спектакль.
Помогал я вам ровно потому, что видел как долго и безрезультатно решается задача. А вовсе не "за деньги"

А заказов у меня, слава богу, хватает

Мне уже надоели эти идиотские обвинения. Я так и не понял, о каком спектакле Вы здесь всем рассказываете? Расскажите нам, я вот никак не пойму... Если по оплате так Вам предлагали оплату сразу же, в чем же дело? Думаю, после таких непонятных и необоснованных подозрений заказов может и поубавится. Вам пора задуматься над своим психическим состоянием.



#27525 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 13 Март 2015 - 19:53 in Как это сделать

Я отказался от полей связи - поменял их на текст и всё заработало, а в error.log ничего кроме этого нет - проверял сотню раз. Это проблемы хостера, я им уже написал. У меня на хостинге стоит ещё одна КБ, младше версией - вот она работает без ошибок с теми же полями:


				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 27510-->
<div class=

#27510 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 13 Март 2015 - 17:18 in Как это сделать

Что действительно "заморочно" так это игнорирование службой поддержки явные косяки и сырость программы, которая кстати оплачена официально. На все запросы один ответ: на форум...

По curl я же написал - это крайний метод. Пытался всячески.Но исчезла ошибка с выкидыванием из КБ, стали добавляться поля...
Кто поможет написать вычисление и исправить ошибку разработчиков КБ? За плату, соответственно.



#27508 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 13 Март 2015 - 15:50 in Как это сделать

Просмотр сообщенияmaksn (13 Март 2015 - 13:27) писал:

Алексей, а зачем вы функцию file_get_contents_curl() перенесли в functions1.php?
Я же дал Вам ее во внешнем PHP. Если уж хотите ее использовать внутри КБ, поместите ее ТОЛЬКО ОДИН РАЗ в functions_custom.php. Она должна лежать там и ТОЛЬКО ТАМ. И соответственно не будет дважды объявляться. По крайней мере не будет ошибки "Cannot redeclare file_get_contents_curl()..."

А ошибки хранятся на сервере в error.log, а не в access.log, фрагмент которого вы приводите на скрине постом выше


Здравствуйте, я ничего никуда не помещал. Так как у меня не работает ни одно вычисление на таблице Семёрки я сделал как Вы мне советовали, но это крайний метод и он тоже выводит ошибки, точно так же создаются пустые записи. Я просто вместо такого вычисления:


if(($line['M-1']['raw'] !== 0) && ($line['M-2']['raw'] !== 0) && ($line['M-3']['raw'] !== 0) && ($line['M-4']['raw'] !== 0) && ($line['M-5']['raw'] !== 0) && ($line['M-6']['raw'] !== 0) && ($line['M-7']['raw'] !== 0)) {
   //Присваиваемые поля - типичны поля связи с той же таблицей...
   //Создаём первую новую матрицу-семёрку и пишем в неё данные левого крыла старой матрицы
	$matr_l['ID создателя']['raw'] = $line['М-2']['raw'];//присваиваем ID создателя матрицы
	$matr_l['М-1']['raw'] = $line['М-2']['raw'];//2-е место ставим на первое
	$matr_l['М-2']['raw'] = $line['М-4']['raw'];//4-е место ставим на второе
	$matr_l['М-3']['raw'] = $line['М-5']['raw'];//5-е место ставим на третье
	$matr_l['Тип программы']['raw'] = $line['Тип программы']['raw'];//присваиваем ID Программы
	$matr_l['ID'] = insert_query($matr_l, "Семёрки");
	//Создаём вторую новую матрицу-семёрку и пишем в неё данные правого крыла старой матрицы
	$matr_r['ID создателя'] = $line['М-3']['ID'];//присваиваем ID создателя матрицы
	$matr_r['М-1'] = $line['М-3']['Логин'];//3-е место ставим на первое
	$matr_r['М-2'] = $line['М-6']['Логин'];//6-е место ставим на второе
	$matr_r['М-3'] = $line['М-7']['Логин'];//7-е место ставим на третье
	$matr_r['Тип программы'] = $line['Тип программы']['Сокращение'];//присваиваем ID Программы
	$matr_r['ID'] = insert_query($matr_r, "Семёрки");
}


поставил такое:


function file_get_contents_curl($url,$query_str,$ispost=false) {
$referer = $_SERVER['HTTP_REFERER'];
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($ispost===true)
{
  curl_setopt($ch, CURLOPT_POST, true);
  if(is_array($query_str))
  {
	foreach($query_str as $key=>$value)
	 $post_fields .= $key.'='.$value.'&';
  }
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
}
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
if (!defined('NEED_URL'))
  define('NEED_URL', 'http://epochaquarius.com/mlm/modules/public/matrix_handler_cb.php');
if(($line['M-1']['raw'] !== 0) && ($line['M-2']['raw'] !== 0) && ($line['M-3']['raw'] !== 0) && ($line['M-4']['raw'] !== 0) && ($line['M-5']['raw'] !== 0) && ($line['M-6']['raw'] !== 0) && ($line['M-7']['raw'] !== 0))
{
  $matrix_id = $line['ID'];
  $query_str = Array('matrix_id'=>$matrix_id,'matrix_shared'=>'1');
  $ispost=true;
  $url = NEED_URL;
  $answer = file_get_contents_curl($url,$query_str,$ispost);
  // echo 'answer='.$answer; exit;
}


Передаю данные из таблицы на handler_cb.php и обрабатываю так:


/***
**** Действие обновления значений полей в базе - вход в семёрку матрицы
***/
if ($_REQUEST['matrix_shared'] == 1) {
	$matrix_referer = $_SERVER['HTTP_REFERER']; // ПО этому признаку можно смотреть откуда пришел запрос, чтобы исключить постинг с других ресурсов.
	$matrix_id = $_REQUEST['matrix_id'];
	/******** Найдем нужную запись по Login ************/
	$matrix_balance = 0; // Инициализируем переменную
	//Выборка из базы
	$sqlQuery = "SELECT `f4570`,`f4580`,`f4590`,`f4620`,`f4630`,`f4640`,`f4650`,`f4720` FROM `" . DATA_TABLE . "320` WHERE `id`='" . $matrix_id . "' AND `status`=0 LIMIT 1";
	$result = sql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR);
	while ($row = sql_fetch_assoc($result)) {
		// Создаём массив части значений строки
		$data = Array();
                $data['f4550'] = $row['f4580'];
		$data['f4570'] = $row['f4580'];
                $data['f4580'] = $row['f4620'];
		$data['f4590'] = $row['f4630'];
                $data['f4720'] = $row['f4720'];
		// Добавляем в таблицу новую запись значениями из массива
		data_insert(320, EVENTS_ENABLE, $data);
		// Создаём массив части значений строки
		$data = Array();
                $data['f4550'] = $row['f4590'];
		$data['f4570'] = $row['f4590'];
                $data['f4580'] = $row['f4640'];
		$data['f4590'] = $row['f4650'];
                $data['f4720'] = $row['f4720'];
		// Добавляем в таблицу новую запись значениями из массива
		data_insert(320, EVENTS_ENABLE, $data);
                // Обновляем поля строки значениями из массива
                $data = Array();
                $data['status'] = 1;
		data_update(320, EVENTS_ENABLE, $data, "`id`='", $matrix_id, "'");
	}
	echo 'DONE'; // Возвращаем сайту сообщение, что все в порядке
}


Хотя бы начали создаваться записи, но ошибка всё равно появляется в виде пустых полей - ничего не понимаю. Наверное это глюк КБ.
В службу поддержки обратился давно, но они и не чешутся. Сами же знаете. Я уже не знаю как достучаться до разработчиков, если они свой же форум не могут привести в порядок, это как у плохого хозяина... Здесь кроме CbCoder из их команды никто не работает на пользу КБ и клиентов - потребителей данного продукта. Поэтому и применил этот метод.
Он более успешен, но всё же ошибка в самой КБ приводит к тем же последствиям. Что мне делать?



#27502 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 13 Март 2015 - 10:33 in Как это сделать

Версия - Для установки на веб-сервере с php. Как только вычисление срабатывает, сервер выдаёт страницу с ошибкой Error occurred: 500 internal server error после возврата на страницу входа в КБ оказывается что администратор разлогинен и требуется новый вход в КБ:


				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 27495-->
<div class=

#27495 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 12 Март 2015 - 18:40 in Как это сделать

Оставил уже просто так:

$matr_l['Тип программы'] = $line['Тип программы']['raw'];
$matr_l['ID'] = insert_query($matr_l, "Семёрки");

всё равно та же ошибка...



#27490 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 12 Март 2015 - 16:34 in Как это сделать

Прям беда какая то, ничего не выходит. Сделал уже так, убрал из вычисления всё, отключил от таблицы другие вычисления.
всё равно вываливает ошибку и кучу пустых записей создаёт:


if(($line['M-1']['raw'] !== 0) && ($line['M-2']['raw'] !== 0) && ($line['M-3']['raw'] !== 0) && ($line['M-4']['raw'] !== 0) && ($line['M-5']['raw'] !== 0) && ($line['M-6']['raw'] !== 0) && ($line['M-7']['raw'] !== 0)) {

   // Присваиваемые поля - типичны поля связи с той же таблицей...

   // Создаём первую новую матрицу-семёрку и пишем в неё данные левого крыла старой матрицы
   // $matr_l['ID создателя'] = $line['М-2']['ID'];//присваиваем ID создателя матрицы
   // $matr_l['М-1']['raw'] = $line['М-2']['raw'];//2-е место ставим на первое
   // $matr_l['М-2']['raw'] = $line['М-4']['raw'];//4-е место ставим на второе
   // $matr_l['М-3']['raw'] = $line['М-5']['raw'];//5-е место ставим на третье
    $matr_l['Тип программы']['raw'] = $line['Тип программы']['raw'];//присваиваем ID Программы
    $matr_l['ID'] = insert_query($matr_l, "Семёрки");

  // Создаём вторую новую матрицу-семёрку и пишем в неё данные правого крыла старой матрицы
  // $matr_r['ID создателя'] = $line['М-3']['ID'];//присваиваем ID создателя матрицы
  // $matr_r['М-1']['raw'] = $line['М-3']['raw'];//3-е место ставим на первое
  // $matr_r['М-2']['raw'] = $line['М-6']['raw'];//6-е место ставим на второе
  // $matr_r['М-3']['raw'] = $line['М-7']['raw'];//7-е место ставим на третье
  // $matr_r['Тип программы']['raw'] = $line['Тип программы']['raw'];//присваиваем ID Программы
  // $matr_r['ID'] = insert_query($matr_r, "Семёрки");

  // data_delete(320, EVENTS_ENABLE, "`id`='", $line['ID'], "'");
}



но так ошибки нет и таблица удаляется:



if(($line['M-1']['raw'] !== 0) && ($line['M-2']['raw'] !== 0) && ($line['M-3']['raw'] !== 0) && ($line['M-4']['raw'] !== 0) && ($line['M-5']['raw'] !== 0) && ($line['M-6']['raw'] !== 0) && ($line['M-7']['raw'] !== 0)) {


   // Присваиваемые поля - типичны поля связи с той же таблицей...

   // Создаём первую новую матрицу-семёрку и пишем в неё данные левого крыла старой матрицы
   // $matr_l['ID создателя'] = $line['М-2']['ID'];//присваиваем ID создателя матрицы
   // $matr_l['М-1']['raw'] = $line['М-2']['raw'];//2-е место ставим на первое
   // $matr_l['М-2']['raw'] = $line['М-4']['raw'];//4-е место ставим на второе
   // $matr_l['М-3']['raw'] = $line['М-5']['raw'];//5-е место ставим на третье
   // $matr_l['Тип программы']['raw'] = $line['Тип программы']['raw'];//присваиваем ID Программы
   // $matr_l['ID'] = insert_query($matr_l, "Семёрки");

   // Создаём вторую новую матрицу-семёрку и пишем в неё данные правого крыла старой матрицы
   // $matr_r['ID создателя'] = $line['М-3']['ID'];//присваиваем ID создателя матрицы
   // $matr_r['М-1']['raw'] = $line['М-3']['raw'];//3-е место ставим на первое
   // $matr_r['М-2']['raw'] = $line['М-6']['raw'];//6-е место ставим на второе
   // $matr_r['М-3']['raw'] = $line['М-7']['raw'];//7-е место ставим на третье
   // $matr_r['Тип программы']['raw'] = $line['Тип программы']['raw'];//присваиваем ID Программы
   // $matr_r['ID'] = insert_query($matr_r, "Семёрки");

    data_delete(320, EVENTS_ENABLE, "`id`='", $line['ID'], "'");
}


По условию изменения поля М-7 нужно создать две новые записи в той же таблице Семёрки и поделить между ними связанные поля с М-2 по М-7, а затем удалить родительскую запись, но НИЧЕГО не получается. Пробовал уже другую таблицу создавать, всё та же ошибка - ERROR 500 и куча пустых полей...
CbCoder, может знаете почему, подскажите чтоб не маялся. Мне очень нужно.

Таблица Семёрки:


				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 27471-->
<div class=

#27471 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 11 Март 2015 - 19:03 in Как это сделать

Спасибо Вам, помогли очень.

CbCoder, понимаю что тысячу раз отвечали, но всё же спрошу:
1. возвращает ли data_insert ID созданной записи или только у insert_query такая особенность?
2. Можно ли с помощью data_insert или insert_query создать записи в родительской таблице, допустим так:


if(($line['M-1']['raw'] !== 0) && ($line['M-2']['raw'] !== 0) && ($line['M-3']['raw'] !== 0) && ($line['M-4']['raw'] !== 0) && ($line['M-5']['raw'] !== 0) && ($line['M-6']['raw'] !== 0) && ($line['M-7']['raw'] !== 0)) {
   //Создаём первую новую матрицу-семёрку и пишем в неё данные левого крыла старой матрицы
    $matr_l['f4550'] = $line['М-2'];//присваиваем 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'] = insert_query($matr_l, "Семёрки");
    //Создаём вторую новую матрицу-семёрку и пишем в неё данные правого крыла старой матрицы
    $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'] = insert_query($matr_r, "Семёрки");

    //удаляем поделившуюся матрицу таблицы Семёрки
    data_delete(320, EVENTS_ENABLE, "`id`='", $line['ID'], "'");
}



Замечу, что по второму вопросу данный код выдаёт ошибку ERROR 500 в браузере, после срабатывания в КБ



#27469 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 11 Март 2015 - 16:00 in Как это сделать

Значит это можно сделать без предварительной выборки из связанной таблицы? Просто заменив ID на raw? Например так:



if (($line['П-1']['raw'] !== 0) && ($line['П-2']['raw'] !== 0) && ($line['П-3']['raw'] !== 0) && ($line['П-4']['raw'] !== 0) && ($line['П-5']['raw'] !== 0) && ($line['П-6']['raw'] !== 0) && ($line['П-7']['raw'] !== 0)) {

			  // здесь будет исполняемый код
}




#27463 Как описать в вычислении, что поле связи не пустое

Отправлено от zakoss в 11 Март 2015 - 12:22 in Как это сделать

Допустим есть поля связи П-1, П-2, П-3, П-4, П-5, П-6, П-7 в таблице Т-1, эти поля связаны с таблицей Т-2 по её полю Логин.

Мне нужно сделать так: пока поле П-7 не содержит ID записи таблицы Т-2 (равно 0) вычисление не срабатывает, когда все эти поля по прядку - от 1-го до 7-го заполнятся ID записей таблицы Т-2, соответственно П-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)) {



	 // здесь будет исполняемый код
}

Вопросы:

1. Я правильно делаю, ставя условие "только когда все заполнены" или можно было ограничиться одним сравнением, т.к. заполнение всё равно будет идти по порядку?:

if ($line['П-7']['ID'] !== 0) {

	 // здесь будет исполняемый код
}

2. Нужен ли запрет рекурсивного вызова на этом вычислении???
3. Как правильно присвоить значение одного поля связи другому полю связи, при условии, что они связаны с полями одной таблицы.

Спасибо!..



#27460 Не обновляется поле связи

Отправлено от zakoss в 10 Март 2015 - 07:54 in Как это сделать

Странно, но вычисление выше прекрасно работает с внешнего обработчика. Уверен, очередной глюк КБ.
У нас купленная лицензия, но служба поддержки (а есть ли она вообще?) систематически отмахивается от решения вопроса, поэтому надежда только на 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 Не обновляется поле связи

Отправлено от zakoss в 04 Март 2015 - 19:34 in Как это сделать

Есть таблица Участники и таблица Места. В таблице Участники есть поле связи П-1 с таблицей Места > поле Сокращения
Нужно с помощью данных одного участника таблицы обновлять поле связи П-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']);
	    }
}

Наверняка я ге то ошибся. Помогите пожалуйста настроить правильно...