Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML] Zapamiętanie zaznaczonych checkboxów
marcinged
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 29.10.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował ayeo 31.10.2008, 00:33:59
Go to the top of the page
+Quote Post
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował sowiq 31.10.2008, 00:57:49
Go to the top of the page
+Quote Post
ayeo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


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!


--------------------
Go to the top of the page
+Quote Post
marcinged
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 29.10.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Dzięki wielkie. Teraz działa:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:28