Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z checkboxami ...
nalej89
post 17.08.2006, 12:00:08
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.01.2006

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


Jest sobie plik z checkboxami:
  1. <form id="form1" name="form1" method="post" action="przejdzdalej.php">
  2. <p>Wybierz klasy, kt&oacute;re w dniu dzisiejszym mają zmieniony plan. </p>
  3. <table width="168" height="95" border="0">
  4. <tr>
  5. <td width="75" height="30"><input type="checkbox" name="klasa[0]" value="checkbox" />
  6. 1a </td>
  7. <td width="83"><input type="checkbox" name="klasa[6]" value="checkbox" />
  8. 2c </td>
  9. </tr>
  10. <tr>
  11. <td height="30"><input type="checkbox" name="klasa[1]" value="checkbox" />
  12. 1b </td>
  13. <td> <input type="checkbox" name="klasa[7]" value="checkbox" />
  14. 2d </td>
  15. </tr>
  16. <tr>
  17. <td height="30"><input type="checkbox" name="klasa[2]" value="checkbox" />
  18. 1c </td>
  19. <td><input type="checkbox" name="klasa[8]" value="checkbox" />
  20. 3a </td>
  21. </tr>
  22. <tr>
  23. <td height="30"><input type="checkbox" name="klasa[3]" value="checkbox" />
  24. 1d </td>
  25. <td><input type="checkbox" name="klasa[9]" value="checkbox" />
  26. 3b </td>
  27. </tr>
  28. <tr>
  29. <td height="30"><input type="checkbox" name="klasa[4]" value="checkbox" />
  30. 2a </td>
  31. <td> <input type="checkbox" name="klasa[10]" value="checkbox" />
  32. 3c </td>
  33. </tr>
  34. <tr>
  35. <td height="30"><input type="checkbox" name="klasa[5]" value="checkbox" />
  36. 2b </td>
  37. <td><input type="checkbox" name="klasa[11]" value="checkbox" />
  38. 3d </td>
  39. </tr>
  40. </table>
  41. <p>
  42. <input name="dalej" type="submit" id="dalej" value="Dalej" />
  43. </p>
  44. </form>


w ktorym jak widac, zaznacza sie klasy, do zmiany planu. Po kliknieciu dalej, chcialbym aby utworzyly sie automatycznie tabele, w ilosci takiej jak liczba zaznaczonych checkboxow, w ktorej znajdowaloby sie po 8 tekst fieldow. Problem w tym ze nie wiem jak sie do tego dziadostwa zabrac, juz na poczatku nie wiem jak sprawdzic ile jset zaznaczonych checkboxow, jeszcze z nimi w php nie obcowalem ... Z góry dziekuje za pomoc i pozdrawiam.
Go to the top of the page
+Quote Post
kossa
post 17.08.2006, 12:12:07
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


Do checkboxa nie przypisuje się value.

Checkbox zwraca on lub nic

  1. <?php
  2. $klasa11=$_POST['klasa[11]'];
  3.  
  4. echo $klasa11;//zwróci on lub nic
  5. ?>


Łukasz


--------------------
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2006, 12:20:33
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Oczywiście, że można przypisac value laugh.gif
Potem w php można ślicznie przez foreach'a się do tego dobrać.
  1. ... name="tablica[]" value="costam">

  1. <?php
  2. foreach ($_POST['tablica'] as $value){
  3. print $value;
  4. }
  5. ?>


Można oczywiście sobie klucze ustawić ręcznie.

Pozdrawiam.

Ten post edytował Cysiaczek 17.08.2006, 12:21:02


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nalej89
post 17.08.2006, 13:25:52
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.01.2006

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


hm to tak samo moge
  1. <?php
  2. if ($klasa[0] = 1)
  3. {
  4. echo "Klasa 1a";
  5. }
  6. ?>

ale jak sprawdzic ile checkboxow zostalo zaznaczonych?
Go to the top of the page
+Quote Post
phpion
post 17.08.2006, 13:30:27
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




1. to co napisales powyzej ci nie zadziala (=, ==)
2. count()
3. Cysiaczek dobrze prawi
4. pozdrawiam

Ad 1. tzn zadziala, zawsze zwroci TRUE smile.gif ale zakladam, ze nie takie bylo twoje zamierzenie...

Ten post edytował phpion.com 17.08.2006, 13:31:47
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2006, 13:32:09
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Po prostu użyj funkcji count($tablica) i juz masz wynik, bo przesyłana sią tylko checkboxy zaznaczone.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nalej89
post 17.08.2006, 13:40:49
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.01.2006

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


phpion.com :

1. zadzialalo dry.gif
2. dziekuje
3. cysiaczkowi tez dziekuje
4. rowniez pozdrawiam

smile.gif

szcholera a dlaczego
  1. <?php
  2. echo (count($klasa));
  3. ?>
z tego zwraca mi caly czas 0?
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2006, 13:46:32
Post #8





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Zapewn dlatego, że ta tablica ma zero elementów. Ewentualnie wcale nie jest tablicą.
Sprawdź poprzez is_array($zmienna), czy jest tablicą.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nalej89
post 17.08.2006, 13:50:49
Post #9





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.01.2006

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


a no nie jest tablica ... sad.gif to jak utworzyc tablice z danymi przekazanym z zaznaczonych checkboxow...? kurde to pewnie takie banalne jest dla was a ja o takie rzeczy pytam... blinksmiley.gif
Go to the top of the page
+Quote Post
phpion
post 17.08.2006, 13:53:13
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




A tak?:
  1. <?php
  2. echo (count($_POST['klasa']));
  3. ?>

i wroce do poprzedniego bledu:
  1. <?php
  2. if ($klasa[0] = 1)
  3. {
  4. echo "Klasa 1a";
  5. }
  6. ?>

to wypisuje "KLasa 1a" no nie? a sprawdz co ci wypisze to:
  1. <?php
  2. if ($klasa[0] = 123)
  3. {
  4. echo "Klasa 1a";
  5. }
  6. ?>

Zaskoczony? Bo nie sprawdzasz czy $klasa[0] ma jakas wartosc tylko przypisujesz jej wartosc co zazwyczaj zwraca TRUE. Juz pomijam fakt $klasa na $_POST['klasa']
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2006, 13:54:02
Post #11





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




A odebrałeś przez tablicę $_POST ?
Nie musisz pisac w źródle klucza w każdym checkboxie
  1. ... name="klasa[1]">

Wystarczy
  1. ... name="klasa[]">


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nalej89
post 17.08.2006, 14:01:03
Post #12





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.01.2006

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


eh... nie.
  1. <?php
  2. echo (count($_POST['klasa']));
  3. ?>
to tez nie dziala ... shit.
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2006, 14:37:35
Post #13





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Zamiast robic klasa[1], klasa[2] itp. robisz tak:
  1. <td width="83"><input type="checkbox" name="klasa[]" value="6" />
  2. <td width="83"><input type="checkbox" name="klasa[]" value="2" />


i wtedy:
  1. <?php
  2. foreach ($_POST['klasa'] as $wartosc){
  3. print $wartosc; // tu dla każdego zaznaczonego checkboxa powinno wypisać zawartośc jego pola value
  4. }
  5. ?>


Oczywiście wyświetlenie to tylko przykład. Możesz wykonac inne operacje, takie jakie potrzebujesz.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nalej89
post 17.08.2006, 14:54:36
Post #14





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.01.2006

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


no to juz cos. dlaczego tylko po wywolaniu
  1. <?php
  2. echo count($klasa);
  3. ?>
i zaznaczeniu np 5 checkboxow wywala mi 55555 po zaznaczeniu 3 wywala 333 itd :]

Ten post edytował nalej89 17.08.2006, 14:55:58
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2006, 15:04:16
Post #15





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Kolego...
A co ma wyświetlić, skoro 3x każesz mu wyświetlać liczenie checkboxów?


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nalej89
post 17.08.2006, 15:07:16
Post #16





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.01.2006

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


o tzn ze jestem na tyle cienki w php ze ten skrypt mnie przerasta sad.gif
  1. <?php
  2. foreach ($_POST['klasa'] as $wartosc)
  3. {}
  4. if (count($klasa)==0)
  5. {
  6. echo "Nie została wybrana żadna klasa!";
  7. ?>
tak zrobilem i dziala. dziwnie wyglada troche blinksmiley.gif

a i jeszcze jak nie zaznacze zadnego checkboxa w poprzednim formularzu to wywala Warning: Invalid argument supplied for foreach() in c:\usr\krasnal\www\kuba\zmiany planu\przejdzdalej.php on line 2 to. Czyli ze w poprzednim ma sprawdzac czy zostalo cos zaznaczone?

Ten post edytował nalej89 17.08.2006, 15:10:41
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2006, 15:08:24
Post #17





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Jesli chcesz je tylk ozliczyc, to nie musisz używac foreach(){}
Wystarczy samo count($_POST['klasa']), czy jakas inna zmienna.

Ten post edytował Cysiaczek 17.08.2006, 15:09:02


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:39