OK, jestem prawie pewien, że nie jestem pierwszym, który w tym uczestniczy, po prostu nie znam odpowiednich słów, by znaleźć rozwiązanie. rozważyć następujące tabele bazy danych (uproszczone na to pytanie):
database tables http://www.nth-root.nl/public/images/wolf/cat_attr.png
Jak widać na zdjęciu, znajduje się stół kategoria, która posiada kategorie produktów i tabela atrybutu, która posiada różne atrybuty. Na przykład: Kolor (dla odzieży), Pojemność (dla odtwarzaczy mp3) itp.
Trzecia tabela, pośrodku obrazu, łączy atrybuty z kategoriami.
Teraz w backendach mam stronę "Edytuj kategorię" z formularzem do edycji (lub dodania) kategorii. Na tej samej stronie chcę wyświetlić listę list rozwijanych w celu zarządzania atrybutami powiązanymi z bieżącą kategorią produktów.
backend http://www.nth-root.nl/public/images/wolf-commerce/edit_category.png
wykorzystuje jQuery dodawać/usuwać listy rozwijanej.
Problem polega na tym, w jaki sposób manipulować danymi w tabeli category_attribute, używając danych $ _POST formularza.
Leniwy rozwiązaniem byłoby (i tak robiłem to w przeszłości):
1. Usuń wszystkie aktualne wiersze w category_attribute dla danej kategorii
2. Następnie włóż wszystkie wybrane atrybuty category_attribute
Ale to nie jest bardzo wydajne, usuwa i ponownie dodaje wszystkie wiersze, nawet jeśli ktoś zmienia tylko tytuł kategorii.
Więc szukam sposobu, aby zrobić dobry wkładki, aktualizacje i delecji:
1. usunąć wiersze, które nie pojawiają się w $ _POST (listy rozwijanej został usunięty)
2. Aktualizacja wiersze, które zostały zmienione (wybrano inną opcję z rozwijanego menu)
3. Wstaw nowe wiersze (dodano nowe menu rozwijane)
Po prostu nie jestem pewien, jak to zrobić lub gdzie znaleźć dobry przykład. Prawdopodobnie jest to łatwe w przypadku niektórych ajaxów, ale szukam rozwiązania, które jest czysto php, porównując wartości $ _POST z wartościami w bazie danych.
Jeśli ktoś zna dobry artykuł, który wyjaśnia najlepsze (i najbardziej skuteczne) rozwiązanie, proszę dać mi znać, byłbym bardzo wdzięczny.
-edit-
Dołączyłem kilka zdjęć, aby wyjaśnić moje pytanie, ale przepełnienie stosu odmówiło uwzględnienia ich, ponieważ moja reputacja jest zbyt niska, więc mam nadzieję, że moje pytanie jest wystarczająco jasne bez obrazów.
-edit2- Teraz mam dość reputacji, dodałem zdjęcia.
Dzięki z góry,
Nic
część słownictwa, którego mógł brakować w swoim google fu. http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model – ficuscr
Ponadto twoja tabela kategorii jest nazywana złączem/skrzyżowaniem/wiele-do-wielu/tabelą przestawną http://pl.wikipedia.org/wiki/Junction_table –
Wstawiasz nowe rzeczy przez javascript? –