Lokalizacja - jest to liczba. a tabela w której jest to umieszczone to "text" i wartość wygląda np tak 1,3,6,12,33,4 - czyli oddzielone przecinkiem.
Aby pokazać jak najepiej problem przedstawię na początku funkcję do dodawania lokalizacji:
<?php function add_location($array){ $id_site = $array['site']; $location = $array['location']; $sql =" UPDATE ".DB_PREFIX."site SET id_location=IF(id_location='','$location', CONCAT(id_location,',$location')) WHERE id='$id_site' AND NOT FIND_IN_SET('$location', id_location)"; $res =& $this->_db->query($sql); } ?>
Zapytanie sprawdza czy dany rekord istnieje, jeżeli nie istnieje to dodaje po przecinku.
A teraz potrzebuję funkcję która będzie usuwać daną lokalizację z bazy danych.
Aktualnie mam to rozwiązane na zasadzie:
<?php function remove_location($array){ $id_site = $array['site']; $location = $array['location']; $sql ="SELECT id_location FROM ".DB_PREFIX."site WHERE id = '$id_site' "; $res =& $this->_db->query($sql); $row = $res->fetchRow(MDB2_FETCHMODE_ASSOC); foreach ($id_array as $id){ $id_sql .= $id.","; } $sql =" UPDATE ".DB_PREFIX."site SET id_location='$id_sql' WHERE id='$id_site'"; $res =& $this->_db->query($sql); } ?>
Czyli najpierw pobieram dane na temat lokalizacji następnie obrabiam dane i dopiero robię update.
Czy jest możliwość jakoś to poprawić tzn na takim samym rozwiązaniu jak przy dodawaniu aby nie używać funkcji php a wszystko zrobić po stronie mysql ?