Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z checkboxami ...
Forum PHP.pl > Forum > Przedszkole
nalej89
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.
kossa
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
Cysiaczek
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.
nalej89
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?
phpion
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...
Cysiaczek
Po prostu użyj funkcji count($tablica) i juz masz wynik, bo przesyłana sią tylko checkboxy zaznaczone.

Pozdrawiam.
nalej89
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?
Cysiaczek
Zapewn dlatego, że ta tablica ma zero elementów. Ewentualnie wcale nie jest tablicą.
Sprawdź poprzez is_array($zmienna), czy jest tablicą.
nalej89
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
phpion
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']
Cysiaczek
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[]">
nalej89
eh... nie.
  1. <?php
  2. echo (count($_POST['klasa']));
  3. ?>
to tez nie dziala ... shit.
Cysiaczek
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.
nalej89
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 :]
Cysiaczek
Kolego...
A co ma wyświetlić, skoro 3x każesz mu wyświetlać liczenie checkboxów?
nalej89
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?
Cysiaczek
Jesli chcesz je tylk ozliczyc, to nie musisz używac foreach(){}
Wystarczy samo count($_POST['klasa']), czy jakas inna zmienna.
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.