Имеются следующие поля у элемента:
$arFields = Array(
"ACTIVE" => $ACTIVE,
"COURSE_ID" => $COURSE_ID,
"NAME" => $NAME,
"CODE" => $CODE,
"SORT" => $SORT,
"USER_ID" => $USER_ID,
"ACTIVE_FROM" => $ACTIVE_FROM,
"ACTIVE_TO" => $ACTIVE_TO,
"USER_ID" => $USER_ID
);
Таким образом я вывожу пользователей и заношу их в массив $str_USER_ID, который я как понимаю передается при нажатие на кнопку применить в массив $arFields в качестве переменной $USER_ID
if($ID > 0)
{
$employee = new CEmployee;
$rsEmployee = $employee->GetList(array(),array("CLASS_ID" => $ID));
while ($arEmployee = $rsEmployee->Fetch())
{
$str_USER_ID[] = array (
"CLASS_ID" => $arEmployee["CLASS_ID"],
"USER_ID" => $arEmployee["USER_ID"],
"LOGIN" => $arEmployee["LOGIN"],
"NAME" => $arEmployee["NAME"],
"LAST_NAME" => $arEmployee["LAST_NAME"]
);
}
for($i = 0; $i<count($str_USER_ID); $i++)
{
if(array_key_exists("USER_ID",$str_USER_ID[$i]) )
$sUser[$i] = "[<a href=\"user_edit.php?ID=".$str_USER_ID[$i]["USER_ID"]."&lang=".LANG."\">".$str_USER_ID[$i]["USER_ID"]."</a>] (".$str_USER_ID[$i]["LOGIN"]." ) ".$arUser[$i]["str_USER_ID"]." ".$str_USER_ID[$i]["LAST_NAME"];
echo "<div>".FindUserID("USER_$i", (array_key_exists("USER_ID",$str_USER_ID[$i]) ? $str_USER_ID[$i]["USER_ID"]: "" ) , $sUser[$i], "classTabControl", "3", "", " ... ", "", "" ) ."</div>";
}
}
Функции которые производят удаление пользователей из таблицы b_learn_employee , если пользователи отсутствуют в массиве $str_USER_ID:
передает массив $arFields["USER_ID"] функции CEmployee::Update
function Update($ID, $arFields)
{
global $DB;
$ID = intval($ID);
if ($ID < 1) return false;
if (is_set($arFields, "ACTIVE" ) && $arFields["ACTIVE"] != "Y" )
$arFields["ACTIVE"]="N";
if (self::CheckFields($arFields, $ID))
{
unset($arFields["ID"]) ;
unset($arFields["COURSE_ID"]) ;
if(!CEmployee::Update($ID, $arFields["USER_ID"]) )
return false;
echo "<pre>";
return print_r($arFields);
//unset($arFields["USER_ID"]) ;
//$strUpdate = $DB->PrepareUpdate("b_learn_class", $arFields);
//$strSql = "UPDATE b_learn_class SET ".$strUpdate." WHERE ID = ".$ID;
//$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
return true;
}
return false;
}
Функция которая должна удалять пользователей, которых нет в массиве, но вместо этого она удаляет всех пользователей из таблицы принадлежащих классу, вызывая эту функцию на тестовой страницу и передавая ей массив она отрабатывает все как надо, скорей всего значения не передаются или массив или не в той структуре передается массив:
function Update($ID, $arFields)
{
global $DB;
$ID = intval($ID);
if ($ID < 1) return false;
for($i = 0; $i < count($arFields); $i++)
{
$arSql.= " AND USER_ID != ".$arFields[$i]["USER_ID"];
}
$strSql = "DELETE FROM b_learn_employee WHERE CLASS_ID = ".$ID." ".$arSql;
if (!$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__))
return false;
return true;
return false;
}
помогите понять как из файла редактирования элемента передаются значения к функция класса
$arFields = Array(
"ACTIVE" => $ACTIVE,
"COURSE_ID" => $COURSE_ID,
"NAME" => $NAME,
"CODE" => $CODE,
"SORT" => $SORT,
"USER_ID" => $USER_ID,
"ACTIVE_FROM" => $ACTIVE_FROM,
"ACTIVE_TO" => $ACTIVE_TO,
"USER_ID" => $USER_ID
);
Таким образом я вывожу пользователей и заношу их в массив $str_USER_ID, который я как понимаю передается при нажатие на кнопку применить в массив $arFields в качестве переменной $USER_ID
if($ID > 0)
{
$employee = new CEmployee;
$rsEmployee = $employee->GetList(array(),array("CLASS_ID" => $ID));
while ($arEmployee = $rsEmployee->Fetch())
{
$str_USER_ID[] = array (
"CLASS_ID" => $arEmployee["CLASS_ID"],
"USER_ID" => $arEmployee["USER_ID"],
"LOGIN" => $arEmployee["LOGIN"],
"NAME" => $arEmployee["NAME"],
"LAST_NAME" => $arEmployee["LAST_NAME"]
);
}
for($i = 0; $i<count($str_USER_ID); $i++)
{
if(array_key_exists("USER_ID",$str_USER_ID[$i]) )
$sUser[$i] = "[<a href=\"user_edit.php?ID=".$str_USER_ID[$i]["USER_ID"]."&lang=".LANG."\">".$str_USER_ID[$i]["USER_ID"]."</a>] (".$str_USER_ID[$i]["LOGIN"]." ) ".$arUser[$i]["str_USER_ID"]." ".$str_USER_ID[$i]["LAST_NAME"];
echo "<div>".FindUserID("USER_$i", (array_key_exists("USER_ID",$str_USER_ID[$i]) ? $str_USER_ID[$i]["USER_ID"]: "" ) , $sUser[$i], "classTabControl", "3", "", " ... ", "", "" ) ."</div>";
}
}
Функции которые производят удаление пользователей из таблицы b_learn_employee , если пользователи отсутствуют в массиве $str_USER_ID:
передает массив $arFields["USER_ID"] функции CEmployee::Update
function Update($ID, $arFields)
{
global $DB;
$ID = intval($ID);
if ($ID < 1) return false;
if (is_set($arFields, "ACTIVE" ) && $arFields["ACTIVE"] != "Y" )
$arFields["ACTIVE"]="N";
if (self::CheckFields($arFields, $ID))
{
unset($arFields["ID"]) ;
unset($arFields["COURSE_ID"]) ;
if(!CEmployee::Update($ID, $arFields["USER_ID"]) )
return false;
echo "<pre>";
return print_r($arFields);
//unset($arFields["USER_ID"]) ;
//$strUpdate = $DB->PrepareUpdate("b_learn_class", $arFields);
//$strSql = "UPDATE b_learn_class SET ".$strUpdate." WHERE ID = ".$ID;
//$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
return true;
}
return false;
}
Функция которая должна удалять пользователей, которых нет в массиве, но вместо этого она удаляет всех пользователей из таблицы принадлежащих классу, вызывая эту функцию на тестовой страницу и передавая ей массив она отрабатывает все как надо, скорей всего значения не передаются или массив или не в той структуре передается массив:
function Update($ID, $arFields)
{
global $DB;
$ID = intval($ID);
if ($ID < 1) return false;
for($i = 0; $i < count($arFields); $i++)
{
$arSql.= " AND USER_ID != ".$arFields[$i]["USER_ID"];
}
$strSql = "DELETE FROM b_learn_employee WHERE CLASS_ID = ".$ID." ".$arSql;
if (!$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__))
return false;
return true;
return false;
}
помогите понять как из файла редактирования элемента передаются значения к функция класса