Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Zapamiętanie zaznaczonych checkboxów
Forum PHP.pl > Forum > Przedszkole
marcinged
To jest mój pierwszy post na tym forum zatem najpierw chciałem się przywitać:)

Mam problem z zapamiętywaniem zaznaczonych checkboxów, które są warunkami filtrowania danych.
Jak na razie udało mi się stworzyć coś takiego, ale w tym wypadku zapamiętuje mi tylko jednego (ostatniego wybranego) checkboxa.


  1. <?php
  2. $query = "SELECT kategoria FROM kategorie ";
  3. $wynik = mysql_query($query);
  4. while($row = mysql_fetch_array($wynik))
  5.    {
  6.     if (isset($_POST['s_kat']))
  7.         {
  8.         foreach($_POST['s_kat'] as $tab)
  9.           if($tab==$row[kategoria])
  10.           {
  11.           $checked="checked";
  12.           }  
  13.           else {
  14.           $checked="";}            
  15.         }
  16.     else{
  17.         }
  18.     echo "".$row[kategoria]."";
  19.     }
  20. ?>


Może ma ktoś jakiś pomysł jak to zmodyfikować żeby działało...
ayeo
Witaj!

Kod wygląda ok, myślę, że masz błąd w samym formularzu. Mianowicie klucze s_kat się nadpisują. Możesz dać wydruk POSTa?

Pozdrawiam!


//przenoszę na Przedkszole winksmiley.jpg
sowiq
Przeanalizuj sobie działanie Twojego kodu, np. dla 5 checkbox'ów, gdzie 1. jest zaznaczony.
1) pierwsza pętla, if($tab==$row[kategoria]) - TRUE, $checked="checked";
2) druga pętla, if($tab==$row[kategoria]) - FALSE, $checked=""
3) w pozostałych dzieje się to samo, co w (2)

Twój kod działał dla ostatniego zaznaczonego, bo w ostatniej pętli do $checked była wstawiana wartość "checked".
Teraz to działa tak, że jeśli po zaznaczonym checkbox'ie jest jakiś niezaznaczony - oba zostaną niezaznaczone, bo po wyjściu z pętli zostanie wartość $checked ustawiona w jej ostatnim przebiegu.

Mam nadzieję, że nie namotałem zbytnio smile.gif
ayeo
Witam!

@sowiq ma oczywiście rację! Musisz po prostu przerwać pętle po TRUE.

@marcinged coś się stało z Twoim kodem. Możesz to naprawić?

Pozdrawiam!
marcinged
Mieliście racje wystarczyło przerwać pętle po TRUE.

Dzięki wielkie. Teraz działa:)
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.