Napisałem sobie funkcję do sortowania obiektów w tabeli.
Sęk w tym, że gdy dodaję rozróżnienie na typ obiektu to zapytanie update zamienia mi wszystkie pozycje na 0.
$query = "UPDATE `survey_objects` SET `position` = CASE `id_object`"; foreach($sort_list as $key => $value){ foreach($value as $key2 => $value2){ $query .= " WHEN " . $value2 . " AND `id_object_type` = ".$key." THEN " . $key2; } } $query .= " END WHERE `id_survey` = :id_survey";
Powyższa funkcja zwraca takie oto zapytanie:
UPDATE `survey_objects` SET `position` = CASE `id_object` WHEN 7 AND `id_object_type` = 5 THEN 1 WHEN 8 AND `id_object_type` = 5 THEN 2 WHEN 9 AND `id_object_type` = 5 THEN 3 WHEN 6 AND `id_object_type` = 5 THEN 4 END WHERE `id_survey` = 1
Czy ten zapis jest poprawny?
Jeżeli nie to gdzie leży problem i jak mogę go rozwiązać?