1. users (w tym przypadku potrzebna kolumna to jedynie ID)
2. innowacje_levels (w którym znajdują się wszystko "Innowację" i wymagania kiedy będą aktywne dla danego użytkownika (odpowiedni jego lvl, budżet itd), kolumny potrzebne to: ID i Nazwa).
3. innowacje (tutaj znajdują się wszystkie innowację które użytkownik odkrył, lub je odrywa (jest kolumna "czas" która odlicza, czy innowacja już jest dostępna czy jeszcze nad nią "Pracuję", kolumny potrzebne to: id_u (=id users), id_i (=id innowacje_levels), oraz czas..).
Jestem w trakcie tworzenie Panelu Administracyjnego i chcę w łatwy sposób wyświetlać jakie użytkownik posiada Innowację i ewentualnie Dodać mu jakąś lub Zabrać..
Wiec robię sobie pętle i pobieram wszystkie Innowację (z tabeli: innowacje_levels), a następnie wyświetlam je za pomocą: checkbox, jeśli użytkownik posiada jakąś innowację to ten checkbox jest zaznaczony (wyjątkiem jest wtedy gdy jeszcze nad nim pracuję)..
Kod PHP za wyświetlanie..
$_GET['id'] = (int)$_GET['id']; // Zmienna GET użytkownika (edytowanego) $innowacje_user = ''; $innowacje_user_jest = mysql_fetch_array(mysql_query("SELECT id_u, id_i, czas FROM `innowacje` WHERE `id_u` = '".$_GET['id']."' and `id_i` = '".$innowacje_user_edit_r['id']."' LIMIT 1")); if(($innowacje_user_jest == TRUE) AND ($innowacje_user_jest['czas'] == 0)) { $ino_check = 'checked'; } else {$ino_check = '';} $innowacje_user .= '<label class="checkbox"><input type="checkbox" name="inno[]" value="'.$innowacje_user_edit_r['id'].'" '.$ino_check.'>'.$innowacje_user_edit_r['nazwa'].'</label>'; }
(oczywiście cały formularz mam, przesyłam dane za pomocą post itd..)
I teraz przykład:
Załóżmy, że użytkownik posiada 2 Innowację aktywne (id_i= 31 oraz 2 i id = 1 oraz 2) oraz 3 (id_i = 30 i id = 3) w trakcie tworzenie (a wiec czas > 0).
A wiec teraz chciałbym temu użytkownikowi odebrać innowację o id = 1 i id_i = 31, a wiec sobie odznaczam na mojej liście checkbox tą pozycję i klikam button: "Edytuj" i w jaki sposób teraz mam wiedzieć które ID mam usunąć, skoro printuję się jedynie wartości zaznaczone ?
Bo jeśli miało by się jedynie dodawać, a wiec chce sobie dodać tą wartość którą checbox'uję to wtedy foreach i spoko.. ale w drugą stronę nie potrafię tego zrobić..
Myślałem, aby zrobić tak:
Już w wersji edytowania, ponownie zrobić pętlę ze wszystkimi innowacjami wybranego użytkownika:
$innowacje_my_user_edit = mysql_query("SELECT * FROM `innowacje` WHERE `id_u` = '".$_GET['id']."'") or die('Błąd zapytania');
I później sprawdzać:
Jeśli jest checbox zaznaczony + w tabeli istnieje już taka innowacja przypisana temu użytkownikowi to nic nie robić, no chyba, że czas jest większy od 0, to wtedy zaktualizować tą wartość i zmienić czas = 0.
Jeśli checbox jest zaznaczony, ale w tabeli nie istnieje taka innowacja przypisana temu użytkownikowi, to dodać tą innowację mu.
Jeśli w tabli są jakieś pozostałe wartości przypisane temu użytkownikowi, a checbox jest przy nich odznaczony to je usunąć, za wyjątkiem tych których czas jest > 0..
No ale na starcie poległem...
Niby coś takiego robiłem, że chciałem sprawdzić co jest przypisane, a co nie.. ale coś to nie wychodziło mi
$innowacje_my_user_edit = mysql_query("SELECT * FROM `innowacje` WHERE `id_u` = '".$_GET['id']."'") or die('Błąd zapytania'); if($innowacje_my_user_edit_r['id_i'] == $_POST['inno'][''.$key.'']) { echo ' OK <br /> ID_I: '.$innowacje_my_user_edit_r['id_i'].' <br /> KEY: '.$key.' <br /> ID_I_2: '.$_POST['inno'][''.$key.''].' <br /><br />'; } else { echo ' NOT <br /> ID_I: '.$innowacje_my_user_edit_r['id_i'].' <br /> KEY: '.$key.' <br /> ID_I_2: '.$_POST['inno'][''.$key.''].' <br /><br />'; } //echo $key.'<br />'; }
Może wy mi coś pomożecie w tej sprawie ?
Pozdrawiam i z góry bardzo dziękuje za pomoc
