Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Checkbox i wybieranie które wartości które mają zostać w bazie mysql, lub zostaną usunięte, ew. dodane nowe.
Forum PHP.pl > Forum > Przedszkole
Giluś
Hej, mam podstawowe 3 tabele w MySQL:

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..

  1. $_GET['id'] = (int)$_GET['id']; // Zmienna GET użytkownika (edytowanego)
  2.  
  3. $innowacje_user_edit = mysql_query("SELECT * FROM `innowacje_levels`") or die('Błąd zapytania');
  4. $innowacje_user = '';
  5. while($innowacje_user_edit_r = mysql_fetch_assoc($innowacje_user_edit)) {
  6. $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"));
  7. if(($innowacje_user_jest == TRUE) AND ($innowacje_user_jest['czas'] == 0)) {
  8. $ino_check = 'checked';
  9. }
  10. else {$ino_check = '';}
  11.  
  12.  
  13. $innowacje_user .= '<label class="checkbox"><input type="checkbox" name="inno[]" value="'.$innowacje_user_edit_r['id'].'" '.$ino_check.'>'.$innowacje_user_edit_r['nazwa'].'</label>';
  14. }

(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:

  1. $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
  1. $innowacje_my_user_edit = mysql_query("SELECT * FROM `innowacje` WHERE `id_u` = '".$_GET['id']."'") or die('Błąd zapytania');
  2. while($innowacje_my_user_edit_r = mysql_fetch_assoc($innowacje_my_user_edit)) {
  3. $key = array_search($innowacje_my_user_edit_r['id_i'], $_POST['inno']);
  4.  
  5. if($innowacje_my_user_edit_r['id_i'] == $_POST['inno'][''.$key.'']) {
  6. echo ' OK <br />
  7. ID_I: '.$innowacje_my_user_edit_r['id_i'].' <br />
  8. KEY: '.$key.' <br />
  9. ID_I_2: '.$_POST['inno'][''.$key.''].' <br /><br />';
  10. }
  11. else {
  12. echo ' NOT <br />
  13. ID_I: '.$innowacje_my_user_edit_r['id_i'].' <br />
  14. KEY: '.$key.' <br />
  15. ID_I_2: '.$_POST['inno'][''.$key.''].' <br /><br />';
  16. }
  17.  
  18.  
  19. //echo $key.'<br />';
  20. }




Może wy mi coś pomożecie w tej sprawie ?



Pozdrawiam i z góry bardzo dziękuje za pomoc smile.gif
zidek
Nie wiem czy dobrze zrozumiałem, więc spróbuję to zobrazować na małym przykładzie i powiedz mi czy tak ma to działać:

Użytkownik ma jakieś opcje:
zmiana_hasła = tak
zmiana_nicka = nie
dodaj_avatar = nie
ukryj_email = tak

I teraz chcesz mu zmienić dodaj_avatar na 'tak' i ukryj_email na 'nie', więc zaznaczasz checkboxa przy dodaj_avatar, a usuwasz przy ukryj_email, potem wysyłasz formularz, tak?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.