Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UPDATE zaznaczonych pól z użyciem pętli?
Forum PHP.pl > Forum > PHP
szymek001
Witam!
Mam formularz na którym mam x pól w tablicy. Z biegiem czasu ilość wierszy będzie się zwiększać. Po wysłaniu formularza chciałbym żeby zaznaczone pola (checkbox) zostały zaktualizowane. W jaki sposób mógłbym zrobić to w pętli?
Pozdrawiam
franki01
Pokaż co już masz.

Jeżeli pola są tablicą, to musi to tablica uporządkowana, typu:
  1. <input type="checkbox" name="tablica[$zmiennaID]" />


Jeżeli to już załatwisz, pętla:
  1. $checked = array();
  2. foreach((array)$_POST['tablica'] as $k => $v)
  3. {
  4. $checked[] = $k;
  5. }
  6.  
  7. // w tablicy $checked masz zaznaczone pola, możesz teraz np. użyć to przy UPDATE używając implode(), np:
  8. $db->query("UPDATE `tabela` SET `polezaznaczone`=0"); // ustawia wszystkie na odznaczone
  9. if($checked) $db->query("UPDATE `tabela` SET `polezaznaczone`=1 WHERE `id` IN ('".implode("','", $checked)."')"); // ustawia wybrane na zaznaczone, warunek if konieczny, żeby zapytanie nie wyrzciło błędu
SmokAnalog
Ładniej na wartościach niż na kluczach:
  1. <input type="checkbox" name="tablica[]" value="$zmiennaID">

  1. if(isset($_POST['tablica'])) { // sprawdzamy, bo w przypadku braku zaznaczenia jakiegokolwiek checkboxa nie będzie zmiennej $_POST['tablica'] w ogóle
  2. foreach($_POST['tablica'] as $id) { // usunąłem rzutowanie na tablicę, jest niepotrzebne
  3. $checked[] = $id;
  4. }
  5. }
szymek001
ok, ale co jeśli pola mają różne zawartości?
próbowałem z:
  1. <input type="checkbox" name="$id" value="$nowa_wartosc">



na początku próbowałem przesłać tablicę:

Kod
id_kategorii  | stara wartość | nowa wartość
--------------------------------------------
1             | 0             | 1
3             | 0             | 4
4             | 1             | 3
5             | 0             | 0
7             | 0             | 0
9             | 1             | 1

i wtedy zaktualizować tylko te ID których stara wartość różni się od nowej - to chyba jednak jest o wiele trudniejsze..
Jeśli stara wartość jest różna od nowej - wtedy chcę ją zaktualizować zapisując do bazy nową wartość zamiast starej
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.