mam kod, który spełnia swoje zadanie, jednak nie jestem pewien, czy oby na pewno jest do końca poprawny i optymalny.
W bazie danych w tabeli z użytkownikami mam tekstowe pole user_ulubione, zawierające informacje o ulubionych grach użytkownika (id łączone kropką np. 1.5.21.32). Operacja kodu sprowadza się do usunięcia jednej z gry, dla testu przyjąłem id usera 1 i id gry 1.
Najpierw pobieram wartości z bazy, następnie tworzę z nich tablicę dzieląc wartości znakiem kropki.
Później szukam w tabeli określonej wartości (id gry), w wyniku otrzymuję klucz.
Usuwam z tabeli wartość o podanym kluczu.
Sortuję tablicę wg. wartości.
Tworzę zmienną typu string, do której wrzucam pierwszy element tablicy a zarazem usuwam go z niej.
W pętli while doklejam do zmiennej pozostałe wartości i znaki kropek je oddzielające.
Uaktualniam pole w bazie danych.
<?php $user_id = 1; $gra_id = 1; $ulubione = mysql_fetch_array(mysql_query("SELECT user_ulubione FROM ".DB_USERS." WHERE user_id = '".$user_id."'")); $nowa .= '.'.$krok; } ?>
Czy dobrze to zrobiłem, czy da się lepiej? Zależy mi na wydajności, sposób zapisywania informacji o ulubionych w bazie musi pozostać taki jaki jest.